Monitorizar un servidor casero sin gastar ni un euro: herramientas imprescindibles para tu homelab

Un servidor doméstico no solo debe funcionar, sino que también necesita ser supervisado para evitar sorpresas desagradables como caídas, saturación de recursos o fallos de hardware. Afortunadamente, existen alternativas gratuitas y eficientes para monitorizar tu homelab sin invertir en costosas licencias. Estas herramientas te permiten controlar el estado del sistema, el uso de CPU, memoria, disco, red y otros parámetros críticos, incluso desde el móvil. A continuación, exploramos las mejores opciones, desde soluciones todo-en-uno hasta paneles especializados para Docker.


Prometheus + Grafana: el tandem definitivo para datos en tiempo real

Prometheus es un sistema de monitorización de código abierto diseñado para recopilar métricas en tiempo real mediante un modelo de etiquetado flexible. Funciona como un servidor que “scrapea” los datos expuestos por tus servicios y los almacena en una base de datos de series temporales basada en texto. Para visualizar estos datos, Grafana es la herramienta perfecta: un panel interactivo que te permite crear gráficos, alertas y dashboards personalizados.

Instalación en Docker:

version: '3'
services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    depends_on:
      - prometheus

Define un archivo prometheus.yml para configurar qué métricas recopilar (CPU, memoria, disco, etc.). Grafana ya incluye un conector para Prometheus, por lo que solo necesitas añadir la URL http://prometheus:9090 en la configuración de datos. Ejemplo de dashboard para ver el uso de CPU en tiempo real: Dashboard de CPU en Grafana

Ventajas: Alto rendimiento, escalabilidad y capacidad para alertar mediante reglas de Prometheus (ej: “Enviar email si la CPU supera el 95% durante 10 minutos”). Limitación: Requiere configuración manual para servicios específicos.


Netdata: monitorización en tiempo real con cero configuración

Si buscas una solución plug-and-play, Netdata es la opción ideal. Este agente ligero monitorea en tiempo real más de 200 parámetros del sistema (incluyendo hardware, redes y aplicaciones) con una interfaz web que se ejecuta localmente en el puerto 19999. No necesita base de datos: los datos se calculan al vuelo y se visualizan instantáneamente.

Instalación en un servidor Linux:

curl -Ss 'https://my-netdata.io/kickstart.sh' | bash

O en Docker:

services:
  netdata:
    image: netdata/netdata
    ports:
      - "19999:19999"
    cap_add:
      - SYS_PTRACE
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

Ejemplo práctico: Accede a http://[TU-IP]:19999 y verás una interfaz como esta: Netdata en acción

Ventajas: Sin dependencias, interfaz intuitiva y alertas configurables por web. Desventaja: Menos flexible que Prometheus/Grafana para integraciones avanzadas.


Telegraf + InfluxDB + Grafana (TIG Stack): para métricas pesadas

Si manejas volúmenes altos de datos (ej: logs de Docker, tráfico de red), la combinación de Telegraf (agente de recolección), InfluxDB (base de datos de series temporales) y Grafana ofrece mayor escalabilidad. Telegraf recopila métricas y las envía a InfluxDB, donde se almacenan en un formato optimizado para consultas rápidas. Grafana se conecta a InfluxDB como fuente de datos.

Configuración básica en Docker:

services:
  influxdb:
    image: influxdb
    ports:
      - "8086:8086"
    volumes:
      - influxdb_data:/var/lib/influxdb
  telegraf:
    image: telegraf
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./telegraf.conf:/etc/telegraf/telegraf.conf
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"

Un archivo de configuración mínimo para Telegraf (telegraf.conf):

[[outputs.influxdb]]
  urls = ["http://influxdb:8086"]
  database = "homelab"

[[inputs.cpu]]
[[inputs.disk]]
[[inputs.docker]]  # Métricas de containers

Uso: Crea dashboards en Grafana con consultas como SELECT mean("usage_user") FROM "cpu" WHERE time > now() - 1h GROUP BY time(1m).

Ventajas: Ideal para entornos con muchos servicios y necesidad de retención de datos a largo plazo. Inconveniente: Requiere más recursos que Netdata.


Cacti y LibreNMS: monitorización clásica de red

Para quienes prefieren un enfoque tradicional, Cacti (basado en RRDtool) y LibreNMS (fork de Observium) son excelentes opciones gratuitas para monitorizar redes, servidores y dispositivos IoT. Ambos permiten crear gráficos detallados a partir de sondeos de SNMP, ICMP o agentes locales.

LibreNMS en Docker:

services:
  librenms:
    image: librenms/librenms
    ports:
      - "8000:8000"
      - "514:514/udp"  # Para syslog
    environment:
      - DB_HOST=db
      - DB_NAME=librenms
      - DB_USER=librenms
      - DB_PASS=secret
    depends_on:
      - db

LibreNMS descubre automáticamente dispositivos en la red y genera alertas por correo u otros métodos. Ejemplo: Vigilar el ancho de banda de un servidor o notificar cuando un switch se desconecte.


Alternativas minimalistas: htop, bpytop y glances

Para casos básicos o servidores muy limitados, herramientas como htop (interactiva para CPU/memoria), bpytop (versión en Python con más visualizaciones) o glances (monitor en terminal con estilo modernillo) son suficientes:

Ejemplo con glances:

docker run -d --name=glances -p 61208:61208 -e GLANCES_OPT="-w" nicolargo/glances

Accede a http://[TU-IP]:61208 para ver un resumen de recursos + procesos.


Conclusión: ¿cuál elegir?

Herramienta Facilidad Visualización Alertas Escalabilidad
Netdata ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ Media
Prometheus/Grafana ⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ Alta
TIG Stack ⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐ Muy alta
LibreNMS ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐ Baja

Recomendación final:

  • Si buscas rapidez y simplicidad, usa Netdata.
  • Si necesitas flexibilidad y alertas avanzadas, elige Prometheus + Grafana.
  • Para métricas pesadas, opta por TIG Stack.

Bonus: alertas y notificaciones

Todas estas herramientas permiten configurar alertas automáticas. Por ejemplo:

  • Netdata: Crear alarmas en /etc/netdata/health.d/ (ej: notificar si la temperatura de la CPU supera 80°C).
  • Prometheus: Definir reglas en alert.rules y enviarlas a Telegram o un correo mediante Alertmanager.
  • LibreNMS: Configurar notificaciones por Slack o syslog.

** ** **