====== Grafana ======
Herramienta para crear cuadros de mando y gráficos a partir de múltiples fuentes, incluidas bases de datos de series de tiempo como Graphite, InfluxDB y OpenTSDB.
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture.
* [[https://grafana.com|Web oficial]]
Las notas aquí recogidas se centran en la versión 7.x de Grafana
===== Características =====
==== Fuentes de datos ====
Grafana soporta:
* InfluxDB
* Prometheus
* Elasticsearch
* MySQL
* PostgreSQL
===== Instalación =====
==== Docker ====
version: '3'
services:
app:
container_name: grafana
image: grafana/grafana
ports:
- 3000:3000
* [[https://grafana.com/docs/grafana/latest/installation/docker/|Run Grafana Docker image]]
===== Consideraciones =====
La mayoría de los paneles de Grafana esperan series temporales. Para estos casos, al hacer escribir consultas SQL, se deben incluir una columna llamada ''time''. La siguiente consulta:
SELECT 10 AS value
FROM tabla
Fallará al no haber ningún dato temporal.
Found no column named time or time_sec
==== Macros ====
* ''$%%__%%timeGroup(dateColumn, '5m', 0)''
* ''$%%__%%unixEpochGroup(dateColumn, '5m', 0)''
El último parámetro es el valor con el que rellenar el intervalo. Útil cuando se necesitan valores para todos los intervalos. Es decir, si no tenemos datos para cierto intervalo, los anteriores macros añadirán un 0.
SELECT
$__time(time),
sum(opened) AS "Abiertas",
sum(closed) AS "Cerradas"
FROM
activity
WHERE
$__unixEpochFilter(time)
GROUP BY 1
===== Uso =====
http://ip.servidor:3000
Credenciales por defecto:
* Usuario: ''admin''
* Contraseña: ''admin''
La primera vez que iniciamos nos pide que cambiemos la contraseña del administrador.
==== Alertas ====
Antes de poder crear alertas hay que crear un canal de notificación: Alerting -> Notification channels -> New Channel.
Elegimos el tipo de canal (medio por el que se enviará la alerta), cubrimos la configuración solicitada y podemos hacer una prueba antes de guardarlo para confirmar su correcto funcionamiento.
Completar la explicación sobre configuración y uso de alertas.
==== Dashboards ====
Cuadros de mando ya configurados. Importar, elegir el origen de datos y listo.
* https://grafana.com/grafana/dashboards
Algunos interesantes:
* https://grafana.com/grafana/dashboards/915: Telegraf system overview
* https://grafana.com/grafana/dashboards/928: Telegraf: system dashboard
* https://grafana.com/grafana/dashboards/10578: Raspberry Pi monitoring
* https://grafana.com/grafana/dashboards/10581: Host Dashboard
* https://grafana.com/grafana/dashboards/12705: Home Assistant
Para cambiar el nombre, dentro del panel, pulsamos en el botón de //Settings// (el de la rueda dentada), vamos a la pestaña //General// y modificamos el valor del campo **Name**.
==== Plugins ====
* https://grafana.com/grafana/plugins
===== Grafana e InfluxDb =====
Es habitual montar ambas herramientas para tener un sistema de monitorización: grafana para la visualización e influxdb para el almacenamiento de las métricas.
==== Docker ====
Creamos una red docker previamente:
docker network create monitoring
Esto nos permite agrupar los contenedores en una misma red y que puedan "verse" mediante el nombre de los contenedores.
version: '3'
services:
app:
container_name: grafana
image: grafana/grafana
ports:
- 3000:3000
user: "1000"
restart: always
volumes:
- ./grafana-data:/var/lib/grafana
influxdb:
image: influxdb
container_name: influxdb
restart: always
ports:
- 8086:8086
volumes:
- ./influxdb-data:/var/lib/influxdb
networks:
default:
external:
name: monitoring