Introducción a la monitorización con Prometheus y Grafana
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.
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:
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 prometheus
y 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.
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
.
La configuración inicial de Grafana consistirá en:
- Cambio de contraseña del usuario administrador.
- Configuración de una fuente Prometheus indicando la URL del servidor. En nuestro caso
http://192.168.17.106:9090/
(ver captura de pantalla). - Importar algún dashboard desde https://grafana.com/grafana/dashboards/.
Algunos dashboards destacados son:
- ID:
11074
. 1 Node Exporter for Prometheus Dashboard EN 20201010. Muestra una tabla resumen de las máquinas y paneles con información detallada. - ID:
1860
. Node Exporter Full. Muestra paneles para las métricas del exportador de Prometheus. - ID:
15726
. LXD. Paneles para un nodo LXD con métricas de los contenedores. Ver: How to monitor metrics. - ID:
3662
. Prometheus 2.0 Overview. Monitoriza el funcionamiento de Prometheus ;-)
Más información: