Homelab Monitoring Without the Guesswork
My lab monitoring is a Telegraf, InfluxDB, and Grafana stack in Docker. Telegraf polls the switch and firewall over SNMP every 60 seconds, InfluxDB stores it, Grafana draws it. Standard stuff, but a few decisions made it much less painful than most write-ups make it look.
The one I’d recommend loudest: use numeric OIDs in the Telegraf config instead of named MIBs. Getting MIB files installed and resolving inside a container is its own hobby, and the numeric OIDs just work. Uptime, CPU, and the full interface table with traffic counters, oper status, and errors, all polled without a single MIB installed.
Second decision: everything is provisioned from files. Grafana datasources and dashboards load from YAML and JSON that live in the repo and get bind-mounted into the container. Before that, my dashboards lived in a Docker volume, which means they lived nowhere. If it’s not in git, one bad container update and you’re rebuilding panels from memory. Same goes for secrets, which moved out of the compose file and into an env file that stays out of the repo.
One diagnosis story. My first dashboard looked broken, sparse points scattered where smooth lines should be. I went digging for the fault and there wasn’t one. Telegraf polls every 60 seconds and the panel was zoomed in tight enough to show the gaps between polls. The lesson applies everywhere: when a graph looks wrong, check what the data actually is before you start fixing things. I verified the datasource with curl against the API instead of trusting the UI’s green checkmark, which is the monitoring equivalent of checking fuel pressure with a real gauge.
The graphs are not the point. The point is that when something in the lab acts up, I look at history instead of guessing, the same way a scan tool beats listening to an engine and nodding.
