Introducción a la monitorización con Prometheus y Grafana

per Victor Carceler darrera modificació 2023-05-02T16:18:44+01:00

Durante la explotación de los sistemas informáticos es fundamental monitorizar su funcionamiento para poder valorar su rendimiento y facilitar el diagnóstico de cualquier problema.

Una de las soluciones de monitorización más utilizadas hoy en día consiste en combinar Prometheus (una base de datos de series temporales) con Grafana (una interfaz web), para poder definir los dashboards que visualicen gráficamente las métricas de nuestros sistemas.

Captura desde 2023-04-27 12-50-20.png

Componentes

Para monitorizar nuestros equipos necesitaremos:

  • Instalar prometheus-node-exporter en los equipos a monitorizar.
  • Instalar prometheus en un servidor para registrar las métricas.
  • Instalar grafana en un servidor para definir y visualizar dashboards.

Instalación de prometheus-node-exporter

Cada equipo, o aplicación, que vaya a ser monitorizado con Prometheus debe publicar sus propias métricas mediante HTTP para que Prometheus las recoja. Para monitorizar un ordenador con GNU/Linux la opción más sencilla consiste en instalar prometheus-node-exporter que se ejecutará como un servicio y publicará las métricas en el puerto 9100 del ordenador.

Una vez instalado cualquier navegador web nos permitirá acceder a las métricas:

Métricas exportadas por prometheus-node-exporter en Ubuntu 22.04

El número de métricas exportadas dependerá de la configuración del agente que soporta diferentes recolectores aunque no todos están activados por defecto.

En general la configuración por defecto resulta razonable, pero en el caso del centro educativo nos hemos encontrado con que el recolector de systemd (que viene activado por defecto en Ubuntu) publica muchas métricas y provoca una alta cardinalidad. Por eso en el centro educativo utilizamos Ansible para cambiar la configuración de prometheus-node-exporter en nuestros equipos y desactivar el recolector de systemd.

Instalación de prometheus

En cualquier distribución actual de GNU/Linux se encontrará el paquete prometheusy una vez instalado encontraremos su configuración en /etc/prometheus/prometheus.yml.

En el fichero de configuración, en la sección scrape_configs, deberemos declarar un nuevo trabajo para recoger las métricas de nuestros equipos.

Por ejemplo, para recoger las métricas del equipo 192.168.17.105 podremos declarar:

scrape_configs:
  - job_name: 'servidores'
    static_configs:
      - targets: ['192.168.17.105:9100']

Y después de reiniciar el servicio nuestro prometheus pasará a recoger las métricas de los equipos (por defecto cada 15 segundos).

Además podremos visitar la interfaz web de Prometheus (en nuestro caso http://192.168.17.106:9090/classic/targets) para listar los ordenadores monitorizados.

Interfaz de Prometheus mostrando los targets.

Instalación de grafana

La aplicación no se encuentra disponible en los repositorios de Ubuntu 22.04 pero se puede descargar el paquete e instalar con los siguientes comandos:

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_9.5.1_amd64.deb
sudo dpkg -i grafana_9.5.1_amd64.deb sudo systemctl daemon-reload sudo systemctl enable grafana-server
sudo systemctl start grafana-server

Encontraremos la interfaz web de la aplicación en el puerto 3000, en nuestro caso http://192.168.17.107:3000/. El usuario por defecto es admin con contraseña admin.

Grafana-login.png

La configuración inicial de Grafana consistirá en:

  1. Cambio de contraseña del usuario administrador.
  2. Configuración de una fuente Prometheus indicando la URL del servidor. En nuestro caso http://192.168.17.106:9090/ (ver captura de pantalla).
  3. Importar algún dashboard desde https://grafana.com/grafana/dashboards/.

Algunos dashboards destacados son:

Más información: