RRD Tool
Reference:
Cómo crear una base de datos RRD
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)
Directiva DS
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 casoT
corresponde a temperaturaGAUGE
: determina que se trata de un valor medido que se quiere almacenar. Las alternativas conCOUNTER
si es un valor que se acumula. Ver otras alternativas coom DERIVE, ABSOLUTE y COMPUTE en doc de RRD.- heartbeat: define el máximo número de segundos entre dos updates antes de que se consideren pardidos los valores correspondientes (es una especie de misterio, pero lo que se suele poner acá es el doble del step o un poco más).
- min: valor mínimo que se espera leer
- max: valor máximo que se espera leer
Directiva RRA
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 dexff
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.
Cómo graficar los datos
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"