Grafana y Prometheus: monitorización y alertas web

Development

Cuando me aventuré a crear mi web a modo de curriculum y de portfolio, puse en práctica conocimientos que había adquirido durante cursos anteriores. Además, tuve que aprender a trabajar con php, wordpress y con MariaDB (una base de datos derivada de MySQL). Tras terminar con la instalación, me surge una duda: ¿qué pasa si alguien entra en mi web y no está disponible? La solución a este problema fue Grafana y Prometheus.

Sabiendo que hay hasta plugins de wordpress que te pueden alertar en caso de que tu web esté caida, decidí crear un sistema bastante completo de monitorización y alertas, usando por un lado la recopilación de datos en tiempo real de Prometheus y la capacidad para visualizar cuadros de mando y generar alertas de Grafana.

Grafana y Prometheus

Para realizar la instalación, seguí como guía principalmente este post de geekflare, sabiendo que hay varios puntos en los que tendrás que hacer varias cosas extras, dependiendo del servidor web que uses. Yo al usar nginx tuve que configurar un proxy reverso para que pudiera coexistir con otros subdominios que utilizo, como el utilizado en Shield, mi proyecto de Django.

Prometheus y node exporter

Gracias a Prometheus y usando su node exporter podremos recopilar todas las métricas del sistema operativo (basado en UNIX, si usamos windows o queremos recopilar otra información deberemos usar otro exporter). Tras configurar correctamente el node exporter, expondremos a través del puerto indicado en nuestro servidor todas las métricas recopiladas. Este información será la que reciba en tiempo real Grafana y que usará como datasource. Esta nutrirá de datos todos los paneles o dashboards que hagamos y que posteriormente usaremos para el sistema de alertas.

 

Grafana, dashboards y alertas

Esta aplicación nos permite conectar el datasource recopilado por node exporter y enviado por Prometheus y crear varios dashboards para representar esos datos. Mediante la función de importar, nos permitirá crear los paneles de control en un momento, importándolos usando su ID. Te recomiendo que empieces usando el oficial de node exporter.

Esto es lo fácil, pero lo difícil es configurar las alertas, ya que nos encontraremos casi con toda seguridad con el error “Template variables are not supported in alert queries”. Este error viene a decirnos que la query que utiliza la gráfica que queremos usar para las alertas está usando las variables de plantilla (para facilitar el trabajo a su creador) y estas no se pueden usar en las alertas. Para solventarlo, basta con abrir la query que utiliza nuestra gráfica base y sustituir las variables por nuestras constantes (en mi caso los jobs y las instancias) y ya nos permitirá crear nuestras alertas.

Yo opté por realizar dos alertas muy básicas. Una cuando el CPU está por encima del 75% durante más de 5 minutos y otra cuando no se reciben datos desde Prometheus. Estas alertas las recibo mediante un bot de Telegram, ya que para mi es mas cómodo y urgente que un email.

Grafana es una herramienta muy potente, ya que permite utilizar varias fuentes de datos, configurables en unos cuantos pasos. Si quieres empezar a ampliar tus dashboards, puedes revisar los disponibles en su web.

Esta web usa cookies propias y de terceros para su correcto funcionamiento. Al hacer click en el botón de aceptar, acepta su uso.    Más información
Privacidad