Monitoring
Prometheus and Grafana form the central monitoring stack for the whole homelab, running as Docker containers on the NAS. Every machine in the flat — Proxmox host, Docker VM, Synology NAS, and Raspberry Pi devices — feeds metrics into this central instance.
What's monitored
- Proxmox host metrics — a PVE exporter reports node-level and per-VM/LXC CPU, memory, and disk metrics into a dedicated Grafana dashboard.
- Host metrics everywhere — a node exporter runs on the NAS, the Docker host, and every Raspberry Pi, feeding basic CPU/RAM/disk/network stats.
- Container metrics — cAdvisor runs on both the Docker host and the NAS, breaking down resource usage per container.
- Network hardware via SNMP — an SNMP exporter polls a network-attached printer for toner level, page count, and status, proving the same pattern works for any SNMP-capable device.
Dashboards
| Dashboard | Focus |
|---|---|
| Proxmox monitoring (extended) | Node-level and per-guest VM/LXC metrics |
| Docker container monitoring | Per-container CPU/memory/network/disk |
| Network printer | Toner level, page count, online/offline status via SNMP |
How it's deployed
Prometheus runs as a Docker container on the Synology NAS with a bind-mounted data directory for persistence. Grafana is deployed as a sibling container, connected to Prometheus as its primary datasource. Both containers are defined in a single Docker Compose file and managed via Portainer. The Prometheus configuration file defines scrape targets, scrape intervals (15 seconds for hosts, 60 seconds for network devices), and retention policies.
Alerting
Basic alerting is configured through Prometheus Alertmanager, which sends notifications to a dedicated Telegram channel for critical events like host-down or disk-full conditions. The dead-man's-switch pattern ensures that if Prometheus itself stops scraping, an alert fires within minutes. More sophisticated alerting rules (disk space prediction, temperature thresholds) are planned but not yet implemented.
Open items
- Alerting rules are not yet configured for most services.
- The secondary (test) Proxmox host isn't monitored yet — it's usually powered off.
- Retention policy for Prometheus data hasn't been tuned.
- Monitoring data itself isn't currently backed up.