=for html <div align="right">Versión <a href="rrdtutorial.es.pdf">PDF</a></div>
-=for html <div align="right"><a href="rrdtutorial.html">Enlish</a></div>
+=for html <div align="right"><a href="rrdtutorial.html">English</a></div>
=head1 DESCRIPTION / DESCRIPCIÓN
conseguidos a través de SNMP, y que los datos
sean el número de bytes (o bits) transferidos desde y hacia una red u
ordenador. RRDtool te permite crear una base de datos, guardar los
-datos en ellas, recuperarlos y crear gráficos en formato GIF o PNG,
+datos en ellas, recuperarlos y crear gráficos en formato SVG o PNG,
para mostrarlos en un navegador web. Esas imágenes dependen de los
datos que hayas guardado y pueden, por ejemplo, ser un sumario del
promedio de uso de la red, o los picos de tráfico que ocurrieron.
con RRDtool para ver donde está el archivo y como usarlo.
Te sugiero que te tomes un momento y te subscribas a la lista ahora
-mismo, enviando un mensaje a rrd-users-request@list.ee.ethz.ch
+mismo, enviando un mensaje a rrd-users-request@lists.oetiker.ch
con título C<subscribe>. Si eventualmente deseas salirte de la lista,
envía otro correo a la misma dirección, con título C<unsubscribe>.
contador, sin embargo, sigue contando en bytes! En el mundo
SNMP, la mayoría de los contadores tienen una
longitud de 32 bits. Esto significa que pueden contar desde 0 hasta
-4294967295. Usaremos estos valores en los ejemplos. El dispositivo, cuando
+4294967295. Usaremos estos valores en los ejemplos. El dispositivo, cuando
le preguntamos, retorna el valor actual del contador. Como sabemos el
tiempo transcurrido desde la última vez que le preguntamos, sabemos
cuantos bytes se han transferido C<***en promedio***> por
fecha 920804700, valor 12345
fecha 920805000, valor 12357
-
+
etcétera.
Como ves, pueden introducirse más de un valor en la base de datos
Debes obtener esto como salida:
speed
-
+
920804400: NaN
920804700: NaN
920805000: 4.0000000000e-02
Prueba este comando:
- rrdtool graph speed.gif \
+ rrdtool graph speed.png \
--start 920804400 --end 920808000 \
DEF:myspeed=test.rrd:speed:AVERAGE \
LINE2:myspeed#FF0000
-Este comando crea speed.gif, un gráfico de los datos desde las
+Este comando crea speed.png, un gráfico de los datos desde las
12:00 hasta las 13:00. Contiene una definición de la variable myspeed
y define el color como rojo. Notarás que el gráfico no comienza
exactamente a las 12:00 sino a las 12:05, y es porque no tenemos datos
violeta #FF00FF (mezcla de rojo y azul)
gris #555555 (un tercio de cada uno de los colores)
-El archivo GIF que acabas de crear puede
+El archivo PNG que acabas de crear puede
verse con tu visor de archivos de imagen favorito. Los navegadores lo
mostrarán usando la URL
-``file://el/camino/de/directorios/hasta/speed.gif''
+``file://el/camino/de/directorios/hasta/speed.png''
=head2 Gráficos con un poco de matemática
Vamos a corregirlo. Podríamos recrear la base de datos con los
valores correctos, pero hay una forma mejor: ¡haciendo los cálculos
-mientras creamos el archivo gif!
+mientras creamos el archivo png!
- rrdtool graph speed2.gif \
+ rrdtool graph speed2.png \
--start 920804400 --end 920808000 \
--vertical-label m/s \
DEF:myspeed=test.rrd:speed:AVERAGE \
Cuando veas esta imagen, notarás que la ``m'' ha desaparecido, y
ahora tienes los resultados correctos. Además hemos añadido una
-etiqueta a la imagen. Apartando esto, el archivo GIF es el mismo.
+etiqueta a la imagen. Apartando esto, el archivo PNG es el mismo.
Las operaciones están en la sección del CDEF
y están escritas en Notación Polaca Inversa (Reverse Polish Notation o
valores en kilómetros, debemos compensar por ello, multiplicando por
100, por lo que al aplicar esta corrección nos queda valor * 3600.
-Ahora vamos a crear este gif, agreándole un poco más de magia...
+Ahora vamos a crear este png, agreándole un poco más de magia...
- rrdtool graph speed3.gif \
+ rrdtool graph speed3.png \
--start 920804400 --end 920808000 \
--vertical-label km/h \
DEF:myspeed=test.rrd:speed:AVERAGE \
Los cálculos son más complejos ahora. Para calcular la velocidad "aceptable":
- Verifica si la velocidad en kmh es mayor que 100 ( kmh,100 ) GT
+ Verifica si la velocidad en kmh es mayor que 100 ( kmh,100 ) GT
Si es así, retorna 0, si no, retorna la velocidad ((( kmh,100 ) GT ), 0, kmh) IF
Para calcular la parte de velocidad "excesiva":
=head2 Magia gráfica
Me gusta creer que virtualmente no hay limites para lo que RRDtool puede
-hacer con los datos. No voy a explicarlo en detalle, pero mira este GIF:
+hacer con los datos. No voy a explicarlo en detalle, pero mira este PNG:
- rrdtool graph speed4.gif \
+ rrdtool graph speed4.png \
--start 920804400 --end 920808000 \
--vertical-label km/h \
DEF:myspeed=test.rrd:speed:AVERAGE \
AREA:fast#550000:"Too fast" \
STACK:over#FF0000:"Over speed"
-Vamos a crear una página HTML simple para ver los tres archivos GIF:
+Vamos a crear una página HTML simple para ver los tres archivos PNG:
<HTML><HEAD><TITLE>Velocidad</TITLE></HEAD><BODY>
- <IMG src="speed2.gif" alt="Speed in meters per second">
+ <IMG src="speed2.png" alt="Speed in meters per second">
<BR>
- <IMG src="speed3.gif" alt="Speed in kilometers per hour">
+ <IMG src="speed3.png" alt="Speed in kilometers per hour">
<BR>
- <IMG src="speed4.gif" alt="Traveled too fast?">
+ <IMG src="speed4.png" alt="Traveled too fast?">
</BODY></HTML>
Guárdalo como ``speed.html'' o algo parecido, y examínalo con un navegador.
Ahora, todo lo que tienes que hacer es medir los datos regularmente
y actualizar la base de datos. Cuando quieras verlos, vuelve a crear
-los archivos GIF y asegúrate que se carguen de nuevo en tu navegador
+los archivos PNG y asegúrate que se carguen de nuevo en tu navegador
(Nota: presionar el botón de "refrescar" puede no ser suficiente; en
particular, Netscape tiene un problema al respecto, por lo que
necesitaras darle al botón mientras presionas la tecla de mayúsculas.
1.3.6.1.2.1 . Ahora, nos interesa la rama ``interfaces'', que tiene el
número dos (o sea, 1.3.6.1.2.1.2, o 1.3.6.1.2.1.interfaces).
-Lo primero es hacernos con un programa SNMP. Busca algún
+Lo primero es hacernos con un programa SNMP. Busca algún
paquete pre-compilado para tu plataforma, si no, puedes
buscar el código fuente y compilarlo tu mismo. En Internet encontrarás
muchos programas, búscalos con un motor de búsqueda o como prefieras.
Si obtienes una lista de interfaces, ya casi hemos llegado. Aquí
tienes un ejemplo del resultado:
- [user@host /home/alex]$ snmpwalk cisco public 2.2.1.2
+ [user@host /home/alex]$ snmpwalk cisco public 2.2.1.2
interfaces.ifTable.ifEntry.ifDescr.1 = "BRI0: B-Channel 1"
interfaces.ifTable.ifEntry.ifDescr.2 = "BRI0: B-Channel 2"
interfaces.ifTable.ifEntry.ifDescr.3 = "BRI0" Hex: 42 52 49 30
Viendo que es la cuarta, pruebo con:
[user@host /home/alex]$ snmpget cisco public 2.2.1.10.4 2.2.1.16.4
-
+
interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126
interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519
Entonces, tengo 2 OIDs que monitorizar, y son (en el formato largo, ahora):
1.3.6.1.2.1.2.2.1.10
-
+
y
-
+
1.3.6.1.2.1.2.2.1.16
, ambas con el número de interfaz de 4
mientras no sea el fin del universo
hacer
- tomar el resultado de
+ tomar el resultado de
snmpget router community 2.2.1.10.4
en la variable $in
tomar el resultado de
Luego, tras recoger datos por un día, crea una imagen, usando:
- rrdtool graph myrouter-day.gif --start -86400 \
+ rrdtool graph myrouter-day.png --start -86400 \
DEF:inoctets=myrouter.rrd:input:AVERAGE \
DEF:outoctets=myrouter.rrd:output:AVERAGE \
AREA:inoctets#00FF00:"In traffic" \
978303300:2400:6:600:2400 \
978303600:2700:4:600:2700 \
978303900:3000:2:1200:3000
- rrdtool graph all1.gif -s 978300600 -e 978304200 -h 400 \
+ rrdtool graph all1.png -s 978300600 -e 978304200 -h 400 \
DEF:linea=all.rrd:a:AVERAGE LINE3:linea#FF0000:"Line A" \
DEF:lineb=all.rrd:b:AVERAGE LINE3:lineb#00FF00:"Line B" \
DEF:linec=all.rrd:c:AVERAGE LINE3:linec#0000FF:"Line C" \
- Línea C: u u 2 2 2 0 -2 -6 2 0 2 u
- Línea D: u 1 2 3 4 5 6 7 8 9 10 u
-Si tu archivo GIF muestra todo esto, has
+Si tu archivo PNG muestra todo esto, has
entrado los datos correctamente, tu programa RRDtool está funcionando
bien, el visor de gráficos no te engaña y hemos entrado en el 2000 sin
problemas :) Puedes probar el mismo ejemplo cuatro veces, una por cada línea.
=item *
-Línea B:
+Línea B:
No hay nada que calcular, los valores son los mismos que se
introdujeron en la base de datos.
=item *
-Línea C:
+Línea C:
De nuevo, no conocemos el valor
inicial antes de la primera medición, así que se aplica el mismo
razonamiento que para la línea A. En este
el valor máximo del contador + 1. Para nuestro coche, tendríamos:
Delta = 7 - 999987 = -999980 (en vez de 1000007-999987=20)
-
+
Delta real= -999980 + 999999 + 1 = 20
Al momento de escribir este documento, RRDtool maneja contadores de
- 32 bits: (4294967295+1) = 4294967296
- 64 bits: (18446744073709551615+1)-correction1 = 18446744069414584320
-
+
Antes: 4294967200
Incremento: 100
Debería ser: 4294967300
Pero es: 4
Diferencia: -4294967196
Corrección #1: -4294967196 + 4294967296 = 100
-
+
Antes: 18446744073709551000
Incremento: 800
Debería ser: 18446744073709551800
Diferencia: -18446744073709550816
Corrección #1: -18446744073709550816 +4294967296 = -18446744069414583520
Corrección #2: -18446744069414583520 +18446744069414584320 = 800
-
+
Antes: 18446744073709551615 ( valor máximo )
- Incremento: 18446744069414584320 ( incremento absurdo,
- Debería ser: 36893488143124135935 mínimo para que
- Pero es: 18446744069414584319 funcione el ejemplo)
+ Incremento: 18446744069414584320 ( incremento absurdo,
+ Debería ser: 36893488143124135935 mínimo para que
+ Pero es: 18446744069414584319 funcione el ejemplo)
Diferencia: -4294967296
Corrección #1: -4294967296 + 4294967296 = 0 (positivo,
- por tanto no se hace
+ por tanto no se hace
la segunda corrección)
-
+
Antes: 18446744073709551615 ( valor máximo )
- Incremento: 18446744069414584319
+ Incremento: 18446744069414584319
Debería ser: 36893488143124135934
Pero es: 18446744069414584318
Diferencia: -4294967297
debe ser.
en RRD en realidad
- tiempo+000: 0 delta="U" tiempo+000: 0 delta="U"
+ tiempo+000: 0 delta="U" tiempo+000: 0 delta="U"
tiempo+300: 300 delta=300 tiempo+300: 300 delta=300
tiempo+600: 600 delta=300 tiempo+603: 603 delta=303
tiempo+900: 900 delta=300 tiempo+900: 900 delta=297
rrdtool update seconds2.rrd \
920805000:000 920805300:300 920805603:603 920805900:900
- rrdtool graph seconds1.gif \
+ rrdtool graph seconds1.png \
--start 920804700 --end 920806200 \
--height 200 \
--upper-limit 1.05 --lower-limit 0.95 --rigid \
CDEF:unknown=seconds,UN \
LINE2:seconds#0000FF \
AREA:unknown#FF0000
- rrdtool graph seconds2.gif \
+ rrdtool graph seconds2.png \
--start 920804700 --end 920806200 \
--height 200 \
--upper-limit 1.05 --lower-limit 0.95 --rigid \