Este es el comando rrdgraph_libdbi 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
rrdgraph_libdbi: obtención de datos para graficar en el gráfico rrdtool a través de libdbi
SINOPSIS
= sql // conductor> / = / ...
[/ rrdminstepsize = ] [/ rrdfillmissing = que falta n segundos>] //
/ columna> / propuesta de columna> [/ derivar] / cláusula 1> /.../ cláusula n>
DESCRIPCIÓN
Este pseudo-rrd-filename define una fuente de datos sql:
sql //
prefijo de cookie mágico para una fuente de datos de tipo libdbi
<libdbi conductor>
qué controlador libdbi usar (por ejemplo: mysql)
=
define los parámetros necesarios para conectarse a la base de datos con el controlador libdbi dado
(Estos controladores dependen de libdbi; para obtener más detalles, consulte la documentación del controlador de libdbi).
/ rrdminstepsize=<mínimo paso tamaño>
define el número mínimo de la longitud de paso que se utiliza para graficar (predeterminado: 300 segundos)
/ rrdfillmissing=<fill que falta segundos>
define el número de segundos para completar con el último valor para evitar cuadros de NaN debido a la fluctuación de la inserción de datos (predeterminado: 0 segundos)
define la tabla de la que se obtiene el conjunto de resultados.
Si es necesario obtener datos de varias tablas, estas tablas se pueden definir separando los nombres de las tablas con un "+".
La codificación de tipo hexadecimal a través de% xx se traduce al valor real, use %% para usar%
<[*] unixtimestamp columna>
define la columna de E tableE que contiene la marca de tiempo de Unix
- si este es un campo DATETIME en la base de datos, entonces el prefijo con '*' inicial
La codificación de tipo hexadecimal a través de% xx se traduce al valor real, use %% para usar%
<datos propuesta de columna>
define la columna de E tableE que contiene la columna de valor, que debe graficarse
La codificación de tipo hexadecimal a través de% xx se traduce al valor real, use %% para usar%
/derivar
define que el valor de datos utilizado debe ser el delta de los 2 valores consecutivos (para simular fuentes de datos de tipo COUNTER o DERIVE)
/ cláusula (s)>
define una (o más) cláusulas where que se unen con AND para filtrar las entradas en el mesa
La codificación de tipo hexadecimal a través de% xx se traduce al valor real, use %% para usar%
los nombres de columna de valor devuelto, que se pueden utilizar como nombres-ds, son:
min, avg, max, contar y sigma
se devuelven para usarse como ds-names en su definición de DS.
La razón para usar esto es que si la función de consolidación se usa para min / avg y max, entonces el motor se usa varias veces.
Y esto da como resultado las mismas sentencias SQL utilizadas varias veces
EJEMPLOS
Aquí un ejemplo de una tabla en una base de datos MySQL:
Información de conexión de base de datos
dbhost = 127.0.0.1
usuario = rrd
contraseña = secreto
nombrebd = rrd
aquí la mesa:
CREAR TABLA RRDValue (
ID de clave RRD Empezando(20) NO NULO,
Sello de tiempo Unix int(11) NO NULO,
valor doble predeterminado NO NULO,
CLAVE PRIMARIA (RRDKeyID, UnixTimeStamp)
);
y el RRDKeyID para el que queremos graficar es: 1141942900757789274
El pseudo nombre de archivo rrd para acceder a esto es:
"sql // mysql / host = 127.0.0.1 / dbname = rrd / username = rrd / password = secret // RRDValue / UnixTimeStamp
/ value / RRDKeyID = 1141464142203608274 "
Para ilustrar esto, aquí un comando para crear un gráfico que contiene los valores reales.
DS_BASE = "sql // mysql / host = 127.0.0.1 / dbname = rrd / username = rrd / password = passwd // RRDValue / UnixTimeStamp / value / RRDKeyID = 1141942900757789274"
rrdtool graph test.png --imgformat = PNG --start = -1day --end = + 3hours --width = 1000 --height = 600 \
"DEF: min = $ DS_BASE: min: PROMEDIO" \
"LINE1: min # FF0000: value" \
"DEF: avg = $ DS_BASE: avg: AVERAGE" \
"LINE1: avg # 00FF00: average" \
"DEF: max = $ DS_BASE: max: AVERAGE" \
"LINE1: max # FF0000: max" \
"DEF: sigma = $ DS_BASE: sigma: PROMEDIO" \
"CDEF: superior = promedio, 4, sigma, *, +" \
"LINE1: superior # 0000FF: +4 sigma" \
"CDEF: inferior = promedio, 4, sigma, *, -" \
"LINE1: inferior # 0000FF: -4 sigma"
NOTAS
* Naturalmente, también puede utilizar cualquier otro tipo de controlador que admita libdbi, por ejemplo, postgres,
...
* Por la forma en que se une la fuente de datos, también debería ser posible hacer uniones sobre
diferentes mesas
(separe las tablas con "," en la tabla y agregue en las cláusulas WHERE la tabla se une igual.
¡¡¡Esto no ha sido probado !!!)
* También debería ser relativamente sencillo agregar a la base de datos utilizando la misma fuente de datos
cadena.
Esto no se ha implementado ...
* Las funciones de agregación se ignoran y en su lugar se utilizan varias columnas de datos
para evitar consultar el mismo SQL varias veces cuando el mínimo, el promedio y el máximo son
necesario para graficar ...
* para la eficiencia de la base de datos, debería pensar en tener 2 tablas, una que contenga valores históricos
y el otro con los últimos datos.
Esta segunda tabla debe mantenerse pequeña para permitir la menor cantidad de bloqueo de SQL
Declaraciones.
Con mysql incluso puede usar myisam table-type para el primero e InnoDB para el segundo.
Esto es especialmente interesante, ya que con tablas con más de 100 millones de filas, myisam es mucho más pequeño
luego InnoDB.
* Para depurar las declaraciones SQL, configure la variable de entorno RRDDEBUGSQL y el SQL real
declaraciones y el tiempo se imprime en stderr.
Performance cuestiones con MySQL backend
LibDBI tiene un gran problema de rendimiento cuando recupera datos de un servidor MySQL. Rendimiento
el impacto se basa exponencialmente en la cantidad de valores que recupera de la base de datos. Para
Por ejemplo, tomaría más de 2 segundos graficar 5DS en 150 horas de datos con un
precisión de 5 minutos (contra 100 ms cuando los datos provienen de un archivo RRD). Este error ha sido
corregido en la última versión de LibDBI (aún no publicado). En ese momento, necesitaría
compile libdbi y libdbi-drivers desde el repositorio CVS para solucionarlo. Puedes encontrar más
información sobre este hilo de la lista de correo libdbi-users:
http://sourceforge.net/mailarchive/message.php? msg_id = 30320894
Utilice rrdgraph_libdbi en línea utilizando los servicios de onworks.net