rrdb : first working code
This commit is contained in:
		
							parent
							
								
									2a2f7c735f
								
							
						
					
					
						commit
						4447ed460e
					
				
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -12,7 +12,9 @@ doc/*.idx
 | 
			
		||||
doc/*.ilg
 | 
			
		||||
doc/*.ind
 | 
			
		||||
 | 
			
		||||
*/foo.dat
 | 
			
		||||
*/*.dat
 | 
			
		||||
 | 
			
		||||
rrdb/*.png
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,10 +2,11 @@
 | 
			
		||||
 | 
			
		||||
## blabla commercial
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_The problem that [Gnocchi](https://gnocchi.xyz/) solves is the storage and indexing of
 | 
			
		||||
time series data and resources at a large scale.
 | 
			
		||||
_The problem that [Gnocchi](https://gnocchi.xyz/) solves is the storage and
 | 
			
		||||
indexing of time series data and resources at a large scale.
 | 
			
		||||
This is useful in modern cloud platforms which are not only huge
 | 
			
		||||
but also are dynamic and potentially multi-tenant.
 | 
			
		||||
Gnocchi takes all of that into account._
 | 
			
		||||
 | 
			
		||||
Bref, il faut essayer ce truc. Un de ces jours...
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,10 @@ purpose-built platform that InfluxData provides._
 | 
			
		||||
 | 
			
		||||
# On essaye ?
 | 
			
		||||
 | 
			
		||||
Ok, c'est parti. On va écrire un injecteur en Perl. Puis enchainer sur
 | 
			
		||||
Ok, c'est parti. Premier souci, la documentation est assez légère.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
On va tenter d'écrire un injecteur en Perl. Puis enchainer sur
 | 
			
		||||
une visualisation dynamique des données en lancer de rayon.
 | 
			
		||||
Projet ambitieux ? Non, la suite sera bien pire.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -6,11 +6,25 @@ loin d'être évidente pour les newbies.
 | 
			
		||||
 | 
			
		||||
La lecture de la manpage `rrdtutorial` est indispensable.
 | 
			
		||||
 | 
			
		||||
https://oss.oetiker.ch/rrdtool/tut/rrd-beginners.en.html
 | 
			
		||||
 | 
			
		||||
## premier exemple
 | 
			
		||||
 | 
			
		||||
Un petit peu de code fabriqué à la rache.
 | 
			
		||||
 | 
			
		||||
- `create.sh`
 | 
			
		||||
- `update.sh`
 | 
			
		||||
- `getvalues.sh`
 | 
			
		||||
 | 
			
		||||
Suffisant pour comprendre le principe général, mais très flou
 | 
			
		||||
sur les détails.
 | 
			
		||||
 | 
			
		||||
## et après ?
 | 
			
		||||
 | 
			
		||||
Trouver une interface en C pour faciliter la vie des gens.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								rrdb/commun.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								rrdb/commun.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
#
 | 
			
		||||
#	commun definitions for rrdb tests
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
export RRDB=$HOME/TMP/tests.rrd
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								rrdb/create.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								rrdb/create.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
#	creating the test database
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
source ./commun.sh
 | 
			
		||||
 | 
			
		||||
starttime=$(date +'%s')
 | 
			
		||||
 | 
			
		||||
echo creating $RRDB at ${starttime}s since epoch
 | 
			
		||||
 | 
			
		||||
rrdtool	create $RRDB			\
 | 
			
		||||
	--start $starttime		\
 | 
			
		||||
	--step 60			\
 | 
			
		||||
	DS:value:GAUGE:150:0:10		\
 | 
			
		||||
	RRA:AVERAGE:0.5:1:60
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
							
								
								
									
										19
									
								
								rrdb/getvalues.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								rrdb/getvalues.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,19 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
source ./commun.sh
 | 
			
		||||
 | 
			
		||||
rrdtool fetch $RRDB LAST			|
 | 
			
		||||
tr -d ':'					|
 | 
			
		||||
awk	'
 | 
			
		||||
	(!/nan/ && NF==2) { print $1, $2 }
 | 
			
		||||
	' 					\
 | 
			
		||||
			> toto
 | 
			
		||||
 | 
			
		||||
gnuplot << __EOC__
 | 
			
		||||
set term png size 800,600
 | 
			
		||||
set output "graphe.png"
 | 
			
		||||
plot "toto" with lines
 | 
			
		||||
__EOC__
 | 
			
		||||
 | 
			
		||||
rm toto
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								rrdb/insert.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								rrdb/insert.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
source ./commun.sh
 | 
			
		||||
 | 
			
		||||
ctime=$(date +'%s')
 | 
			
		||||
value=$(cut -d ' ' -f 1 /proc/loadavg)
 | 
			
		||||
 | 
			
		||||
# write value to a file
 | 
			
		||||
echo ${ctime} ${value} | tee -a bar.dat
 | 
			
		||||
 | 
			
		||||
# inject value in the rrdb file 
 | 
			
		||||
rrdtool	update $RRDB ${ctime}:${value}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user