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.
Connect a una fuente de datos PostgreSQL
Puede usar la fuente de datos de PostgreSQL para consultar y visualizar datos de sus bases de datos de PostgreSQL de Amazon Aurora.
importante
La versión 8 de Grafana cambia la estructura de datos subyacente de los marcos de datos de las fuentes de datos de Postgres, MySQL y Microsoft SQL Server. Como resultado, el resultado de una consulta de series temporales se devuelve en un formato ancho. Para obtener más información, consulte Formato ancho
En la versión 9 de Grafana, la fuente de datos de PostgreSQL configura el certificado raíz para conectarse a la base de datos de forma diferente que en las versiones anteriores. Si actualizas tu espacio de trabajo de la versión 8 a la 9, es posible que tengas que cambiar la forma de conectarte. Para obtener más información, consulte Solución de problemas con los espacios de trabajo actualizados.
Añadir la fuente de datos
-
Abre el menú lateral seleccionando el icono de Grafana en el encabezado superior.
-
En el menú lateral, debajo del icono de configuración, encontrarás un enlace a las fuentes de datos.
-
Pulse el botón + Añadir fuente de datos en el encabezado superior.
-
Seleccione PostgreSQL en la lista desplegable Tipo.
Opciones de fuente de datos
Nombre | Descripción |
---|---|
Name
|
El nombre de la fuente de datos. Así es como se ve la fuente de datos en los paneles y las consultas. |
Default
|
La fuente de datos predeterminada significa que se preseleccionará para los nuevos paneles. |
Host
|
La dirección IP o el nombre de host y el puerto opcional de la instancia de PostgreSQL. No incluya el nombre de la base de datos. La cadena de conexión para conectarse a Postgres no será correcta y provocará errores. |
Database
|
Nombre de la base de datos PostgreSQL. |
User
|
Nombre de usuario/nombre de usuario de la base de datos. |
Password
|
La contraseña del usuario de la base de datos |
SSL Mode
|
Esta opción determina si se negociará una conexión SSL TCP/IP segura con el servidor y con qué prioridad. |
Max open
|
El número máximo de conexiones abiertas a la base de datos, predeterminado unlimited (Grafana v5.4+). |
Max idle
|
El número máximo de conexiones en el grupo de conexiones inactivas, predeterminado 2 (Grafana v5.4+). |
Max lifetime
|
El tiempo máximo en segundos que se puede reutilizar una conexión, por defecto 14400 /4 horas (Grafana v5.4+). |
Version
|
Esta opción determina qué funciones están disponibles en el generador de consultas (solo disponible en Grafana 5.3+). |
TimescaleDB
|
TimescaleDB es una base de datos de series temporales creada como una extensión de PostgreSQL. Si está habilitada, Grafana utilizará time_bucket en la $__timeGroup macro y mostrará funciones agregadas específicas de TimescaleDB en el generador de consultas (solo disponible en Grafana 5.3+). |
Intervalo de tiempo mínimo
Límite inferior para las $_interval
$_interval_ms
variables. Se recomienda configurar 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 de control, en las opciones de fuentes 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 la base
importante
Al usuario de la base de datos que especifique al agregar la fuente de datos solo se le deben conceder los permisos SELECT en la base de datos y las tablas especificadas que desee consultar. Grafana no valida que la consulta sea segura. La consulta puede incluir cualquier sentencia SQL. Por ejemplo, se DROP TABLE user;
ejecutarían sentencias como DELETE FROM user;
y. Para evitar esto, le recomendamos encarecidamente que cree un usuario de PostgreSQL específico con permisos restringidos.
El siguiente código de ejemplo muestra la creación de un usuario de PostgreSQL específico con permisos restringidos.
CREATE USER grafanareader WITH PASSWORD 'password'; GRANT USAGE ON SCHEMA schema TO grafanareader; GRANT SELECT ON schema.table TO grafanareader;
Asegúrese de que el usuario no reciba ningún permiso no deseado del rol público.
Editor de consultas
Encontrará el editor de consultas de PostgreSQL en la pestaña de métricas del modo de edición del panel Graph o Singlestat. Para entrar en el modo de edición, elija el título del panel y, a continuación, edite.
El editor de consultas tiene un enlace SQL generado que aparece después de ejecutar una consulta, en el modo de edición de panel. Si lo eliges, se expandirá y mostrará la cadena SQL interpolada sin procesar que se ejecutó.
Seleccione la tabla, la columna de tiempo y la columna de métricas (FROM)
Cuando ingreses al modo de edición por primera vez o agregues 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 estén en la base de datos search_path
del usuario. Para seleccionar una tabla o vista que no esté en su lista, search_path
puede introducir manualmente un nombre completo (schema.table), como. public.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 columnas métricas solo contendrán columnas con un tipo de datos de texto (char, varchar, text). Para usar una columna con un tipo de datos diferente como columna métrica, puede introducir el nombre de la columna con una combinación:. ip::text
También puede introducir expresiones SQL arbitrarias en el campo de la columna métrica que den como resultado un tipo de datos de texto, comohostname || ' ' || container_name
.
Columnas, ventanas y funciones de agregación (SELECT)
En la SELECT
fila, puede especificar qué columnas y funciones desea utilizar. En el campo de columnas, puede escribir expresiones arbitrarias en lugar de un nombre de columna, comocolumn1 * column2 /
column3
.
Las funciones disponibles en el editor de consultas dependen de la versión de PostgreSQL que haya seleccionado al configurar la fuente de datos. Si utiliza funciones agregadas, debe agrupar el conjunto de resultados. Si agrega una función de agregado, el editor agregará automáticamente unaGROUP BY time
.
El editor intenta simplificar y unificar esta parte de la consulta.
Puede añadir más columnas de valores pulsando el botón con el signo más y seleccionando Columna en el menú. Las columnas de valores múltiples se trazarán como series independientes en el panel de gráficos.
Filtrar datos (DÓNDE)
Para añadir un filtro, selecciona el icono con el signo más situado a la derecha de la WHERE
condición. Para eliminar los filtros, elija el filtro y seleccione Eliminar. Se añade automáticamente un filtro para el intervalo de tiempo seleccionado actualmente a las consultas nuevas.
Agrupar por
Para agrupar por hora o por cualquier otra columna, selecciona el icono del signo más 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 introducir manualmente cualquier columna. Para eliminar el grupo, selecciona el elemento y, a continuación, selecciona Eliminar.
Si agrega alguna agrupación, todas las columnas seleccionadas deben tener aplicada una función de agregado. El generador de consultas añadirá automáticamente funciones de agregación a todas las columnas sin funciones de agregación cuando añada agrupaciones.
Relleno de huecos
Grafana gestionada por Amazon puede rellenar los valores que faltan al agrupar por tiempo. La función time acepta dos argumentos. El primer argumento es la ventana de tiempo por la que desea agrupar y el segundo argumento es el valor con el que desea que Grafana llene los elementos que faltan.
Modo editor de texto (RAW)
Puede cambiar al modo editor de consultas sin procesar seleccionando el icono de la hamburguesa y seleccionando Cambiar modo editor o seleccionando Editar SQL debajo de la consulta.
nota
Si utilizas el editor de consultas sin procesar, asegúrate de que la consulta tengaORDER BY time
, como mínimo, un filtro en función del intervalo de tiempo devuelto.
Macros
Las macros se pueden usar dentro de una consulta para simplificar la sintaxis y permitir partes dinámicas.
Ejemplo de macro | Descripción |
---|---|
$__time(dateColumn)
|
Se reemplazará 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) como time_sec. |
$__timeEpoch(dateColumn)
|
Se reemplazará 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) como time_sec. |
$__timeFilter(dateColumn)
|
Se reemplazará por un filtro de intervalo de tiempo con el nombre de columna especificado. Por ejemplo, DateColumn BETWEEN FROM_UNIXTIME (1494410783) Y FROM_UNIXTIME (1494410983). |
$__timeFrom()
|
Se sustituirá por el inicio de la selección de hora actualmente activa. Por ejemplo, FROM_UNIXTIME (1494410783). |
$__timeTo()
|
Se sustituirá por el final de la selección de tiempo actualmente activa. Por ejemplo, FROM_UNIXTIME (1494410983). |
$__timeGroup(dateColumn,'5m')
|
Se reemplazará por una expresión utilizable en la cláusula GROUP BY. Por ejemplo, cast (cast (UNIX_TIMESTAMP (DateColumn)/(300) as signed) 300 as signed), * |
$__timeGroup(dateColumn,'5m', 0)
|
Igual que en la fila anterior, pero con un parámetro de relleno, por lo que grafana añadirá los puntos que falten en esa serie y usará 0 como valor. |
$__timeGroup(dateColumn,'5m', NULL)
|
Igual que el anterior, pero se usará NULL 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 reemplazará de forma idéntica a $__TimeGroup, pero con un alias de columna agregado |
$__unixEpochFilter(dateColumn) |
Se sustituirá por un filtro de intervalo de tiempo que utilice el nombre de columna especificado y las horas se representarán como una marca de tiempo de Unix. Por ejemplo, *DateColumn > 1494410783 Y DateColumn < 1494497183* |
$__unixEpochFrom() ` |
| Se sustituirá por el inicio de la selección de tiempo actualmente activa como marca de tiempo de Unix. Por ejemplo, *1494410783* |
$__unixEpochTo() |
Se sustituirá por el final de la selección de tiempo actualmente activa como marca de tiempo de Unix. Por ejemplo, *1494497183* |
$__unixEpochNanoFilter(dateColumn) |
Se sustituirá por un filtro de intervalo de tiempo que utilice el nombre de columna especificado y los tiempos se representarán como una marca de tiempo de nanosegundos. Por ejemplo, *DateColumn > 1494410783152415214 Y DateColumn < 1494497183142514872* |
$__unixEpochNanoFrom() |
Se sustituirá por el inicio de la selección de tiempo actualmente activa como marca de tiempo de nanosegundos. Por ejemplo, *1494410783152415214* |
$__unixEpochNanoTo() |
Se sustituirá por el final de la selección de tiempo actualmente activa como 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. |
Consultas de tabla
Si la opción de consulta está establecida en Formatear como tabla, básicamente puede realizar cualquier tipo de consulta SQL. El panel de tablas mostrará automáticamente los resultados de las columnas y filas que devuelva la consulta.
Puede controlar el nombre de las columnas del panel Tabla mediante la sintaxis normal de selección de columnas de as
SQL.
Consultas de series temporales
Si establece Formato como, por ejemploTime series
, para su uso en un panel de gráficos, la consulta debe devolver una columna con un nombre time
que devuelva una fecha y hora de SQL o cualquier tipo de datos numéricos que representen la época de Unix. Cualquier columna excepto time
y metric
se trata como una columna de valores. Puede devolver un nombre de columna metric
que se utilice como nombre de métrica para la columna de valores. Si devuelve varias columnas de valores y una columna con un nombremetric
, esta columna se utiliza como prefijo para el nombre de la serie.
Los conjuntos de resultados de las consultas de series temporales se deben ordenar por hora.
El siguiente código de ejemplo muestra una metric
columna.
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
En el siguiente ejemplo de código, se muestra el uso del parámetro fill de la macro $__TimeGroup para convertir valores nulos en cero en su lugar.
SELECT $__timeGroup("createdAt",'5m',0), sum(value) as value, measurement FROM test_data WHERE $__timeFilter("createdAt") GROUP BY time, measurement ORDER BY time
El siguiente código de ejemplo 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
Creación de 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. Puedes usar estos cuadros desplegables para cambiar los datos que se muestran en tu panel de control.
Para obtener más información sobre las plantillas y las variables de plantilla, consulte. Plantillas
Variable de consulta
Si añade una variable de plantilla de este tipoQuery
, puede escribir una consulta de PostgreSQL que devuelva datos como los nombres de las medidas, los nombres de las claves o los valores de las claves que se muestran en un cuadro de selección desplegable.
Por ejemplo, puede tener una variable que contenga todos los valores de la hostname
columna de una tabla si especifica una consulta como esta en la configuración de consulta de la variable de plantilla.
SELECT hostname FROM 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
yhostname2
.
SELECT host.hostname, other_host.hostname2 FROM host JOIN other_host ON host.city = other_host.city
Para utilizar macros que dependen del intervalo de tiempo, como $__timeFilter(column)
en la 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 clave/valor. La consulta debe devolver dos columnas __text
denominadas y. __value
El valor de la __text
columna debe ser único (si no lo es, se utiliza el primer valor). Las opciones de la lista desplegable tendrán un texto y un valor que te permitirán tener un nombre descriptivo como texto y un identificador como valor. Un ejemplo de consulta con hostname
como texto y id
como valor:
SELECT hostname AS __text, id AS __value FROM host
También puede crear variables anidadas. Si utiliza una variable denominadaregion
, puede hacer que la variable hosts muestre solo los hosts de la región seleccionada actualmente. En el siguiente ejemplo de código se muestra una consulta como esta (si region
se trata de una variable con varios valores, utilice el operador de IN
comparación en lugar de =
compararla con varios valores).
SELECT hostname FROM host WHERE region IN($region)
Se utiliza __searchFilter
para filtrar los resultados en 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 introducido nada, el valor predeterminado __searchFilter
es%
.
nota
Es importante que rodees la __searchFilter
expresión entre comillas, ya que Grafana no lo hace por ti.
El siguiente ejemplo muestra cómo usarlo __searchFilter
como parte del campo de consulta para permitir la búsqueda 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 las consultas
Los valores de las variables de plantilla solo se citan cuando la variable de plantilla es amulti-value
.
Si la variable es una variable con varios valores, utilice el operador de IN
comparación en lugar de =
compararla con varios valores.
Hay dos sintaxis:
$<varname>
Ejemplo con una variable de plantilla llamadahostname
:
SELECT atimestamp as time, aint as value FROM table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC
[[varname]]
Ejemplo con una variable de plantilla llamadahostname
:
SELECT atimestamp as time, aint as value FROM table WHERE $__timeFilter(atimestamp) and hostname in([[hostname]]) ORDER BY atimestamp ASC
Desactivar las comillas para variables con varios valores
Grafana gestionada por Amazon crea automáticamente una cadena entrecomillada y separada por comas para variables con varios valores. Por ejemplo: si server02
se selecciona server01
y, 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 variable, consultePlantillas y variables.
Annotations
Utilice las anotaciones para superponer información detallada sobre los eventos en la parte superior de los gráficos. Las consultas de anotación se añaden a través del menú del panel de control o la vista de anotaciones. Para obtener más información, consulte Annotations.
El siguiente código de ejemplo muestra una consulta que utiliza una columna de tiempo con valores de época.
SELECT epoch_time as time, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)
El siguiente código de ejemplo muestra una consulta de región que utiliza columnas de hora y fin de tiempo con valores de época.
nota
Esto solo está disponible en Grafana v6.6+.
SELECT epoch_time as time, epoch_time_end as timeend, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)
El siguiente código de ejemplo 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_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__timeFilter(native_date_time)
Nombre | Descripción |
---|---|
time
|
El nombre del campo de fecha y hora. Puede ser una columna con un tipo de datos de fecha y hora nativo de SQL o un valor de época. |
timeend
|
Nombre opcional del campo de fecha y hora de finalización. Podría ser una columna con un tipo de datos de fecha y hora de SQL nativo o un valor de época (Grafana v6.6+). |
text
|
Campo de descripción del evento. |
tags
|
Nombre de campo opcional para usar en las etiquetas de eventos como cadena separada por comas. |
Alertas
Las consultas de series temporales deberían funcionar en condiciones de alerta. Las consultas con formato de tabla aún no se admiten en las condiciones de las reglas de alerta.