Skip to main content

Grafana: Visualización y monitoreo de datos para métricas en tiempo real


Introducción

Grafana es una plataforma de visualización orientada a métricas y series temporales. Dentro del stack se utiliza como capa de visualización sobre Prometheus, permitiendo construir dashboards, definir consultas sobre métricas del sistema y establecer alertas básicas.

El despliegue documentado aquí forma parte de un stack de monitorización autocontenido basado en Docker. Prometheus actúa como motor de recolección y almacenamiento de métricas, mientras que Grafana proporciona la interfaz de análisis y visualización. Node Exporter expone métricas del host.

El objetivo no es montar una plataforma de observabilidad completa tipo enterprise, sino disponer de visibilidad clara del estado del servidor y servicios críticos con una arquitectura simple y mantenible.


Enfoque general / Arquitectura

El stack se compone de tres servicios principales:

  • Prometheus: recolecta métricas.
  • Node Exporter: expone métricas del host.
  • Grafana: visualiza los datos almacenados en Prometheus.

Todos los servicios comparten una red Docker externa dedicada (Grafana_NET) para permitir resolución DNS interna por nombre de servicio. No se utilizan IPs estáticas ni network_mode: host, lo que hace el despliegue portable y reproducible en cualquier host.

Prometheus realiza el scrape directamente contra node-exporter:9100 usando resolución interna de Docker.


Requisitos previos

  • Docker y Docker Compose instalados.

Desarrollo

Qué se hizo y por qué

  • Se utiliza la imagen grafana/grafana-oss para mantener el stack completamente open source.
  • El contenedor se ejecuta con UID/GID 1000:1000 para evitar conflictos de permisos en el volumen persistente.
  • Los datos se almacenan en un volumen local (./data/grafana) para garantizar persistencia tras reinicios o recreaciones.
  • Se instala automáticamente el plugin grafana-clock-panel como ejemplo de extensión.
  • El puerto 3000 del contenedor se expone como 33310 para evitar colisiones con otros servicios.
  • No se fija GF_SERVER_ROOT_URL en la configuración base para mantener el despliegue genérico; se habilita únicamente si se expone tras proxy inverso.

En Prometheus:

  • Se define un scrape_interval de 15 segundos.
  • El objetivo del job node apunta a node-exporter:9100, evitando dependencias de IPs internas.
  • El almacenamiento TSDB se persiste en volumen dedicado.

En Node Exporter:

  • Se monta el root del host en modo lectura para exponer métricas reales del sistema.
  • Se evita network_mode: host para mantener coherencia de red y portabilidad.

Configuración utilizada (solo enlaces)

El stack completo (Grafana, Prometheus y configuración asociada) está versionado en Gitea:

Incluye:

  • docker-compose.yml
  • prometheus.yml
  • Estructura de volúmenes

Validación

Comprobaciones mínimas tras el despliegue:

  • Grafana accesible en http://<host>:33310.
  • Prometheus accesible en http://<host>:33320.
  • En Prometheus → Status → Targets, el job node debe aparecer como UP.
  • En Grafana, al añadir Prometheus como Data Source, la conexión debe validarse correctamente.
  • Métricas básicas como node_cpu_seconds_total deben devolver resultados en el explorador de consultas.

Decisiones importantes

  • Eliminación de IPs hardcodeadas para evitar dependencia del entorno.
  • Uso de red Docker dedicada en lugar de host.
  • Persistencia explícita de datos para evitar pérdida de históricos.
  • Stack deliberadamente minimalista.

Resumen breve

Stack de monitorización basado en Docker compuesto por Grafana, Prometheus y Node Exporter.

Arquitectura simple, sin IPs fijas ni dependencias del host, portable y suficiente para monitorización de servidor y servicios básicos.


Referencias