Dashboards de Grafana para Monitoreo de Infraestructura
Monitorear servidores e infraestructura es fundamental para mantener la disponibilidad y el rendimiento de los servicios. Grafana, combinado con Prometheus y exporters como node_exporter, proporciona una solucion completa y de codigo abierto para visualizar metricas en tiempo real. Esta guia cubre desde la instalacion hasta la creacion de dashboards profesionales con alertas configuradas.
Instalacion y Configuracion Inicial
Grafana puede instalarse como paquete nativo en distribuciones Linux o ejecutarse como contenedor Docker. Para un entorno de produccion, la instalacion nativa ofrece mayor control sobre la configuracion y las actualizaciones.
# Agregar repositorio oficial de Grafana
sudo apt-get install -y apt-transport-https software-properties-common
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
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update && sudo apt-get install grafana -y
sudo systemctl enable --now grafana-server
Alternativamente, si prefieres Docker para un despliegue rapido:
docker run -d --name grafana \
-p 3000:3000 \
-v grafana-storage:/var/lib/grafana \
grafana/grafana-oss:latest
Una vez instalado, accede a Grafana en http://tu-servidor:3000 con las credenciales por defecto (admin/admin). El primer paso es cambiar la contrasena y configurar Prometheus como fuente de datos principal navegando a Configuration > Data Sources > Add data source > Prometheus.
Consultas PromQL y Paneles Esenciales
PromQL (Prometheus Query Language) es el lenguaje que usa Grafana para extraer metricas de Prometheus. Para un dashboard de monitoreo de infraestructura, necesitas paneles que cubran CPU, memoria, disco, red y disponibilidad del sistema.
Para monitorear el uso de CPU por servidor:
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
Para memoria disponible en porcentaje:
(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100
Para espacio en disco utilizado:
100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype!="rootfs"} / node_filesystem_size_bytes{mountpoint="/"}) * 100)
Cada consulta se asigna a un panel dentro del dashboard. Grafana soporta multiples tipos de visualizacion: Time Series para tendencias temporales, Gauge para valores instantaneos, Stat para KPIs principales y Table para listados detallados. La clave es elegir el tipo de visualizacion adecuado para cada metrica — un gauge funciona bien para porcentaje de uso de disco, mientras que una serie temporal es mejor para observar patrones de CPU a lo largo del tiempo.
Variables de Template y Dashboards Dinamicos
Las variables de template permiten crear dashboards reutilizables que se adaptan a diferentes servidores, entornos o aplicaciones sin duplicar paneles manualmente. En la configuracion del dashboard, navega a Settings > Variables para definir variables dinamicas.
# Variable "instance" que lista todos los servidores
label_values(node_uname_info, instance)
# Variable "job" para filtrar por tipo de servicio
label_values(up, job)
Una vez definidas, puedes usar estas variables en las consultas de tus paneles con la sintaxis $instance o ${instance}. Esto transforma un dashboard estatico en una herramienta interactiva donde los operadores seleccionan el servidor que desean inspeccionar desde un menu desplegable en la parte superior del dashboard.
Ademas, utiliza la funcion Repeating Panels para generar automaticamente un panel por cada valor de la variable. Esto es util, por ejemplo, para mostrar el uso de disco de cada particion montada sin crear paneles individuales manualmente.
Alertas y Mejores Practicas
El sistema de alertas de Grafana permite definir condiciones basadas en consultas PromQL y enviar notificaciones cuando se superan umbrales criticos. Ve a Alerting > Alert Rules para crear reglas.
Las alertas mas importantes para monitoreo de infraestructura incluyen: uso de CPU sostenido por encima del 90% durante mas de 5 minutos, memoria disponible por debajo del 10%, espacio en disco por debajo del 15% y servidor inaccesible (instancia down).
Configura contact points para enviar notificaciones a Slack, Microsoft Teams, email o PagerDuty. Usa notification policies para enrutar alertas segun su severidad — alertas criticas a PagerDuty para respuesta inmediata y advertencias a un canal de Slack para revision durante horario laboral.
Como mejores practicas, organiza tus dashboards en carpetas por entorno (produccion, staging, desarrollo). Usa nombres descriptivos para los paneles y agrega descripciones que expliquen que muestra cada panel. Importa dashboards de la comunidad como punto de partida — el dashboard Node Exporter Full (ID 1860) es excelente para servidores Linux. Finalmente, establece un periodo de retencion adecuado en Prometheus para equilibrar el almacenamiento con la capacidad de analisis historico.