You can't fix what you don't see. Two complementary self-hosted tools cover the basics: Uptime Kuma for "is it up?" and Grafana for "how is it doing?"
Uptime Kuma — status & alerts
A friendly uptime monitor: HTTP/TCP/ping checks, a status page, and alerts to Discord, ntfy, email, etc.
services:
uptime-kuma:
image: louislam/uptime-kuma:1
restart: unless-stopped
volumes: ["kuma:/app/data"]
ports: ["127.0.0.1:3001:3001"]
volumes: { kuma: {} }
Grafana — metrics & dashboards
For trends (CPU, RAM, request rates), pair Grafana with a metrics source:
| Stack | Role |
|---|---|
| Prometheus | Scrapes & stores metrics |
| node_exporter | Host metrics (CPU/RAM/disk) |
| Grafana | Dashboards & alerting |
| Loki | Logs alongside metrics (Log Analysis and SIEM) |
What to monitor first
- Each service's uptime + a public status page.
- Disk space (the #1 silent killer).
- Backups succeeding (Database Backups and Replication).
- Auth failures / anomalies (Log Analysis and SIEM).
Start with Uptime Kuma today; add Grafana when you want history and trends.
Related: Log Analysis and SIEM · Database Backups and Replication · Docker Compose for Self-Hosting