Este es el comando rrdtutorial que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
rrdtutorial - Tutorial RRDtool de Alex van den Bogaerdt
DESCRIPCIÓN
RRDtool está escrito por Tobias Oetiker[email protected]> con contribuciones de muchas personas
alrededor del mundo. Este documento está escrito por Alex van den Bogaerdt
<[email protected]> para ayudarlo a comprender qué es RRDtool y qué puede hacer para
usted
La documentación proporcionada con RRDtool puede ser demasiado técnica para algunas personas. Esta
El tutorial está aquí para ayudarlo a comprender los conceptos básicos de RRDtool. Debería prepararte para
lea la documentación usted mismo. También explica los aspectos generales de las estadísticas.
con un enfoque en la creación de redes.
TUTORIAL
Importante:
¡No se salte este documento! La primera parte de este documento explica la
lo básico y puede ser aburrido. Pero si no comprende los conceptos básicos, los ejemplos no
ser tan significativo para ti.
A veces las cosas cambian. Este ejemplo solía proporcionar números como "0.04" en lugar de
"4.00000e-02". Esos son realmente los mismos números, simplemente escritos de manera diferente. No
alarmarse si una versión futura de rrdtool muestra una forma de salida ligeramente diferente.
Los ejemplos de este documento son correctos para la versión 1.2.0 de RRDtool.
Además, a veces se producen errores. También pueden influir en el resultado de los ejemplos.
Ejemplo speed4.png sufría de esto (el manejo de datos desconocidos en un if-
declaración era incorrecta). Los datos normales estarán bien (un error en rrdtool no duraría mucho)
pero los casos especiales como NaN, INF, etc. pueden durar un poco más. Prueba otra versión si
puedes, o simplemente vive con eso.
Arreglé el ejemplo de speed4.png (y agregué una nota). Puede haber otros ejemplos que
sufre el mismo error o uno similar. Intenta arreglarlo tú mismo, lo cual es genial.
ejercicio. Pero no envíe su resultado como una corrección a la fuente de este documento.
Discutirlo en la lista de usuarios o escribirme.
What is ¿Herramienta RRD?
RRDtool se refiere a la herramienta Round Robin Database. Round robin es una técnica que funciona con un
cantidad fija de datos y un puntero al elemento actual. Piense en un círculo con algunos
puntos trazados en el borde. Estos puntos son los lugares donde se pueden almacenar los datos. Dibuja un
flecha desde el centro del círculo hasta uno de los puntos; este es el puntero. Cuando el
los datos actuales se leen o escriben, el puntero se mueve al siguiente elemento. Como estamos en un
círculo no hay principio ni fin, puedes seguir y seguir y seguir. Después de
mientras que, se utilizarán todos los lugares disponibles y el proceso reutiliza automáticamente los viejos
ubicaciones. De esta forma, el conjunto de datos no aumentará de tamaño y, por lo tanto, no requiere
mantenimiento. RRDtool funciona con bases de datos Round Robin (RRD). Almacena y recupera
datos de ellos.
What datos can be put into an ¿RRD?
Lo que sea, probablemente encajará siempre que sea algún tipo de datos de series de tiempo. Esta
significa que debe poder medir algún valor en varios puntos en el tiempo y proporcionar este
información a RRDtool. Si puede hacer esto, RRDtool podrá almacenarlo. Los valores
deben ser numéricos pero no tienen que ser enteros, como es el caso de MRTG (el siguiente
sección dará más detalles sobre esta aplicación más especializada).
Muchos ejemplos a continuación hablan sobre SNMP, que es un acrónimo de Simple Network Management
Protocolo. "Simple" se refiere al protocolo. No significa que sea fácil de administrar o
monitorear una red. Después de trabajar en este documento, debe saber lo suficiente para
ser capaz de entender de qué habla la gente. Por ahora, tenga en cuenta que SNMP puede
ser utilizado para consultar los dispositivos por los valores de los contadores que mantienen. Es el valor de aquellos
contadores que queremos almacenar en el RRD.
What can I do con este vídeo herramienta?
RRDtool se originó a partir de MRTG (Multi Router Traffic Grapher). MRTG comenzó como un pequeño
Script para graficar el uso de la conexión de una universidad a Internet. MRTG fue más tarde
(ab-) utilizado como herramienta para graficar otras fuentes de datos, incluida la temperatura, la velocidad, el voltaje,
número de impresiones y similares.
Lo más probable es que empiece a utilizar RRDtool para almacenar y procesar los datos recopilados a través de SNMP.
Lo más probable es que los datos sean bytes (o bits) transferidos desde y hacia una red o un
computadora. Pero también se puede utilizar para mostrar maremotos, radiación solar, energía
consumo, número de visitantes en una exposición, niveles de ruido cerca de un aeropuerto,
temperatura en su lugar de vacaciones favorito, temperatura en el refrigerador y lo que sea
la imaginación puede surgir.
Solo necesita un sensor para medir los datos y poder ingresar los números en RRDtool.
RRDtool luego le permite crear una base de datos, almacenar datos en ella, recuperar esos datos y crear
gráficos en formato PNG para su visualización en un navegador web. Esas imágenes PNG dependen de la
datos que recopiló y podría ser, por ejemplo, una descripción general del uso promedio de la red,
o los picos que ocurrieron.
What if I aun have problemas después de lectura este vídeo documentar?
Primero que nada: ¡léelo de nuevo! Puede que te hayas perdido algo. Si no puede compilar
las fuentes y tiene un sistema operativo bastante común, probablemente no sea culpa de RRDtool.
Puede haber versiones precompiladas en Internet. Si vienen de confianza
fuentes, consiga uno de esos.
Si por otro lado el programa funciona pero no le da los resultados esperados,
ser un problema con la configuración. Revise su configuración y compárela con la
ejemplos que siguen.
Hay una lista de correo y un archivo de la misma. Lea la lista durante algunas semanas y busque el
archivo. Se considera de mala educación hacer una pregunta sin buscar en los archivos: su
¡Es posible que el problema ya se haya resuelto para otra persona! Esto es cierto para la mayoría, si no
todas, listas de correo y no solo para esta en particular. Busque en la documentación que
vino con RRDtool para la ubicación y el uso de la lista.
Le sugiero que se tome un momento para suscribirse a la lista de correo ahora mismo enviando un correo electrónico.
para[email protected]> con un tema de "suscribirse". Si alguna vez quieres
deje esta lista, solo escriba un correo electrónico a la misma dirección pero ahora con un asunto de
"cancelar suscripción".
Cómo will usted ayuda yo?
Dándote algunas descripciones detalladas con ejemplos detallados. Supongo que siguiendo
las instrucciones en el orden en que se presentan le darán suficiente conocimiento de RRDtool para
experimenta por ti mismo. Si no funciona la primera vez, no se rinda. Vuelve a leer el
cosas que sí entendió, es posible que se haya perdido algo.
Al seguir los ejemplos, obtendrá experiencia práctica y, lo que es más importante, algunos
información de antecedentes de cómo funciona.
Necesitará saber algo sobre números hexadecimales. Si no lo hace, comience con
leyendo bin_dec_hex antes de continuar aquí.
Tu first Redondas petirrojo Database
En mi opinión, la mejor manera de aprender algo es realmente hacerlo. ¿Por qué no empezar bien?
¿ahora? Crearemos una base de datos, pondremos algunos valores en ella y extraeremos estos datos nuevamente. Tu
La salida debe ser la misma que la que se incluye en este documento.
Comenzaremos con algunas cosas fáciles y compararemos un automóvil con un enrutador, o compararemos kilómetros
(millas si lo desea) con bits y bytes. Es todo lo mismo: algunos números durante algún tiempo.
Supongamos que tenemos un dispositivo que transfiere bytes hacia y desde Internet. Este dispositivo mantiene
un contador que comienza en cero cuando se enciende, aumentando con cada byte que es
transferido. Este contador probablemente tendrá un valor máximo. Si se alcanza este valor y
se cuenta un byte adicional, el contador comienza de nuevo en cero. Esto es lo mismo que muchos
contadores en el mundo como el contador de kilometraje en un coche.
La mayoría de las discusiones sobre redes hablan de bits por segundo, así que acostumbrámonos a eso.
inmediatamente. Suponga que un byte tiene ocho bits y empiece a pensar en bits, no en bytes. El contador,
sin embargo, sigue contando bytes. En el mundo SNMP, la mayoría de los contadores son de 32 bits. Ese
significa que están contando de 0 a 4294967295. Usaremos estos valores en los ejemplos.
El dispositivo, cuando se le pregunta, devuelve el valor actual del contador. Sabemos el tiempo que
ha pasado desde la última vez que preguntamos, por lo que ahora sabemos cuántos bytes se han transferido *** en
promedio de *** por segundo. Esto no es muy difícil de calcular. Primero en palabras, luego en
cálculos:
1. Tome el contador actual, reste el valor anterior.
2. Haga lo mismo con la hora actual y la hora anterior (en segundos).
3. Divida el resultado de (1) por el resultado de (2), el resultado es la cantidad de bytes por
segundo. Multiplique por ocho para obtener el número de bits por segundo (bps).
bps = (contador_ahora - contador_antes) / (tiempo_ahora - tiempo_antes) * 8
Para algunas personas, puede ser útil traducir esto en un ejemplo de automóvil. No intentes esto
ejemplo, y si lo hace, ¡no me culpe por los resultados!
Las personas que no están acostumbradas a pensar en kilómetros por hora pueden traducir más en millas por hora.
hora dividiendo km por 1.6 (lo suficientemente cerca). Usaré las siguientes abreviaturas:
m: metro
km: kilómetro (= 1000 metros).
hora cero
s: segundo
km / h: kilómetros por hora
m / s: metros por segundo
Estás conduciendo un coche. A las 12:05 lees el contador en el tablero y te dice
que el coche se ha movido 12345 km hasta ese momento. A las 12:10 vuelves a mirar, dice
12357 km. Esto significa que ha recorrido 12 km en cinco minutos. Un científico traduciría
eso en metros por segundo y esto hace una buena comparación con el problema de (bytes
por cinco minutos) versus (bits por segundo).
Recorrimos 12 kilómetros que son 12000 metros. Hicimos eso en cinco minutos o 300
segundos. Nuestra velocidad es de 12000m / 300s o 40 m / s.
También podríamos calcular la velocidad en km / h: 12 por 5 minutos es una hora, así que tenemos que
multiplique 12 km por 12 para obtener 144 km / h. Para nuestros amigos nativos de habla inglesa: eso es 90
mph, así que no intentes este ejemplo en casa o donde vivo :)
Recuerde: estos números son solo promedios. No hay forma de averiguarlo a partir del
números, si conducía a una velocidad constante. Hay un ejemplo más adelante en este tutorial.
eso explica esto.
Espero que comprenda que no hay diferencia en el cálculo de m / so bps; solo el camino
recopilamos los datos es diferente. Incluso la k de kilo es la misma que en términos de redes
k también significa 1000.
Ahora crearemos una base de datos donde podamos guardar todos estos números interesantes. El método
utilizado para iniciar el programa puede diferir ligeramente de un sistema operativo a otro, pero supongo que puede imaginarse
descúbrelo si funciona diferente al tuyo. Asegúrese de no sobrescribir ningún archivo en su
sistema al ejecutar el siguiente comando y escriba la línea completa como una línea larga (I
tuvo que dividirlo para facilitar la lectura) y omitir todos los caracteres '\'.
rrdtool crear test.rrd \
--comienza 920804400 \
DS: velocidad: CONTADOR: 600: U: U \
RRA: PROMEDIO: 0.5: 1: 24 \
RRA: PROMEDIO: 0.5: 6: 10
(Ingrese: "rrdtool create test.rrd --start 920804400 DS ...")
What tiene been ¿creado?
Creamos la base de datos de round robin llamada test (test.rrd) que comienza al mediodía del día en que
Comencé a escribir este documento el 7 de marzo de 1999 (esta fecha se traduce en 920804400
segundos como se explica a continuación). Nuestra base de datos contiene una fuente de datos (DS) denominada "velocidad" que
representa un contador. Este contador se lee cada cinco minutos (este es el valor predeterminado
por lo tanto, no tiene que poner "--step = 300"). En la misma base de datos, dos turnos
archivos (RRA) se mantienen, uno promedia los datos cada vez que se leen (por ejemplo, hay
nada para promediar) y conserva 24 muestras (24 veces 5 minutos son 2 horas). El otro
promedia 6 valores (media hora) y contiene 10 de tales promedios (por ejemplo, 5 horas).
RRDtool trabaja con marcas de tiempo especiales provenientes del mundo UNIX. Esta marca de tiempo es la
número de segundos transcurridos desde el 1 de enero de 1970 UTC. El valor de la marca de tiempo es
traducido a la hora local y, por lo tanto, se verá diferente para diferentes zonas horarias.
Lo más probable es que no estés en la misma parte del mundo que yo. Esto significa tu tiempo
la zona es diferente. En todos los ejemplos en los que hablo de tiempo, las horas pueden ser incorrectas para
usted. Esto tiene poco efecto en los resultados de los ejemplos, solo corrija las horas mientras
leyendo. Como ejemplo: donde veré "12:05", la gente del Reino Unido verá "11:05".
Ahora tenemos que llenar nuestra base de datos con algunos números. Fingiremos haber leído el
siguientes números:
12:05 12345 kilometros
12:10 12357 kilometros
12:15 12363 kilometros
12:20 12363 kilometros
12:25 12363 kilometros
12:30 12373 kilometros
12:35 12383 kilometros
12:40 12393 kilometros
12:45 12399 kilometros
12:50 12405 kilometros
12:55 12411 kilometros
13:00 12415 kilometros
13:05 12420 kilometros
13:10 12422 kilometros
13:15 12423 kilometros
Rellenamos la base de datos de la siguiente manera:
rrdtool update test.rrd 920804700: 12345 920805000: 12357 920805300: 12363
rrdtool update test.rrd 920805600: 12363 920805900: 12363 920806200: 12373
rrdtool update test.rrd 920806500: 12383 920806800: 12393 920807100: 12399
rrdtool update test.rrd 920807400: 12405 920807700: 12411 920808000: 12415
rrdtool update test.rrd 920808300: 12420 920808600: 12422 920808900: 12423
Esto dice: actualice nuestra base de datos de prueba con los siguientes números
tiempo 920804700, valor 12345
tiempo 920805000, valor 12357
etcétera.
Como puede ver, es posible introducir más de un valor en la base de datos en una
mando. Tuve que detenerme en tres para mejorar la legibilidad, pero el máximo real por línea es el sistema operativo
dependiente.
Ahora podemos recuperar los datos de nuestra base de datos usando "rrdtool fetch":
rrdtool fetch test.rrd PROMEDIO --start 920804400 --end 920809200
Debería devolver la siguiente salida:
velocidad
920804700: nana
920805000: 4.0000000000e-02
920805300: 2.0000000000e-02
920805600: 0.0000000000e + 00
920805900: 0.0000000000e + 00
920806200: 3.3333333333e-02
920806500: 3.3333333333e-02
920806800: 3.3333333333e-02
920807100: 2.0000000000e-02
920807400: 2.0000000000e-02
920807700: 2.0000000000e-02
920808000: 1.3333333333e-02
920808300: 1.6666666667e-02
920808600: 6.6666666667e-03
920808900: 3.3333333333e-03
920809200: nana
920809500: nana
Tenga en cuenta que es posible que obtenga más filas de las que espera. La razón de esto es que pides
un intervalo de tiempo que termina en 920809200. El número que se escribe detrás de 920809200: en el
La lista anterior cubre el rango de tiempo de 920808900 a 920809200, EXCLUYENDO 920809200. Por lo tanto
para estar seguro, también recibe la entrada de 920809200 a 920809500, ya que
INCLUYE 920809200. También puede ver "NaN" en lugar de "nan", esto depende del sistema operativo. "Yaya"
significa "No es un número". Si su sistema operativo escribe "U" o "UNKN" o algo similar,
okey. Si algo más está mal, probablemente se deba a un error que cometió (asumiendo
que mi tutorial es correcto, por supuesto :-). En ese caso: elimine la base de datos e intente
de nuevo.
El significado de la salida anterior se aclarará a continuación.
Hora a Para crear some gráficos
Prueba el siguiente comando:
rrdtool gráfica velocidad.png \
--inicio 920804400 --fin 920808000 \
DEF: myspeed = test.rrd: velocidad: PROMEDIO \
LINE2: myspeed # FF0000
Esto creará speed.png que comienza a las 12:00 y termina a las 13:00. Hay una definicion
de una variable llamada myspeed, utilizando los datos de RRA "speed" fuera de la base de datos "test.rrd".
La línea dibujada tiene 2 píxeles de alto y representa la variable mypeed. El color es rojo
(especificado por su representación rgb, ver más abajo).
Notará que el inicio del gráfico no es a las 12:00 sino a las 12:05. Esto es porque
no tenemos datos suficientes para decir el promedio antes de ese momento. Esto solo sucederá cuando
se pierden algunas muestras, esto no sucederá mucho, con suerte.
Si esto ha funcionado: ¡enhorabuena! Si no es así, compruebe qué salió mal.
Los colores se componen de rojo, verde y azul. Para cada uno de los componentes, especifique
cuánto usar en hexadecimal donde 00 significa no incluido y FF significa completamente incluido.
El "color" blanco es una mezcla de rojo, verde y azul: FFFFFF El "color" negro es todo
colores apagados: 000000
rojo # FF0000
verde # 00FF00
azul # 0000FF
magenta # FF00FF (rojo mezclado con azul)
gris # 555555 (un tercio de todos los componentes)
Además, puede (con una RRDtool reciente) agregar un canal alfa (transparencia). los
el valor predeterminado será "FF", que significa no transparente.
El PNG que acaba de crear se puede mostrar con su visor de imágenes favorito. navegadores web
mostrará el PNG a través de la URL "file: ///the/path/to/speed.png"
Gráficos con some las matemáticas
Al mirar la imagen, nota que el eje horizontal está etiquetado como 12:10, 12:20,
12:30, 12:40 y 12:50. A veces, una etiqueta no encaja (es probable que a las 12:00 y a las 13:00
candidatos) para que se omitan.
El eje vertical muestra el rango que ingresamos. Proporcionamos kilómetros y cuando los dividimos
por 300 segundos, obtenemos números muy pequeños. Para ser exactos, el primer valor fue 12
(12357-12345) y dividido por 300, esto hace 0.04, que RRDtool muestra como "40 m"
que significa "40/1000". La "m" (mili) no tiene nada que ver con metros (también m), kilómetros o
milímetros! RRDtool no conoce las unidades físicas de nuestros datos, simplemente funciona con
números adimensionales.
Si hubiéramos medido nuestras distancias en metros, esto habría sido (12357000-12345000) / 300 =
12000 / 300 40 =.
Como la mayoría de la gente tiene un mejor sentido de los números en este rango, corregiremos eso. Pudimos
recrear nuestra base de datos y almacenar los datos correctos, pero hay una mejor manera: hacemos algunos
cálculos al crear el archivo png!
rrdtool gráfico speed2.png \
--inicio 920804400 --fin 920808000 \
--etiqueta vertical m / s \
DEF: myspeed = test.rrd: velocidad: PROMEDIO \
CDEF: realspeed = myspeed, 1000, \ * \
LINE2: velocidad real # FF0000
Nota: necesito escapar del operador de multiplicación * con una barra invertida. Si no lo hago, el
El sistema operativo puede interpretarlo y utilizarlo para la expansión de nombres de archivos. También podrías colocar
la línea entre comillas así:
"CDEF: realspeed = myspeed, 1000, *" \
Se reduce a: es RRDtool que debería ver *, no su shell. Y es tu caparazón
interpretando \, no RRDtool. Es posible que deba ajustar los ejemplos en consecuencia si
utilizar un sistema operativo o shell que se comporte de forma diferente.
Después de ver este PNG, observará que la "m" (mili) ha desaparecido. Esto es lo que
el resultado correcto sería. Además, se ha agregado una etiqueta a la imagen. Aparte de las cosas
mencionado anteriormente, el PNG debe tener el mismo aspecto.
Los cálculos se especifican en la parte CDEF anterior y están en notación polaca inversa
("RPN"). Lo que solicitamos a RRDtool es: "tomar la fuente de datos mypeed y el número
1000; multiplique esos ". No se moleste con RPN todavía, se explicará más adelante en más
detalle. Además, es posible que desee leer mi tutorial sobre CDEF y el tutorial de Steve Rader sobre RPN.
Pero primero termine este tutorial.
¡Aférrate! Si podemos multiplicar valores por 1000, también debería ser posible mostrar
kilómetros por hora a partir de los mismos datos!
Para cambiar un valor que se mide en metros por segundo:
Calcular metros por hora: valor * 3600
Calcular kilómetros por hora: valor / 1000
Juntos, esto hace: valor * (3600/1000) o valor * 3.6
En nuestra base de datos de ejemplo cometimos un error y debemos compensarlo con
multiplicando por 1000. Aplicando esa corrección:
valor * 3.6 * 1000 == valor * 3600
Ahora creemos este PNG y agreguemos un poco más de magia ...
rrdtool gráfico speed3.png \
--inicio 920804400 --fin 920808000 \
- etiqueta vertical km / h \
DEF: myspeed = test.rrd: velocidad: PROMEDIO \
"CDEF: kmh = myspeed, 3600, *" \
CDEF: rápido = kmh, 100, GT, kmh, 0, IF \
CDEF: bueno = kmh, 100, GT, 0, kmh, IF \
HRULE: 100 # 0000FF: "Máximo permitido" \
AREA: buena # 00FF00: "Buena velocidad" \
AREA: fast # FF0000: "Demasiado rápido"
Nota: aquí usamos otro medio para escapar del operador * encerrando toda la cadena en
doble comillas.
Este gráfico se ve mucho mejor. La velocidad se muestra en km / h e incluso hay una línea extra con
la velocidad máxima permitida (en la carretera por la que viajo). También cambié los colores utilizados para
mostrar la velocidad y cambiarla de una línea a un área.
Los cálculos son más complejos ahora. Para mediciones de velocidad dentro del límite de velocidad,
son:
Compruebe si kmh es mayor que 100 (kmh, 100) GT
Si es así, devuelve 0, de lo contrario kmh (((kmh, 100) GT), 0, kmh) SI
Para valores por encima del límite de velocidad:
Compruebe si kmh es mayor que 100 (kmh, 100) GT
Si es así, devuelve kmh, de lo contrario devuelve 0 (((kmh, 100) GT), kmh, 0) IF
Gráficos Simétrica
Me gusta creer que prácticamente no hay límites para cómo el gráfico RRDtool puede manipular los datos.
No explicaré cómo funciona, pero mire el siguiente PNG:
rrdtool gráfico speed4.png \
--inicio 920804400 --fin 920808000 \
- etiqueta vertical km / h \
DEF: myspeed = test.rrd: velocidad: PROMEDIO \
CDEF: nonans = myspeed, UN, 0, myspeed, IF \
CDEF: kmh = nonanos, 3600, * \
CDEF: rápido = kmh, 100, GT, 100,0, IF \
CDEF: más de = kmh, 100, GT, kmh, 100, -, 0, IF \
CDEF: bueno = kmh, 100, GT, 0, kmh, IF \
HRULE: 100 # 0000FF: "Máximo permitido" \
AREA: buena # 00FF00: "Buena velocidad" \
AREA: fast # 550000: "Demasiado rápido" \
STACK: más de # FF0000: "Over speed"
¿Recuerdas la nota al principio? Tuve que eliminar datos desconocidos de este ejemplo. los
CDEF 'nonans' es nuevo, y la sexta línea (que solía ser la quinta línea) solía leer
'CDEF: kmh = myspeed, 3600, *'
Creemos una página HTML rápida y sucia para ver los tres PNG:
Velocidad
Nombra el archivo "speed.html" o similar, y míralo en tu navegador web.
Ahora, todo lo que tiene que hacer es medir los valores con regularidad y actualizar la base de datos. Cuando usted
desea ver los datos, volver a crear los PNG y asegurarse de actualizarlos en su navegador.
(Nota: es posible que hacer clic en recargar no sea suficiente, especialmente cuando se trata de proxies. Intente
shift-reload o ctrl-F5).
Novedades in Realidad
Ya usamos el comando "actualizar": tomó uno o más parámetros en forma de
" : ". Le alegrará saber que puede especificar la hora actual completando
en una "N" como el tiempo. O puede usar la función "tiempo" en Perl (el ejemplo más corto
en este tutorial):
perl -e 'tiempo de impresión, "\ n"'
La forma de ejecutar un programa a intervalos regulares depende del sistema operativo. Pero aquí hay un ejemplo en pseudo
código:
- Obtenga el valor y póngalo en la variable "$ velocidad"
- rrdtool update speed.rrd N: $ velocidad
(no intente esto con nuestra base de datos de prueba, la usaremos en más ejemplos)
Esto es todo. Ejecute el script anterior cada cinco minutos. Cuando necesitas saber lo que
los gráficos se ven así, ejecute los ejemplos anteriores. También puedes ponerlos en un guión. Después
ejecutando ese script, vea la página index.html que creamos arriba.
Cosas palabras on SNMP
Me imagino que muy pocas personas podrán obtener datos reales de su automóvil cada cinco
minutos. Todas las demás personas tendrán que conformarse con algún otro tipo de contador. Tú podrías
medir el número de páginas impresas por una impresora, por ejemplo, las tazas de café hechas por
la máquina de café, un dispositivo que cuenta la electricidad consumida, lo que sea. Cualquier incremento
El contador se puede monitorear y graficar usando lo que aprendió hasta ahora. Más tarde lo haremos
También podrá monitorizar otros tipos de valores como la temperatura.
Muchas personas interesadas en RRDtool usarán el contador que realiza un seguimiento de los octetos (bytes)
transferido por un dispositivo de red. Así que hagamos eso a continuación. Empezaremos con un
descripción de cómo recopilar datos.
Algunas personas comentarán que existen herramientas que pueden realizar esta recopilación de datos para
usted. ¡Ellos están en lo correcto! Sin embargo, creo que es importante que comprenda que no son
necesario. Cuando tiene que determinar por qué las cosas salieron mal, necesita saber cómo
extra.
Se ha hablado muy brevemente de una herramienta utilizada en el ejemplo al principio de este
documento, se llama SNMP. Es una forma de hablar con equipos en red. La herramienta que utilizo
a continuación se llama "snmpget" y así es como funciona:
snmpget contraseña del dispositivo OID
or
snmpget -v [versión] -c [contraseña] OID del dispositivo
Por dispositivo, sustituya el nombre o la dirección IP de su dispositivo. Por contraseña usted
utilice la "cadena de lectura de la comunidad" como se llama en el mundo SNMP. Para algunos dispositivos, el
el valor predeterminado de "público" podría funcionar, sin embargo, esto se puede deshabilitar, modificar o proteger para
razones de privacidad y seguridad. Lea la documentación que viene con su dispositivo o
.
Luego está este parámetro, llamado OID, que significa "identificador de objeto".
Cuando comienza a aprender sobre SNMP, parece muy confuso. No es tan dificil
cuando mira la Base de información de administración ("MIB"). Es un árbol al revés que
describe datos, con un solo nodo como raíz y desde allí varias ramas. Estas
las ramas terminan en otro nodo, se ramifican, etc. Todas las ramas tienen un nombre y
forman el camino que seguimos hasta el final. Las ramas que seguimos son
nombre: iso, org, dod, internet, mgmt y mib-2. Estos nombres también se pueden escribir como
números y son 1 3 6 1 2 1.
iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1)
Existe mucha confusión sobre el punto inicial que utilizan algunos programas. No hay*
punto inicial en un OID. Sin embargo, algunos programas pueden utilizar la parte anterior de los OID como
defecto. Para indicar la diferencia entre los OID abreviados y los OID completos, necesitan un
punto inicial cuando especifica el OID completo. A menudo, esos programas dejarán fuera
parte predeterminada al devolverle los datos. Para empeorar las cosas, tienen varios
prefijos predeterminados ...
Ok, continuemos con el inicio de nuestro OID: teníamos 1.3.6.1.2.1 A partir de ahí, estamos
especialmente interesado en la rama "interfaces" que tiene el número 2 (por ejemplo, 1.3.6.1.2.1.2
o 1.3.6.1.2.1. interfaces).
Primero, tenemos que conseguir algún programa SNMP. Primero mira si hay un paquete precompilado
disponible para su sistema operativo. Esta es la forma preferida. Si no, tendrá que obtener el
fuentes usted mismo y compílelas. Internet está lleno de fuentes, programas, etc. Buscar
información utilizando un motor de búsqueda o lo que prefieras.
Suponga que tiene el programa. Primero intente recopilar algunos datos disponibles en la mayoría de
sistemas. Recuerda: existe un nombre corto para la parte del árbol que más nos interesa
en el mundo en el que vivimos!
Daré un ejemplo que se puede usar en Fedora Core 3. Si no funciona para usted,
Siga leyendo el manual de SNMP y adapte el ejemplo para que funcione.
snmpget -v2c -c myrouter público system.sysDescr.0
El dispositivo debe responder con una descripción de sí mismo, quizás una vacía. Hasta que tengas
una respuesta válida de un dispositivo, tal vez usando una "contraseña" diferente, o un dispositivo diferente,
no tiene sentido continuar.
snmpget -v2c -c myrouter público interfaces.ifNumber.0
Con suerte, obtendrá un número como resultado, el número de interfaces. Si es así, puedes continuar
y pruebe con un programa diferente llamado "snmpwalk".
snmpwalk -v2c -c myrouter público interfaces.ifTable.ifEntry.ifDescr
Si regresa con una lista de interfaces, casi está allí. He aquí un ejemplo:
[usuario @ host / inicio / alex] $ snmpwalk -v2c -c public cisco 2.2.1.2
interfaces.ifTable.ifEntry.ifDescr.1 = "BRI0: Canal B 1"
interfaces.ifTable.ifEntry.ifDescr.2 = "BRI0: Canal B 2"
interfaces.ifTable.ifEntry.ifDescr.3 = "BRI0" Hex: 42 52 49 30
interfaces.ifTable.ifEntry.ifDescr.4 = "Ethernet0"
interfaces.ifTable.ifEntry.ifDescr.5 = "Loopback0"
En este equipo Cisco, me gustaría monitorear la interfaz "Ethernet0" y desde el
Por encima de la salida veo que es el número cuatro. Lo intento:
[usuario @ host / home / alex] $ snmpget -v2c -c public cisco 2.2.1.10.4 2.2.1.16.4
interfaces.ifTable.ifEntry.ifInOctets.4 = 2290729126
interfaces.ifTable.ifEntry.ifOutOctets.4 = 1256486519
Entonces ahora tengo dos OID para monitorear y son (en su totalidad, esta vez):
1.3.6.1.2.1.2.2.1.10
y
1.3.6.1.2.1.2.2.1.16
ambos con un número de interfaz de 4.
No se deje engañar, este no fue mi primer intento. También me tomó un tiempo entender
qué significan todos estos números. Ayuda mucho cuando se traducen a descriptivos.
texto ... Al menos, cuando la gente habla de MIB y OID, sabes de qué se trata todo
sobre. No olvide el número de interfaz (0 si no depende de la interfaz) e intente
snmpwalk si no obtiene una respuesta de snmpget.
Si comprende la sección anterior y obtiene números de su dispositivo, continúe con
este tutorial. Si no es así, vuelva a leer esta parte.
A Historias de Mundo Ejemplo
Que comience la fiesta. Primero, cree una nueva base de datos. Contiene datos de dos contadores,
llamado entrada y salida. Los datos se guardan en archivos que lo promedian. Toman 1, 6, 24
o 288 muestras a la vez. También van a archivos que guardan el número máximo. Esta
se explicará más adelante. El tiempo entre muestras es de 300 segundos, un buen comienzo.
punto, que es lo mismo que cinco minutos.
1 muestra "promediada" permanece 1 período de 5 minutos
6 muestras promediadas se convierten en una media en 30 minutos
24 muestras promediadas se convierten en un promedio en 2 horas
288 muestras promediadas se convierten en un promedio en 1 día
Intentemos ser compatibles con MRTG, que almacena aproximadamente la siguiente cantidad de datos:
600 muestras de 5 minutos: 2 días y 2 horas
600 muestras de 30 minutos: 12.5 días
600 muestras de 2 horas: 50 días
732 muestras de 1 día: 732 días
Estos rangos se agregan, por lo que la cantidad total de datos almacenados en la base de datos es
aproximadamente 797 días. RRDtool almacena los datos de manera diferente, no inicia el "semanal"
archivo donde se detuvo el archivo "diario". Para ambos archivos, los datos más recientes serán
cerca de "ahora" y, por lo tanto, necesitaremos mantener más datos que MRTG.
Necesitaremos:
600 muestras de 5 minutos (2 días y 2 horas)
700 muestras de 30 minutos (2 días y 2 horas, más 12.5 días)
775 muestras de 2 horas (más de 50 días)
797 muestras de 1 día (por encima de + 732 días, redondeado a 797)
rrdtool crear myrouter.rrd \
DS: entrada: CONTADOR: 600: U: U \
DS: salida: CONTADOR: 600: U: U \
RRA: PROMEDIO: 0.5: 1: 600 \
RRA: PROMEDIO: 0.5: 6: 700 \
RRA: PROMEDIO: 0.5: 24: 775 \
RRA: PROMEDIO: 0.5: 288: 797 \
RRA: MÁX: 0.5: 1: 600 \
RRA: MÁX: 0.5: 6: 700 \
RRA: MÁX: 0.5: 24: 775 \
RRA: MÁX .: 0.5: 288: 797
Lo siguiente que debe hacer es recopilar datos y almacenarlos. Aquí hay un ejemplo. Está escrito
parcialmente en pseudocódigo, tendrá que averiguar qué hacer exactamente en su sistema operativo para hacer
funciona.
mientras no sea el fin del universo
do
obtener el resultado de
comunidad de enrutadores snmpget 2.2.1.10.4
en variable $ en
obtener el resultado de
comunidad de enrutadores snmpget 2.2.1.16.4
en variable $ out
rrdtool update myrouter.rrd N: $ in: $ out
espera 5 minutos
done
Luego, después de recopilar datos durante un día, intente crear una imagen usando:
rrdtool gráfico myrouter-day.png --start -86400 \
DEF: inoctets = myrouter.rrd: entrada: PROMEDIO \
DEF: outoctets = myrouter.rrd: salida: PROMEDIO \
AREA: inoctets # 00FF00: "En tráfico" \
LINE1: outoctets # 0000FF: "Fuera de tráfico"
Esto debería producir una imagen con un día de tráfico. Un día son 24 horas de 60
minutos de 60 segundos: 24 * 60 * 60 = 86400, comenzamos en ahora menos 86400 segundos. Definimos
(con DEF) inoctets y outoctets como valores promedio de la base de datos myrouter.rrd
y dibuje un área para el tráfico "de entrada" y una línea para el tráfico "de salida".
Vea la imagen y siga registrando datos durante unos días más. Si lo desea, puede probar el
ejemplos de la base de datos de prueba y vea si puede obtener varias opciones y cálculos para
extra.
Sugerencia: se muestra en bytes por segundo y en bits por segundo. Haz los gráficos de Ethernet
se ponen rojos si superan los cuatro megabits por segundo.
Consolidación Funciones
Algunos párrafos atrás mencioné la posibilidad de mantener los valores máximos en lugar de
los valores medios. Entremos un poco más en esto.
Recuerde todo lo relacionado con la velocidad del automóvil. Suponga que condujimos a 144 km / h durante 5
minutos y luego fueron detenidos por la policía durante 25 minutos. Al final de la conferencia
tomaría nuestra computadora portátil y crearía y vería la imagen tomada de la base de datos. Si miramos
el segundo RRA que creamos, tendríamos el promedio de 6 muestras. Las muestras
medido sería 144 + 0 + 0 + 0 + 0 + 0 = 144, dividido por 30 minutos, corregido para el error por
1000, traducido a km / h, con un resultado de 24 km / h. Todavía obtendría un boleto pero no
por exceso de velocidad :)
Evidentemente, en este caso no deberíamos mirar los promedios. En algunos casos son útiles.
Si desea saber cuántos km ha viajado, la imagen promediada sería la correcta.
uno para mirar. Por otro lado, para la velocidad a la que viajamos, los números máximos
visto es mucho más interesante. Más adelante veremos más tipos.
Lo mismo ocurre con los datos. Si quieres saber la cantidad, mira los promedios. Si quieres
para conocer la tasa, mire la máxima. Con el tiempo, se separarán cada vez más. En
la última base de datos que hemos creado, hay dos archivos que guardan los datos por día. los
El archivo que mantiene los promedios mostrará números bajos, el archivo que muestra los máximos tendrá
números más altos.
Para mi automóvil, esto se traduciría en promedios por día de 96/24 = 4 km / h (ya que viajo alrededor de 94
kilómetros en un día) durante los días laborables, y un máximo de 120 km / h (mi velocidad máxima que
alcance todos los días).
Gran diferencia. No mire el segundo gráfico para estimar las distancias que viajo
y no mire el primer gráfico para estimar mi velocidad. Esto funcionará si las muestras son
muy juntos, como lo están en cinco minutos, pero no si es promedio.
Algunos días, salgo a dar un paseo largo. Si cruzo Europa y viajo durante 12 horas, el
El primer gráfico se elevará a unos 60 km / h. El segundo mostrará 180 km / h. Esto significa que
Recorrí una distancia de 60 km / h por 24 h = 1440 km. Hice esto a mayor velocidad y
un máximo alrededor de 180 km / h. Sin embargo, probablemente no signifique que viajé durante 8 horas.
a una velocidad constante de 180 km / h!
Este es un ejemplo real: siga la corriente a través de Alemania (¡rápido!) Y deténgase unas cuantas veces para
gas y cafe. Conduzca despacio por Austria y los Países Bajos. Tenga cuidado en el
montañas y pueblos. Si observa los gráficos creados a partir de los cinco minutos
promedios obtendría una imagen totalmente diferente. Vería los mismos valores en el
gráficos promedio y máximo (siempre que medí cada 300 segundos). Serias capaz de
ver cuando me detuve, cuando estaba en la velocidad máxima, cuando conducía por carreteras rápidas, etc.
La granularidad de los datos es mucho mayor, por lo que puede ver más. Sin embargo, esto toma 12
muestras por hora, o 288 valores por día, por lo que sería una gran cantidad de datos durante un período más largo
de tiempo. Por lo tanto, lo promediamos, eventualmente a un valor por día. De este valor, nosotros
no puedo ver muchos detalles, por supuesto.
Asegúrese de comprender los últimos párrafos. No hay valor en solo una línea y un
En algunos ejes, es necesario saber qué significan e interpretar los datos de manera adecuada.
Esto es cierto para todos los datos.
El mayor error que puede cometer es utilizar los datos recopilados para algo que no es
adecuado para. Estaría mejor si no tuviera el gráfico en absoluto.
Vamos a una estrategia SEO para aparecer en las búsquedas de Google. Lo que usted ahora should know
Sabe cómo crear una base de datos y puede poner datos en ella. Puedes sacar los números
nuevamente creando una imagen, haga cálculos con los datos de la base de datos y vea el resultado
en lugar de los datos sin procesar. Conoce la diferencia entre promedios y máximos, y
cuándo usar cuál (o al menos debería tener una idea).
RRDtool puede hacer más de lo que hemos aprendido hasta ahora. Antes de continuar con el resto
de este documento, te recomiendo que vuelvas a leer desde el principio y pruebes algunas modificaciones en el
ejemplos. Asegúrese de comprender todo completamente. Valdrá la pena el esfuerzo y ayuda
usted no solo con el resto de este tutorial, sino también en su seguimiento diario durante mucho tiempo
después de leer esta introducción.
Data Fuente Tipos
Está bien, tienes ganas de continuar. Bienvenido de nuevo y prepárate para una mayor velocidad en
los ejemplos y explicaciones.
Sabes que para ver un contador a lo largo del tiempo, debes tomar dos números y
divide la diferencia de ellos entre el tiempo transcurrido. Esto tiene sentido para los ejemplos.
Te lo di pero hay otras posibilidades. Por ejemplo, puedo recuperar el
temperatura de mi enrutador en tres lugares, a saber, la entrada, el llamado punto caliente y
el escape. Estos valores no son contadores. Si tomo la diferencia de las dos muestras
y dividir eso por 300 segundos estaría preguntando por el cambio de temperatura por segundo.
¡Ojalá esto sea cero! Si no, la sala de ordenadores probablemente esté en llamas :)
¿Entonces, qué podemos hacer? Podemos decirle a RRDtool que almacene los valores que medimos directamente a medida que
son (esto no es del todo cierto, pero lo suficientemente cerca). Los gráficos que hagamos se verán mucho
mejor, mostrarán un valor bastante constante. Sé cuando el enrutador está ocupado (funciona
-> utiliza más electricidad -> genera más calor -> sube la temperatura). sé
cuando las puertas se dejan abiertas (la habitación tiene aire acondicionado) -> el aire caliente del resto
del edificio fluye hacia la sala de ordenadores -> sube la temperatura de entrada). Etc. El
El tipo de datos que usamos al crear la base de datos antes era contador, ahora tenemos un
tipo de datos y, por lo tanto, un nombre diferente para él. Se llama GAUGE. Hay más datos de este tipo
tipos:
- CONTADOR ya conocemos este
- GAUGE acabamos de aprender este
- DERIVAR
- ABSOLUTO
Los dos tipos adicionales son DERIVADOS y ABSOLUTOS. Absolute se puede utilizar como contador con
una diferencia: RRDtool asume que el contador se reinicia cuando se lee. Es decir: su delta es
conocido sin cálculo por RRDtool mientras que RRDtool necesita calcularlo para el contador
escribe. Ejemplo: nuestro primer ejemplo (12345, 12357, 12363, 12363) se leería: desconocido, 12, 6,
0. El resto de los cálculos siguen siendo los mismos. El otro, derivar, es como un contador.
A diferencia del contador, también puede disminuir, por lo que puede tener un delta negativo. De nuevo, el resto de
los cálculos siguen siendo los mismos.
Probemos todos:
rrdtool crear todo.rrd --start 978300900 \
DS: a: CONTADOR: 600: U: U \
DS: b: CALIBRE: 600: U: U \
DS: c: DERIVE: 600: U: U \
DS: d: ABSOLUTO: 600: U: U \
RRA: PROMEDIO: 0.5: 1: 10
rrdtool actualizar all.rrd \
978301200:300:1:600:300 \
978301500:600:3:1200:600 \
978301800:900:5:1800:900 \
978302100:1200:3:2400:1200 \
978302400:1500:1:2400:1500 \
978302700:1800:2:1800:1800 \
978303000:2100:4:0:2100 \
978303300:2400:6:600:2400 \
978303600:2700:4:600:2700 \
978303900:3000:2:1200:3000
rrdtool gráfico all1.png -s 978300600 -e 978304200 -h 400 \
DEF: linea = all.rrd: a: PROMEDIO LINE3: linea # FF0000: "Line A" \
DEF: lineb = all.rrd: b: PROMEDIO LINE3: lineb # 00FF00: "Línea B" \
DEF: linec = all.rrd: c: PROMEDIO LINE3: linec # 0000FF: "Línea C" \
DEF: alineado = todo.rrd: d: PROMEDIO LINE3: alineado # 000000: "Línea D"
herramienta RRD bajo los Microscopio
· La línea A es un tipo COUNTER, por lo que debe incrementarse continuamente y RRDtool debe calcular
las diferencias. Además, RRDtool necesita dividir la diferencia por la cantidad de tiempo
transcurrido. Esto debería terminar como una línea recta en 1 (los deltas son 300, el tiempo es
300).
· La línea B es de tipo GAUGE. Estos son valores "reales", por lo que deben coincidir con los que ingresamos: a
una especie de ola.
· La línea C es de tipo DERIVE. Debe ser un contador que pueda disminuir. Lo hace entre
2400 y 0, con 1800 en el medio.
· La línea D es de tipo ABSOLUTO. Esto es como un contador, pero funciona con valores sin
calculando la diferencia. Los números son los mismos y como puede ver (con suerte) esto
tiene un resultado diferente.
Esto se traduce en los siguientes valores, comenzando a las 23:10 y terminando a las 00:10 el siguiente
día (donde "u" significa desconocido / sin trazar):
- Línea A: uu 1 1 1 1 1 1 1 1 1 u
- Línea B: u 1 3 5 3 1 2 4 6 4 2 u
- Línea C: uu 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 su PNG muestra todo esto, sabe que ha ingresado los datos correctamente, la herramienta RRD
ejecutable está funcionando correctamente, su visor no lo engaña y usted ingresó con éxito
el año 2000 :)
Puede intentar el mismo ejemplo cuatro veces, cada vez con solo una de las líneas.
Repasemos los datos nuevamente:
· Línea A: 300,600,900 y así sucesivamente. El contador delta es una constante de 300 y también lo es el tiempo.
delta. Un número dividido por sí mismo es siempre 1 (excepto cuando se divide por cero, que es
indefinido / ilegal).
¿Por qué se desconoce el primer punto? Sabemos lo que ponemos en la base de datos,
¿Derecha? Es cierto, pero no teníamos un valor para calcular el delta, por lo que no sabemos
donde empezamos. ¡Sería incorrecto suponer que comenzamos en cero y no lo hacemos!
· Línea B: No hay nada que calcular. Los números son como son.
· Línea C: Nuevamente, se desconoce el valor inicial. Se mantiene la misma historia que para la línea A. En
en este caso los deltas no son constantes, por lo tanto la línea tampoco lo es. Si pusiéramos
los mismos números en la base de datos que hicimos para la línea A, habríamos obtenido los mismos
línea. A diferencia del contador de tipos, este tipo puede disminuir y espero mostrarte más adelante por qué
esto marca la diferencia.
· Línea D: Aquí el dispositivo calcula los deltas. Por lo tanto, conocemos el primer delta y
está trazado. Tuvimos la misma entrada que con la línea A, pero el significado de esta entrada es
diferente y, por lo tanto, la línea es diferente. En este caso, los deltas aumentan cada vez
con 300. El delta de tiempo se mantiene constante en 300 y, por lo tanto, la división de los dos
da valores crecientes.
Para contrarrestar Envolturas
Hay algunos conceptos básicos más para mostrar. Aún quedan por cubrir algunas opciones importantes y
Todavía no he mirado las envolturas de mostrador. Primero la envoltura del mostrador: En nuestro automóvil notamos que el
El contador muestra 999987. Viajamos 20 km y el contador debería ir a 1000007. Desafortunadamente,
solo hay seis dígitos en nuestro contador, por lo que realmente muestra 000007. Si trazáramos eso
en un tipo DERIVE, significaría que el contador se retrasó 999980 km. No fue, y
tiene que haber alguna protección para esto. Esta protección solo está disponible para el tipo
COUNTER que debería usarse para este tipo de mostrador de todos modos. ¿Como funciona? Escribe
El contador nunca debe disminuir y, por lo tanto, RRDtool debe asumir que está envuelto si lo hace
¡disminución! Si el delta es negativo, esto se puede compensar agregando el máximo
valor del contador + 1. Para nuestro coche esto sería:
Delta = 7 - 999987 = -999980 (en lugar de 1000007-999987 = 20)
Delta real = -999980 + 999999 + 1 = 20
En el momento de redactar este documento, RRDtool conoce contadores de 32 bits o
64 bits de tamaño. Estos contadores pueden manejar los siguientes valores diferentes:
- 32 bits: 0 .. 4294967295
- 64 bits: 0 .. 18446744073709551615
Si estos números le parecen extraños, puede verlos en su forma hexadecimal:
- 32 bits: 0 .. FFFFFFFF
- 64 bits: 0 .. FFFFFFFFFFFFFFFF
RRDtool maneja ambos contadores de la misma manera. Si ocurre un desbordamiento y el delta sería
negativo, RRDtool primero agrega el máximo de un pequeño contador + 1 al delta. Si el delta
sigue siendo negativo, tenía que ser el gran mostrador el que envolvía. Suma el máximo posible
valor del contador grande + 1 y reste el valor pequeño agregado erróneamente.
Existe un riesgo en esto: suponga que el mostrador grande se envuelve mientras agrega un delta enorme,
Teóricamente, podría suceder que agregar el valor más pequeño haría que el delta fuera positivo.
En este improbable caso, los resultados no serían correctos. El aumento debería ser casi tan
alto como el valor de contador máximo para que eso suceda, por lo que es probable que tenga
varios otros problemas también y este problema en particular ni siquiera valdría la pena
pensando en. Sin embargo, incluí un ejemplo, para que puedas juzgar por ti mismo.
La siguiente sección le ofrece algunos ejemplos numéricos de contraataques. Intenta hacer el
cálculos usted mismo o simplemente créame si su calculadora no puede manejar los números :)
Números de corrección:
- 32 bits: (4294967295 + 1) = 4294967296
- 64 bits: (18446744073709551615 + 1)
- corrección1 = 18446744069414584320
Antes: 4294967200
Incremento: 100
Debería convertirse en: 4294967300
Pero realmente es: 4
Delta: -4294967196
Corrección1: -4294967196 + 4294967296 = 100
Antes: 18446744073709551000
Incremento: 800
Debería convertirse en: 18446744073709551800
Pero realmente es: 184
Delta: -18446744073709550816
Corrección1: -18446744073709550816
+ 4294967296 = -18446744069414583520
Corrección2: -18446744069414583520
+ = 18446744069414584320 800
Antes: 18446744073709551615 (valor máximo)
Incremento: 18446744069414584320 (incremento absurdo, mínimo para
Debería ser: 36893488143124135935 este ejemplo para que funcione)
Pero realmente es: 18446744069414584319
Delta: -4294967296
Corrección1: -4294967296 + 4294967296 = 0
(no negativo -> sin corrección2)
Antes: 18446744073709551615 (valor máximo)
Aumento: 18446744069414584319 (un aumento menos)
Debería convertirse en: 36893488143124135934
Pero realmente es: 18446744069414584318
Delta: -4294967297
Corrección1: -4294967297 + 4294967296 = -1
Corrección2: -1 + 18446744069414584320 = 18446744069414584319
Como puede ver en los dos últimos ejemplos, necesita números extraños para que RRDtool falle
(siempre que esté libre de errores, por supuesto), por lo que esto no debería suceder. Sin embargo, SNMP o lo que sea
método que elija para recopilar los datos, también puede informar números incorrectos ocasionalmente. Nosotros
no puede evitar todos los errores, pero hay algunas cosas que podemos hacer. La RRDtool "crear"
El comando toma dos parámetros especiales para esto. Definen el mínimo y el máximo permitido
valores. Hasta ahora, usábamos "U", que significa "desconocido". Si proporciona valores para uno o ambos
de ellos y si RRDtool recibe puntos de datos que están fuera de estos límites, ignorará
esos valores. Para un termómetro en grados Celsius, el mínimo absoluto es un poco menos
-273. Para mi enrutador, puedo asumir que este mínimo es mucho más alto, por lo que lo establecería en 10,
donde, como temperatura máxima, la establecería en 80. Una mayor y el dispositivo se apagaría
de orden.
Para la velocidad de mi automóvil, nunca esperaría números negativos y tampoco esperaría
una velocidad superior a 230. Cualquier otra cosa, y debe haber habido un error. Recuerda el
lo contrario no es cierto, si los números pasan esta verificación, no significa que sean
correcto. Siempre juzgue el gráfico con una buena dosis de sospecha si le parece extraño.
Data Remuestreo
Una característica importante de RRDtool aún no se ha explicado: es prácticamente imposible
recopile datos e introdúzcalos en RRDtool en intervalos exactos. RRDtool por lo tanto interpola
los datos, por lo que se almacenan en intervalos exactos. Si no sabe lo que esto significa o cómo
funciona, entonces aquí está la ayuda que busca:
Suponga que un contador aumenta exactamente en uno por cada segundo. Quieres medirlo en 300
intervalos de segundos. Debe recuperar valores que estén exactamente separados por 300. Sin embargo, debido a
En diversas circunstancias, llega unos segundos tarde y el intervalo es 303. El delta
también sea 303 en ese caso. Obviamente, RRDtool no debería poner 303 en la base de datos y hacer
cree que el contador aumentó en 303 en 300 segundos. Aquí es donde RRDtool
interpola: altera el valor 303 como si se hubiera almacenado antes y
ser 300 en 300 segundos. La próxima vez estará en el momento exacto. Esto significa que el
intervalo actual es 297 segundos y también el contador aumentó en 297. De nuevo, RRDtool
interpola y almacena 300 como debería ser.
en el RRD en realidad
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
Creemos dos bases de datos idénticas. He elegido el intervalo de tiempo de 920805000 a 920805900 como
esto va muy bien con los números de ejemplo.
rrdtool crear seconds1.rrd \
--comienza 920804700 \
DS: segundos: CONTADOR: 600: U: U \
RRA: PROMEDIO: 0.5: 1: 24
Hacer una copia
para Unix: cp seconds1.rrd seconds2.rrd
para Dos: copiar seconds1.rrd seconds2.rrd
para vms: ¿cómo lo sabría :)
Pon algunos datos
rrdtool actualizar segundos1.rrd \
920805000:000 920805300:300 920805600:600 920805900:900
rrdtool actualizar segundos2.rrd \
920805000:000 920805300:300 920805603:603 920805900:900
Crear salida
rrdtool gráfico segundos1.png \
--inicio 920804700 --fin 920806200 \
--altura 200 \
- límite superior 1.05 - límite inferior 0.95 - rígido \
DEF: segundos = segundos1.rrd: segundos: PROMEDIO \
CDEF: desconocido = segundos, UN \
LINE2: segundos # 0000FF \
AREA: desconocida # FF0000
rrdtool gráfico segundos2.png \
--inicio 920804700 --fin 920806200 \
--altura 200 \
- límite superior 1.05 - límite inferior 0.95 - rígido \
DEF: segundos = segundos2.rrd: segundos: PROMEDIO \
CDEF: desconocido = segundos, UN \
LINE2: segundos # 0000FF \
AREA: desconocida # FF0000
Vea ambas imágenes juntas (agréguelas a su archivo index.html) y compare. Ambas gráficas
debería mostrar lo mismo, a pesar de que la entrada sea diferente.
ENVOLVER
Ahora es el momento de concluir este tutorial. Cubrimos todos los aspectos básicos para que pueda
trabajar con RRDtool y leer la documentación adicional disponible. Hay mucho mas
para descubrir RRDtool y encontrará más y más usos para este paquete. Usted puede
cree gráficos fácilmente usando solo los ejemplos proporcionados y usando solo RRDtool. Tú también puedes
use una de las interfaces de RRDtool que están disponibles.
LISTA DE CORREO
Recuerde suscribirse a la lista de correo RRDtool. Incluso si no responde a los correos
que vienen, te ayudan a ti y al resto de usuarios. Muchas de las cosas que se
sobre MRTG (y por lo tanto sobre RRDtool) que aprendí mientras leía la lista sin
publicar en él. No necesitaba hacer las preguntas básicas, ya que se responden en las preguntas frecuentes.
(¡léelo!) y en varios correos de otros usuarios. Con miles de usuarios en todo el
mundo, siempre habrá personas que hagan preguntas que puedas responder porque lees
esta y otra documentación y no lo hicieron.
Use rrdtutorial en línea usando los servicios de onworks.net