A homelab without monitoring is a homelab whose outages you discover at the moment you need it. Two tools cover the essentials: Uptime Kuma answers "is it working?", Grafana answers "why did it stop working?".

Level 1: Uptime Kuma

Uptime Kuma checks at regular intervals that a service responds, and alerts you when it goes down (email, Telegram, Discord…).

services:
  kuma:
    image: louislam/uptime-kuma:1
    restart: unless-stopped
    ports:
      - '3001:3001'
    volumes:
      - kuma_data:/app/data

volumes:
  kuma_data:

The probes I've configured:

Target Probe type Interval
Reverse proxy HTTPS 60 s
Database TCP 60 s
TLS certificate Expiry 1 day
Router Ping 30 s

Level 2: Prometheus and Grafana

To understand an outage, you need metrics. node_exporter exposes the machine's state (CPU, memory, disk, network), Prometheus collects it, Grafana displays it.

scrape_configs:
  - job_name: node
    static_configs:
      - targets: ['node-exporter:9100']

A single dashboard is enough to start: CPU load, memory, remaining disk space, temperature. Most homelab outages come from a full disk.

Warning: don't monitor everything from day one. Every pointless alert teaches you to ignore alerts. Start with three or four truly critical probes.

Lesson learned after a 3 a.m. alert

Checklist

  • Uptime Kuma installed and notifications tested
  • Alert at 85% disk usage
  • Grafana dashboard shared with the other members of the household

The real test of a monitoring setup is to deliberately shut down a service and check that the alert actually arrives.