Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Conexión a un origen de datos de MySQL

Modo de enfoque
Conexión a un origen de datos de MySQL - Amazon Managed Grafana

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.

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 en la documentación de los marcos de datos de Grafana.

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

  1. Elija el icono de Grafana en el encabezado superior para abrir el menú lateral.

  2. En el menú lateral, en el enlace de Paneles, encontrará un enlace llamado Orígenes de datos.

  3. Elija el botón + Agregar origen de datos en el encabezado superior.

  4. 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 configurado en MySQL (Grafana v5.4+).

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.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.