Skip to main content

Command Palette

Search for a command to run...

Monitoriza tu servidor con Grafana y Prometheus

Tiempo de lectura: 9 minutos Categoría: Linux · Sysadmin Nivel: Intermedio

Published
5 min read

Administrar un servidor sin monitorización es como conducir con los ojos cerrados. Puedes ir bien durante un tiempo, pero cuando algo falla no sabes qué pasó, cuándo empezó ni por qué. Grafana y Prometheus son el estándar de la industria para monitorización y en este artículo te explico cómo montarlo en tu propio servidor.

¿Qué son Prometheus y Grafana?

Prometheus es un sistema de monitorización y base de datos de series temporales. Se encarga de recopilar métricas de tus servidores y aplicaciones a intervalos regulares y almacenarlas. Tiene su propio lenguaje de consulta llamado PromQL que permite hacer preguntas muy precisas sobre tus datos.

Grafana es la herramienta de visualización. Se conecta a Prometheus como fuente de datos y te permite crear dashboards con gráficas, contadores y alertas. La interfaz es muy visual e intuitiva y hay miles de dashboards prediseñados que puedes importar con un clic.

La arquitectura es sencilla: Prometheus hace scraping, es decir, consulta periódicamente unas URLs llamadas endpoints que exponen las métricas en un formato de texto plano. Los exporters son pequeños programas que corren en los servidores que quieres monitorizar y exponen esas métricas.

Node Exporter: métricas del sistema operativo

Node Exporter es el exporter oficial para métricas de Linux. Expone cientos de métricas del sistema operativo: uso de CPU por core, uso de memoria, espacio en disco, tráfico de red, temperatura de la CPU, estadísticas de disco y mucho más.

Se instala descargando el binario desde las releases de GitHub del proyecto prometheus/node_exporter. Tras descomprimirlo lo copias a /usr/local/bin y creas un archivo de servicio de systemd para que corra como servicio en segundo plano.

Por defecto Node Exporter escucha en el puerto 9100. Puedes verificar que funciona abriendo en el navegador la dirección IP de tu servidor seguida de :9100/metrics y verás un torrente de métricas en texto plano.

Instalar Prometheus

El proceso de instalación de Prometheus es similar al de Node Exporter: descargas el binario desde las releases de GitHub de prometheus/prometheus, lo descompimes, copias los binarios a /usr/local/bin y creas los directorios de configuración y datos.

La configuración de Prometheus vive en el archivo prometheus.yml. La sección global define el intervalo de scraping, que es cada cuánto tiempo Prometheus consulta los endpoints de métricas. 15 segundos es un buen valor para uso general.

La sección scrape_configs define los targets que Prometheus va a monitorizar. Para cada job defines un nombre y la lista de endpoints donde scrapeará las métricas. Para monitorizar el servidor local con Node Exporter el target es localhost:9100.

Prometheus también necesita un servicio de systemd para arrancar automáticamente. Por defecto su interfaz web está disponible en el puerto 9090 donde puedes hacer consultas PromQL directamente y ver el estado de los targets.

Instalar Grafana

Grafana tiene repositorios oficiales para las principales distribuciones Linux. En Ubuntu y Debian se añade el repositorio APT de Grafana y se instala con apt. En Fedora y derivados hay un repositorio YUM disponible.

Tras la instalación activas el servicio con systemctl y accedes a la interfaz web en el puerto 3000. Las credenciales por defecto son admin para el usuario y admin para la contraseña. Lo primero que hace Grafana es pedirte que cambies la contraseña.

Conectar Grafana con Prometheus

En la interfaz de Grafana ve a Connections, Data Sources y añade Prometheus como fuente de datos. La URL del servidor de Prometheus es http://localhost:9090 si están en la misma máquina. Guarda y verifica la conexión.

Importar un dashboard

En vez de crear el dashboard desde cero puedes importar uno ya hecho. El dashboard más popular para Node Exporter es el número 1860 en el repositorio de dashboards de Grafana. Tiene más de 20 millones de descargas y cubre prácticamente todo lo que necesitas para monitorizar un servidor Linux.

Para importarlo ve a Dashboards, Import, y escribe el número 1860. Selecciona Prometheus como fuente de datos y tendrás al instante un dashboard profesional con gráficas de CPU, memoria, disco, red y mucho más.

Configurar alertas

Grafana puede enviarte alertas cuando una métrica supera un umbral. Por ejemplo puedes configurar una alerta que te avise por correo o Telegram cuando el uso del disco supera el 80%, cuando la carga del servidor lleva más de 5 minutos por encima de un valor, o cuando un servicio deja de responder.

Para configurar un canal de notificaciones ve a Alerting y Contact Points. Grafana soporta correo electrónico, Slack, Telegram, PagerDuty y muchos más. Una vez configurado el canal puedes añadir reglas de alerta a cualquier panel del dashboard.

Monitorizar más servicios

Una vez que tienes el stack básico funcionando puedes expandirlo con más exporters. Hay exporters para prácticamente cualquier servicio: MySQL Exporter para bases de datos MySQL y MariaDB, Nginx Exporter para el servidor web, Blackbox Exporter para verificar que URLs externas están respondiendo, y cAdvisor para monitorizar contenedores Docker.

Conclusión

Grafana y Prometheus son herramientas que usan empresas como Google, Netflix y Uber para monitorizar sus infraestructuras. El hecho de que puedas montarlas en tu servidor de casa de forma gratuita y con un resultado profesional es uno de los grandes placeres del mundo open source.

Una vez que tienes dashboards con datos históricos de tu servidor empiezas a entender cómo se comporta el sistema, detectas problemas antes de que se conviertan en fallos graves y tienes toda la información que necesitas para tomar decisiones de capacidad.


¿Qué otras herramientas de monitorización usas? Netdata, Zabbix, Checkmk... el ecosistema es enorme.

Monitoriza tu servidor con Grafana y Prometheus