Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Agregue el origen de datos de MySQL para poder consultar y visualizar los datos de una base de datos compatible con MySQL.
importante
La versión 8.0 de Grafana cambia la estructura de datos subyacente de marcos de datos de los orígenes de datos de MySQL, Postgres y Microsoft SQL Server. Como consecuencia, el resultado de una consulta de serie temporal se devuelve en un formato ancho. Para más información, consulte Wide format
Para que las visualizaciones funcionen como antes, es posible que tenga que hacer algunas migraciones manuales. Una solución está documentada en Github en Postgres/MySQL/MSSQL: Un cambio radical en la versión 8.0 relacionado con las consultas de series temporales y el orden de las columnas de datos
Adición del origen de datos
-
Elija el icono de Grafana en el encabezado superior para abrir el menú lateral.
-
En el menú lateral, en el enlace de Paneles, encontrará un enlace llamado Orígenes de datos.
-
Elija el botón + Agregar origen de datos en el encabezado superior.
-
Seleccione MySQL en la lista desplegable Tipo.
Opciones de origen de datos
Nombre | Descripción |
---|---|
Name
|
El nombre del origen de datos. Así es como se ve el origen de datos en los paneles y las consultas. |
Default
|
El origen de datos predeterminado significa que se preseleccionará para los nuevos paneles. |
Host
|
La dirección IP o el nombre de host y el puerto opcional de su instancia de MySQL. |
Database
|
Nombre de la base de datos MySQL. |
User
|
Nombre de usuario o inicio de sesión de la base de datos. |
Password
|
Contraseña del usuario de la base de datos. |
Max open
|
El número máximo de conexiones abiertas a la base de datos. El valor predeterminado es unlimited (Grafana v5.4 o posteriores). |
Max idle
|
El número máximo de conexiones en el grupo de conexiones inactivas. El valor predeterminado es 2 (Grafana v5.4 o posteriores). |
Max lifetime
|
La cantidad máxima de tiempo en segundos que se puede reutilizar. El valor predeterminado es 14400 /4 horas. Siempre debe ser inferior al valor de wait_timeout |
Intervalo de tiempo mínimo
Un límite inferior para las variables $_interval
$_interval_ms
. Se recomienda que se establezca según la frecuencia de escritura, por ejemplo, 1m
si los datos se escriben cada minuto. Esta opción también se puede anular o configurar en un panel, en las opciones de orígenes de datos. Este valor debe tener el formato de un número seguido de un identificador de tiempo válido, por ejemplo, 1m
(1 minuto) o 30s
(30 segundos). Se admiten los siguientes identificadores de tiempo.
Identificador | Descripción |
---|---|
y
|
Año |
M
|
Mes |
w
|
Semana |
d
|
Día |
h
|
Hora |
m
|
Minuto |
s
|
Segundo |
ms
|
Milisegundos |
Permisos de usuario de base de datos
importante
Al usuario de la base de datos que especifique al agregar el origen de datos se le deben conceder solo los permisos SELECT en la base de datos y las tablas especificadas que se quiere consultar. Grafana no valida que la consulta sea segura. La consulta puede incluir cualquier instrucción SQL. Por ejemplo, se ejecutarán instrucciones como USE otherdb;
y DROP TABLE
user;
. Para evitar esto, le recomendamos crear un usuario de MySQL específico con permisos restringidos.
El siguiente ejemplo de código muestra la creación de un usuario de MySQL específico con permisos restringidos.
CREATE USER 'grafanaReader' IDENTIFIED BY 'password';
GRANT SELECT ON mydatabase.mytable TO 'grafanaReader';
Para conceder acceso a más bases de datos y tablas, si lo desea, puede utilizar caracteres comodín (*
) en lugar de bases de datos o tablas.
Editor de consultas
Encontrará el editor de consultas MySQL en la pestaña de métricas del modo de edición de un panel. Para entrar en el modo de edición, elija el título del panel y, a continuación, Editar.
El editor de consultas tiene un vínculo SQL generativo que aparece una vez ejecutada la consulta, en el modo de edición de panel. Si lo elige, se ampliará y mostrará la cadena SQL interpolada sin procesar que se ejecutó.
Selección de la tabla, la columna de tiempo y la columna de métricas (FROM)
Cuando entre en el modo de edición por primera vez o agregue una nueva consulta, Grafana intentará rellenar previamente el generador de consultas con la primera tabla que tenga una columna de marca de tiempo y una columna numérica.
En el campo FROM, Grafana sugerirá tablas que se encuentran en la base de datos configurada. Para seleccionar una tabla o vista de otra base de datos a la que tenga acceso el usuario de la base de datos, puede ingresar manualmente un nombre completo (tabla.basededatos), como otherDb.metrics
.
El campo de la columna Tiempo hace referencia al nombre de la columna que contiene los valores de tiempo. La selección de un valor para el campo de la columna Métrica es opcional. Si se selecciona un valor, el campo de la columna Métrica se utilizará como nombre de la serie.
Las sugerencias de las columnas de métricas solo contendrán columnas con un tipo de datos de texto (text, tinytext, mediumtext, longtext, varchar, char). Si quiere utilizar una columna con un tipo de datos diferente como columna de métricas, puede ingresar el nombre de la columna con una combinación CAST(numericColumn as CHAR)
. También puede ingresar expresiones SQL arbitrarias en el campo de la columna de métricas que den como resultado un tipo de datos de texto, como CONCAT(column1, " ",
CAST(numericColumn as CHAR))
.
Columnas y funciones de agregación (SELECT)
En la fila SELECT
, puede especificar qué columnas y funciones quiere utilizar. En el campo de columna, puede escribir expresiones arbitrarias en lugar de un nombre de columna, como column1 * column2 /
column3
.
Si utiliza funciones de agregación, debe agrupar el conjunto de resultados. El editor agregará automáticamente una operación GROUP BY time
si agrega una función de agregación.
Para poder agregar más columnas de valores, elija el botón más y seleccione Column
en el menú. Las columnas de valores múltiples se representarán como series independientes en el panel de gráficos.
Filtrado de datos (WHERE)
Para agregar un filtro, elija el icono del signo más que se sitúa a la derecha de la condición WHERE
. Para poder eliminar los filtros, elija el filtro y seleccione Remove
. Se agrega automáticamente un filtro para el intervalo de tiempo seleccionado actualmente a las consultas nuevas.
Agrupación por
Para agrupar por tiempo o cualquier otra columna, elija el icono con el signo más situado al final de la fila AGRUPAR POR. La lista desplegable de sugerencias solo mostrará las columnas de texto de la tabla actualmente seleccionada, pero puede ingresar manualmente cualquier columna. Para poder eliminar el grupo, seleccione el elemento y, luego, seleccione Remove
.
Si agrega alguna agrupación, todas las columnas seleccionadas deben tener aplicada una función de agregación. El generador de consultas agregará automáticamente funciones de agregación a todas las columnas sin funciones de agregación cuando agregue agrupaciones.
Relleno de discontinuidades
Grafana puede rellenar los valores faltantes cuando agrupa por tiempo. La función de tiempo acepta dos argumentos. El primer argumento es el plazo de tiempo por el que quiere agrupar y el segundo argumento es el valor con el que quiere que Grafana rellene los elementos que faltan.
Modo Editor de texto (sin procesar)
Para poder cambiar al modo editor de consultas sin procesar, seleccione el icono de la hamburguesa y seleccione Cambiar modo de editor o seleccione Editar SQL debajo de la consulta.
nota
Si utiliza el editor de consultas sin procesar, asegúrese de que la consulta tenga ORDER BY time
, como mínimo, y un filtro en función del intervalo de tiempo devuelto.
Macros
Para simplificar la sintaxis y permitir partes dinámicas, como los filtros de intervalo de fechas, la consulta puede contener macros.
Ejemplo de macros | Descripción |
---|---|
$__time(dateColumn)
|
Se sustituirá por una expresión para convertirla en una marca de tiempo de UNIX y cambiar el nombre de la columna a time_sec , por ejemplo, UNIX_TIMESTAMP(dateColumn) as time_sec. |
$__timeEpoch(dateColumn)
|
Se sustituirá por una expresión para convertirla en una marca de tiempo de UNIX y cambiar el nombre de la columna a time_sec , por ejemplo, UNIX_TIMESTAMP(dateColumn) as time_sec. |
$__timeFilter(dateColumn)
|
Se sustituirá por un filtro de intervalo de tiempo con el nombre de columna especificado. Por ejemplo, dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983). |
$__timeFrom()
|
Se sustituirá por el inicio de la selección de tiempo actualmente activa. Por ejemplo, FROM_UNIXTIME(1494410783). |
$__timeTo()
|
Se sustituirá por el fin de la selección de tiempo actualmente activa. Por ejemplo, FROM_UNIXTIME(1494410983). |
$__timeGroup(dateColumn,'5m')
|
Se sustituirá por una expresión utilizable en la cláusula AGRUPAR POR. Por ejemplo, cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)300 as signed),* |
$__timeGroup(dateColumn,'5m', 0)
|
Igual que la fila anterior, pero con un parámetro de relleno, por lo que Grafana agregará los puntos que falten en esa serie y usará el valor 0. |
$__timeGroup(dateColumn,'5m', NULL)
|
Igual que el anterior, pero se usará NULO como valor para los puntos faltantes. |
$__timeGroup(dateColumn,'5m', previous)
|
Igual que el anterior, pero el valor anterior de esa serie se utilizará como valor de relleno si no se ha visto ningún valor, pero se utilizará NULL (solo disponible en Grafana 5.3+). |
$__timeGroupAlias(dateColumn,'5m')
|
Se sustituirá de forma idéntica a $__timeGroup , pero con un alias de columna agregado (disponible solo en Grafana 5.3 o posteriores). |
$__unixEpochFilter(dateColumn) |
Se sustituirá por un filtro de intervalo de tiempo con el nombre de columna especificado con las horas representadas como marca de tiempo de Unix. Por ejemplo, dateColumn > 1494410783 AND dateColumn <
1494497183 . |
$__unixEpochFrom() |
Se sustituirá por el inicio de la selección de tiempo actualmente activa como una marca de tiempo de Unix. Por ejemplo, 1494410783 . |
$__unixEpochTo() |
Se sustituirá por el final de la selección de tiempo actualmente activa como una marca de tiempo de Unix. Por ejemplo, 1494497183 . |
$__unixEpochNanoFilter(dateColumn) |
Se sustituirá por un filtro de intervalo de tiempo con el nombre de columna especificado con las horas representadas como marca de tiempo de nanosegundos. Por ejemplo, dateColumn > 1494410783152415214 AND
dateColumn < 1494497183142514872 . |
$__unixEpochNanoFrom() |
Se sustituirá por el inicio de la selección de tiempo actualmente activa como una marca de tiempo de nanosegundos. Por ejemplo, 1494410783152415214 . |
$__unixEpochNanoTo() |
Se sustituirá por el fin de la selección de tiempo actualmente activa como una marca de tiempo de nanosegundos. Por ejemplo, 1494497183142514872 . |
$__unixEpochGroup(dateColumn,"5m",
[fillmode]) |
Igual que $__timeGroup , pero para las horas almacenadas como marca de tiempo de Unix (disponible solo en Grafana 5.3 o posteriores). |
$__unixEpochGroupAlias(dateColumn,"5m",
[fillmode])` |
Igual que el anterior, pero también agrega un alias de columna (disponible solo en Grafana 5.3 o posteriores). |
El editor de consultas tiene un enlace SQL generativo que aparece una vez ejecutada la consulta, en el modo de edición de panel. Si lo elige, se ampliará y mostrará la cadena SQL interpolada sin procesar que se ejecutó.
Consultas de tablas
Si la opción de consulta Formatear como está establecida en Tabla, básicamente puede hacer cualquier tipo de consulta SQL. El panel de tablas mostrará automáticamente los resultados de las columnas y filas que devuelva la consulta.
En el siguiente código se muestra una consulta de ejemplo.
SELECT
title as 'Title',
user.login as 'Created By' ,
dashboard.created as 'Created On'
FROM dashboard
INNER JOIN user on user.id = dashboard.created_by
WHERE $__timeFilter(dashboard.created)
Puede controlar el nombre de las columnas del panel Tabla mediante la sintaxis de selección de columnas de SQL as
normal.
Consultas de series temporales
Si establece Formatear como en Serie temporal, para su uso en un panel de gráficos, por ejemplo, la consulta debe devolver una columna con el nombre time
que devuelva una fecha y hora de SQL o cualquier tipo de datos numéricos que representen una época de Unix. Cualquier columna excepto time
y metric
se trata como una columna de valores. Puede devolver una columna con el nombre metric
que se utilice como nombre de métrica para la columna de valores. Si devuelve columnas de valores múltiples y una columna denominada metric
, esta columna se utiliza como prefijo para el nombre de la serie (disponible solo en Grafana 5.3 o posteriores).
Los conjuntos de resultados de las consultas de serie temporal se deben ordenar por tiempo.
En el siguiente ejemplo de código se muestra la columna metric
.
SELECT
$__timeGroup(time_date_time,'5m'),
min(value_double),
'min' as metric
FROM test_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
El siguiente código de ejemplo muestra el uso del parámetro de rellenado en la macro $__timeGroup para convertir los valores nulos en cero.
SELECT
$__timeGroup(createdAt,'5m',0),
sum(value_double) as value,
measurement
FROM test_data
WHERE
$__timeFilter(createdAt)
GROUP BY time, measurement
ORDER BY time
El siguiente ejemplo de código muestra varias columnas.
SELECT
$__timeGroup(time_date_time,'5m'),
min(value_double) as min_value,
max(value_double) as max_value
FROM test_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time
No se admite un grupo dinámico por tiempo según el intervalo de tiempo y el ancho del panel.
Plantillas
En lugar de codificar elementos como el nombre del servidor, la aplicación y el sensor en las consultas de métricas, puede utilizar variables en su lugar. Las variables se muestran como cuadros de selección desplegables en la parte superior del panel de control. Puede usar estos cuadros desplegables para cambiar los datos que se muestran en su panel de control.
Para obtener más información acerca de las plantillas y sus variables, consulte Plantillas.
Variable de consulta
Si agrega una variable de plantilla del tipo Query
, puede escribir una consulta de MySQL que devuelva elementos como nombres de mediciones, nombres de clave o valores de clave que se muestran en un cuadro de selección desplegable.
Por ejemplo, puede tener una variable que contenga todos los valores de la columna hostname
en una tabla si especifica una consulta como esta en la configuración de consulta de la variable de plantilla.
SELECT hostname FROM my_host
Una consulta puede devolver varias columnas y Grafana creará automáticamente una lista a partir de ellas. Por ejemplo, la siguiente consulta devolverá una lista con los valores de hostname
y hostname2
.
SELECT my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city
Para utilizar macros que dependen del intervalo de tiempo, como $__timeFilter(column)
, en su consulta, el modo de actualización de la variable de plantilla debe estar establecido en Al cambiar el intervalo de tiempo.
SELECT event_name FROM event_log WHERE $__timeFilter(time_column)
Otra opción es una consulta que puede crear una variable de clave-valor. La consulta debe devolver dos columnas denominadas __text
y __value
. El valor de la columna __text
debe ser único (si no lo es, se utilizará el primer valor). Las opciones de la lista desplegable tendrán un texto y un valor para que pueda asignar un nombre descriptivo como texto y un ID como valor.
El siguiente ejemplo de código muestra una consulta con hostname
como texto y id
como valor.
SELECT hostname AS __text, id AS __value FROM my_host
También puede crear variables anidadas. Por ejemplo, si tuviera otra variable llamada region
. Podría hacer que la variable de hosts muestre solo los hosts de la región actualmente seleccionada con una consulta como esta (si region
es una variable de varios valores, utilice el operador de comparación IN
en lugar de =
para que coincida con varios valores).
SELECT hostname FROM my_host WHERE region IN($region)
Uso de __searchFilter
para filtrar los resultados de la variable de consulta
Si se utiliza __searchFilter
en el campo de consulta, se filtrará el resultado de la consulta en función de lo que escriba el usuario en el cuadro de selección desplegable. Si el usuario no ha ingresado nada, el valor predeterminado de __searchFilter
es %
.
nota
Es importante que encierre la expresión __searchFilter
entre comillas, ya que Grafana no lo hará.
El siguiente ejemplo muestra cómo utilizar __searchFilter
como parte del campo de consulta para permitir la búsqueda de hostname
mientras el usuario escribe en el cuadro de selección desplegable.
SELECT hostname FROM my_host WHERE hostname LIKE '$__searchFilter'
Uso de variables en consultas
Desde Grafana 4.3.0 hasta 4.6.0, las variables de plantilla siempre se encierran entre comillas de manera automática, por lo que, si se trata de un valor de cadena, no las ponga entre comillas en las cláusulas where.
A partir de Grafana 4.7.0, los valores de las variables de plantilla solo se encierran entre comillas cuando la variable de plantilla es multi-value
.
Si se trata de una variable de varios valores, utilice el operador de comparación IN
en lugar de =
para que coincida con varios valores.
Existen dos sintaxis:
Ejemplo de $<varname>
con una variable de plantilla llamada hostname
:
SELECT
UNIX_TIMESTAMP(atimestamp) as time,
aint as value,
avarchar as metric
FROM my_table
WHERE $__timeFilter(atimestamp) and hostname in($hostname)
ORDER BY atimestamp ASC
Ejemplo de [[varname]]
con una variable de plantilla llamada hostname
:
SELECT
UNIX_TIMESTAMP(atimestamp) as time,
aint as value,
avarchar as metric
FROM my_table
WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp ASC
Desactivación de las comillas para variables de varios valores
Grafana crea automáticamente una cadena entrecomillada y separada por comas para variables de varios valores. Por ejemplo, si server01
y server02
se seleccionan, se formateará como 'server01', 'server02'
. Para desactivar las comillas, use la opción de formato CSV para las variables.
${servers:csv}
Para obtener más información sobre las opciones de formato de variables, consulte Opciones avanzadas de formato de variables.
Anotaciones
Puede utilizar las anotaciones para superponer información detallada de los eventos sobre los gráficos. Las consultas de anotación se agregan a través del menú Panel o la vista Anotaciones. Para obtener más información, consulte .
En el siguiente código de ejemplo, se muestra una consulta que utiliza una columna de tiempo con valores de época.
SELECT
epoch_time as time,
metric1 as text,
CONCAT(tag1, ',', tag2) as tags
FROM
public.test_data
WHERE
$__unixEpochFilter(epoch_time)
En el siguiente código de ejemplo, se muestra una consulta de región que utiliza columnas de tiempo y tiempo de fin con valores de época.
nota
Disponible solo en Grafana v6.6 y posteriores.
SELECT
epoch_time as time,
epoch_timeend as timeend,
metric1 as text,
CONCAT(tag1, ',', tag2) as tags
FROM
public.test_data
WHERE
$__unixEpochFilter(epoch_time)
En el siguiente código de ejemplo, se muestra una consulta que utiliza una columna de tiempo del tipo de datos de fecha y hora nativo de SQL.
SELECT
native_date_time as time,
metric1 as text,
CONCAT(tag1, ',', tag2) as tags
FROM
public.test_data
WHERE
$__timeFilter(native_date_time)
Nombre | Descripción |
---|---|
time
|
El nombre del tipo de date/time field. Could be a column with a native SQL date/time datos o el valor de época. |
timeend
|
Nombre opcional del tipo de date/time field. Could be a column with a native SQL date/time datos final o del valor de época. |
text
|
Campo de descripción del evento. |
tags
|
Nombre de campo opcional para utilizar en las etiquetas de eventos como una cadena separada por comas. |
Alertas
Las consultas de serie temporal deben funcionar en condiciones de alertas. Las consultas con formato de tabla aún no se admiten en las condiciones de las reglas de alerta.