Métricas y monitorización con Pormetheus y Grafana

Índice

Grafana y Prometheus son herramientas que permiten monitorizar el funcionamiento de los equipos de una red. En combinación, pueden recopilar y centralizar información relevante del funcionamiento de los servidores de una red, mostrarla de manera visual a través de una interfaz gráfica y notificar situaciones críticas en los equipos.

Instalación y configuración de Prometheus

Prometheus Node Exporter es un binario que permite exponer métricas tanto de hardware como de Kernel de los nodos de una red. El binario está disponible en la página de descargas de Prometheus. Tras descargarlo, se puede descomprimir e instalar en cada nodo.

wget https://github.com/prometheus/node_exporter/releases/download/v1.9.0/node_exporter-1.9.0.linux-amd64.tar.gz
tar xvfz node_exporter-*.*-amd64.tar.gz
cd node_exporter-*.*-amd64
./node_exporter

Un servidor en el que esté instalado Prometheus puede acceder a estas estadísticas.

wget https://github.com/prometheus/prometheus/releases/download/v3.2.1/prometheus-3.2.1.linux-amd64.tar.gz
tar xvf prometheus-*.*-amd64.tar.gz
cd prometheus-*.*

En la configuración de Prometheus hay que indicar el puerto de cada nodo con que el servidor debe comunicarse para recolectar las métricas expuestas por el Node Exporter.

global:
  scrape_interval: 15s

scrape_configs:
- job_name: node
  static_configs:
  - targets: ['localhost:9090','nami:9100','sanji:9100','zoro:9100']

En el servidor, se arranca Prometheus usando el fichero de configuración generado previamente para empezar la recepción de métricas de los nodos de la red.

./prometheus --config.file=./prometheus.yml

Instalación y configuración de Grafana

Para instalar Grafana en Debian primero se instalan las dependencias necesarias.

sudo apt-get install -y apt-transport-https software-properties-common wget

Después se importa la clave del repositorio del desarrollador.

sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

Y se añaden los repositorios de Grafana al sistema.

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Para instalar la herramienta se actualiza la paquetería del sistema y se instala desde los repositorios de los desarrolladores.

sudo apt update
sudo apt-get install grafana

Finalmente, se arranca el servidor Grafana.

sudo systemctl daemon-reload
sudo systemctl start grafana-server

Para usar Grafana se accede al puerto 3000 de la URL de Luffy y se inicia sesión en la interfaz gráfica de la aplicación. Esta herramienta cuenta con una utilidad para configurar Prometheus como fuente de datos y crear paneles a partir de esta información:

/images/aso/metricas/p1_1.png does not exist

Para que funcione la monitorización tanto los binarios node_export de los diferentes nodos de la red como el servicio de Prometheus en el servidor se deben estar ejecutando. Así se puede mantener la monitorización de los servidores de la red a lo largo del tiempo.

/images/aso/metricas/p1_2.png does not exist

Creación de alertas con Grafana

Creación de una alerta con webhook

Para crear una alerta primero hay que configurar el método de alerta. En este caso, para demostrar el funcionamiento de las alertas se usa un webhook. Este método se puede configurar a través de la interfaz gráfica de Grafana en Home -> Alert -> Contact Point. Aquí se crea un nuevo contact point con la integración Webhook, que permite usar la aplicación web Webhook.site para recibir alertas de monitorización.

/images/aso/metricas/p1_3.png does not exist

A continuación se puede crear una alerta en Home -> Alert -> New alert. En esta ventana se configuran los criterios que hacen saltar la alerta y el método de comunicación que se debe usar para enviar la alerta. También se pueden modificar otros detalles como, por ejemplo, la frecuencia con la que se revisa si el requisito que dispara la alerta se cumple.

Envío de alertas por Telegram

Grafana permite configurar el envío de alertas por múltiples medios en Home -> Alert -> Contact Point. Entre ellos, se puede usar la aplicación de mensajería instantánea Telegram. Para configurar el envío de alertas de Grafana con Telegram es necesario crear antes un bot en esta aplicación.

Para crear bots, Telegram pone a disposición de sus usuarios una herramienta llamada BotFather. Usando este bot se pueden crear bots de forma interactiva con el comando /newbot. Al crear el nuevo bot, Telegram genera un API token que hay que usar en la configuración del método de alerta de Grafana.

Por otra parte, para configurar este método de alerta también se necesita el identificador de una chat de Telegram. Para conseguirlo hay que añadir el bot a un grupo y, una vez que el bot esté en el grupo, se usa el ID de este chat para configurar el método de alerta en Grafana.

Una vez que se ha configurado el método de alerta, se puede usar al configurar una nueva alerta. En Home -> Alert -> New alert se introduce la información relativa a cada uno de los campos del formulario. Así, hay que indicar el nombre de la alerta, la consulta y condición que hace que salte la alerta, la carpeta y etiquetas a las que pertenece la alerta, el comportamiento o frecuencia con la que se evalúa si se cumple el requisito que hace saltar la alerta, el método de notificación o el contenido del mensaje de notificación.

/images/aso/metricas/p1_4.png does not exist

De esta manera, cuando se cumple la condición configurada en la alerta, por ejemplo, se excede el límite de carga de un nodo, se envía un mensaje a través del medio de comunicación configurado con la información relativa al evento.

/images/aso/metricas/p1_5.jpg does not exist

Fuentes

Get started with Grafana and Prometheus

Monitoring Linux host metrics with the Node Exporter

Installation

Install Grafana on Debian or Ubuntu

Start the Grafana server

Configure Telegram for Alerting

comments powered by Disqus

Relacionados

Guía básica de configuración de Nginx

En este post se recoge una guía básica del uso del servidor web Nginx a partir de un supuesto práctico.

Leer

Configurar una agregación de enlaces (bonding) en bridges Linux

Una agregación de enlaces, link aggregation o port bonding combina varias interfaces de red de forma paralela para aumentar el ancho de banda de una conexión y aportar redundancia ante fallos de una de ellas.

Leer

Configuración de ACL en routers Cisco

Las ACL o listas de control de acceso son un mecanismo que permite controlar el tráfico que atraviesa en router en una red. En este post se demuestra el funcionamiento de las ACL en los routers Cisco con un escenario basado en los personajes de la saga “Los juegos del hambre”.

Leer