Reference:
rrdtool create meteo.rrd --start=1404406800 --step=900 DS:T:GAUGE:1900:-10:40 DS:P:GAUGE:1900:990:1040 DS:H:GAUGE:1900:0:100 DS:DP:GAUGE:1900:0:20 RRA:MAX:0.5:1:40000
En este ejemplo se crea la base de datos meteo.rrd
que cada 15 minutos (–step=900
) almacena valores de Temperatura (T), Presión (P), Humedad Relativa (H) y Punto de Rocío (DP).
El parámetro –start=1404406800
determina que la base de datos RRD no va a aceptar datos anteriores a las 14:00 horas del 3 de julio de 2014 (epoch = 1404406800 seconds since 1 jan 1970)
Una base de datos RRD consiste en un conjunto de campos o valores, y cada uno se declara con la directiva DS
.
La estructura de los campos de datos que se van a almacenar es esta (usaremos el caso de la Temepratura como ejemplo):
DS:T:GAUGE:1900:-10:40 DS:variable_name:GAUGE:heartbeat:min:max
DS
: define que se trata de un Data SetT
: es el nombre de la variable que se va a almacenar, en este caso T
corresponde a temperaturaGAUGE
: determina que se trata de un valor medido que se quiere almacenar. Las alternativas con COUNTER
si es un valor que se acumula. Ver otras alternativas coom DERIVE, ABSOLUTE y COMPUTE en doc de RRD.
La directiva RRA define cómo y cuantos datos se van a almacenar en la base de datos Round Robin. Cuando un dato se ingresa a la base de datos, primero se ingresa en el tiempo (time slot) correspondiente al –step
, eso constituye un dato primario. Luego se procesa mediante una función de consolidación (CF) que se declara en la directiva RRA.
Las funciones de consolidación (CF) disponibles son: AVERAGE, MIN, MAX, LAST
RRA:CF:xff:steps:rows
ejemplo:
RRA:MAX:0.5:1:40000
xff
: ??? misterio, no entendí la documentación, revisar y aclarar. Por ahora usar 0.5, pues el valor de xff
debe estar entre 0 y 1steps
define cuantos primary data points serán usados para consolidar un dato. En el caso del ejemplo, se usa 1rows
: determina cuando datos se van a almacenar en la base de datos. Eso dependerá de la frecuencia de toma de datos y de cuanto tiempo en el pasado se desea disponer de datos. Por ejemplo si se toma un dato cada 15 minutos, esto corresponde a 4 datos por hora, 24*4 datos por día y 24*4*365 datos por año. En el caso del ejemplo se almacenan 40000 datos que corresponde a un poco más de un año.Ejemplo:
rrdtool graph temperatura.png --end=now --start=1404406800 --width=1024 --height=400 DEF:temp=meteo.rrd:T:LAST LINE2:temp#FF5522:"Temperatura" rrdtool graph presion.png --end=now --start=1404406800 --width=1024 --height=400 -u 1030 -l 990 -r -x HOUR:4:DAY:1:DAY:1:86400:%A -y 10:2 -X 1 DEF:pres=meteo.rrd:P:LAST LINE2:pres#2255FF:"Presión"