Configuración de alertas y notificaciones en Grafana

por | octubre 14, 2018

Si utilizas un dashboard descargado desde la web de Grafana y has intentado crear alertas y notificaciones de alguna de las métricas, seguramente habrás observado el siguiente error:

De momento no podemos crear alertas desde templates predefinidos. Una solución consiste en crearnos nuestro propio panel de alertas con los umbrales que deseemos.

Para el artículo me baso en una configuración de Grafana con InfluxDB como datasource y Collectd como recolector de métricas. Puedes ver cómo instalar y configurar todos los componentes en un artículo que escribí anteriormente.

Antes de proceder a configurar una alerta, si vamos a querer también activar notificaciones tendremos que configurar un canal de notificaciones previamente. En mi caso utilizo notificación por correo pero Grafana admite más canales como Telegram, LINE, Slack o Prometheus entre otros. Si vamos a utilizar notificaciones de correo necesitaremos haber configurado también un MTA en nuestro servidor que se encargue de enviar el correo (suelo utilizar SSMTP o Exim)

En mi caso configuré un nuevo dashboard en el que tengo alertas para CPU, carga (Load Average) y uso de disco. Mi dashboard es bastante sencillo como podéis ver:

Como ejemplo para crear una alerta podemos utilizar el uso de CPU. Las querys que utilizo son:

# Uso de CPU en modo usuario (user mode)
SELECT mean("value") FROM "cpu_value" WHERE ("host" =~ /^jota-server/ AND "type_instance" = 'user') AND $timeFilter GROUP BY time($interval) fill(null)

# Uso de CPU en modo sistema (system mode)
SELECT mean("value") FROM "cpu_value" WHERE ("host" =~ /^jota-server/ AND "type_instance" = 'system') AND $timeFilter GROUP BY time($interval) fill(null)

Tal que así:

Todo esto me da un histórico de uso de CPU:

Ahora vamos a configurar la alarma. Me interesa generar una alarma si el valor medio en los últimos 5 minutos de la query A o B (las dos anteriores) es mayor de 90:

Incluso podemos hacer un test de la alarma para ver si funciona:

Ahora en Notifications seleccionamos el canal o canales de notificación a los que se va a enviar un mensaje cuando tengamos una alerta:

Y con esto ya tenemos configuradas unas sencillas alarmas y notificaciones 😀