====== RRD Tool ====== Reference: * [[http://oss.oetiker.ch/rrdtool/index.en.html| RRD Home Page]] ===== 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 Set** * ''T'': es el nombre de la variable que se va a almacenar, en este caso ''T'' corresponde a temperatura * ''GAUGE'': 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. * 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 de ''xff'' debe estar entre 0 y 1 * ''steps'' define cuantos primary data points serán usados para consolidar un dato. En el caso del ejemplo, se usa 1 * ''rows'': 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"