Monitoreo Proactivo de Infraestructura: Visibilidad Total con Grafana e InfluxDB

Monitoreo Proactivo de Infraestructura: Visibilidad Total con Grafana e InfluxDB

En la administración de infraestructura moderna, lo que no se mide no se puede mejorar. Recientemente implementé un ecosistema de monitoreo que centraliza la salud de la red, la disponibilidad de servicios y el estado de servidores críticos (Proxmox, NAS, NVR) en un solo panel de control.

🏗️ El Stack Tecnológico (The Monitoring Stack)

Para lograr una solución profesional y escalable, utilizamos una arquitectura basada en contenedores y series temporales:

  1. Grafana: El motor de visualización y alertas.
  2. InfluxDB (v2): Base de datos optimizada para métricas de alto rendimiento.
  3. Uptime Kuma: Motor de chequeo HTTP/TCP/ICMP para disponibilidad de servicios.
  4. Speedtest Tracker: Monitoreo constante del SLA del ISP (Ancho de banda y Latencia).
  5. Telegraf (Opcional): Agente para extraer métricas directas del hardware (CPU, RAM, Temperaturas de Proxmox).

🚀 Guía de Implementación Paso a Paso

1. Despliegue de la Infraestructura (Docker Compose)

Utilizaremos un archivo docker-compose.yml robusto, definiendo volúmenes persistentes y redes aisladas para mayor seguridad.

YAML

services:
  influxdb:
    image: influxdb:2.7
    container_name: monitoring-db
    restart: unless-stopped
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb/data:/var/lib/influxdb2

  grafana:
    image: grafana/grafana-oss:latest
    container_name: monitoring-gui
    restart: unless-stopped
    depends_on:
      - influxdb
    ports:
      - "3000:3000"
    volumes:
      - ./grafana/data:/var/lib/grafana

  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-monitor
    restart: unless-stopped
    volumes:
      - ./uptime-kuma/data:/app/data

  speedtest-tracker:
    image: alexjustesen/speedtest-tracker:latest
    container_name: network-monitor
    ports:
      - "8080:80"
    environment:
      - CHART_DATAPOINTS=24

2. Configuración de la "Single Source of Truth"

Una vez levantados los servicios, el flujo de datos es el siguiente:

  • En InfluxDB: Crea un Bucket llamado infrastructure y genera un API Token con permisos de escritura.
  • En Speedtest Tracker: Ve a Configuraciones -> Exportar y vincula InfluxDB usando el Token generado. Esto nos dará visibilidad real sobre si el ISP está cumpliendo con los simétricos contratados.

3. Monitoreo de Disponibilidad (Health Checks)

En Uptime Kuma, configura monitores para tus servicios críticos:

  • Proxmox/NAS: Chequeo via ICMP (Ping) o TCP puerto 8006.
  • NVR/Cámaras: Monitoreo del puerto RTSP o HTTP del grabador.
  • Tip Profesional: Configura una "Notification Strategy" hacia Telegram o Discord directamente desde Kuma para recibir alertas instantáneas si un servicio cae.

4. Creación del Dashboard en Grafana

Conecta Grafana a InfluxDB mediante el lenguaje Flux. Aquí un ejemplo de cómo extraer la latencia (Ping) para tu gráfica principal:

Fragmento de código

from(bucket: "infrastructure")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "ping")
  |> filter(fn: (r) => r["_field"] == "jitter" or r["_field"] == "latency")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

🛡️ Conclusión y Valor Agregado

Este setup no es solo estético; permite identificar cuellos de botella en la red antes de que los usuarios reporten lentitud y asegura que los sistemas de seguridad (NVR) estén operativos 24/7.

¿Qué sigue? El siguiente nivel de profesionalismo es implementar SNMP para monitorear switches y firewalls, integrando todo en este mismo panel.