homelab monitoring stack - scrutiny, beszel, glances, dozzle, and tugtainer
logs tell you what happened. monitoring tells you what's happening right now and whether something is about to fail. here's the self-hosted monitoring stack running on the homelab - covering drive health, server metrics, container logs, and image updates using lightweight Docker containers.
the tools
each does one specific thing:
| tool | job |
|---|---|
| Scrutiny | SMART data — drive health and failure prediction |
| Beszel | server metrics — CPU, RAM, disk, network over time |
| Glances | real-time system stats with a REST API |
| Dozzle | live log tailing for Docker containers |
| Tugtainer | checks for new container image versions |
scrutiny: drive health
Scrutiny runs SMART diagnostics on all drives and surfaces the results in a dashboard. SMART data is noisy and hard to interpret raw — Scrutiny normalizes it and flags drives based on the same thresholds that cloud storage providers use internally to predict failures.
useful for a box running 3-4 spinning drives. a drive showing reallocated sectors or increasing error counts is worth swapping before it fails.
beszel: server metrics
Beszel is a lightweight server monitoring hub. an agent runs on each host and ships CPU, memory, disk, and network metrics back to a central dashboard. useful for spotting trends — a container with a memory leak, disk usage creeping up, or a network interface saturating.
glances: real-time stats + api
Glances is a system monitor with a built-in REST API. it's what the stats page on this site uses — Fastify proxies requests to Glances and returns live metrics to the browser.
running Glances in a container with the host filesystem mounted gives it visibility into the actual host drives, not just Docker's mounts.
dozzle: log tailing
Dozzle is a web UI for tailing Docker container logs in real time. it's the first place to check when a container is misbehaving — no SSH required, just open the browser.
Dozzle runs a main instance on the GPU server and a lightweight agent on the original server. the main instance aggregates both, so all container logs from both hosts are in one place.
tugtainer: image updates
Tugtainer checks all running containers against their registries and shows which images have updates available. one-click update for any container. an agent runs on the original server and reports back to the main instance on the GPU server.
without something like this, containers quietly fall behind on updates. it's not urgent for most things, but knowing about updates is better than not knowing.
hardware for a monitoring server
the entire monitoring stack runs comfortably on a single mini PC. all these tools are lightweight Docker containers - they don't need a GPU or tons of RAM. a small fanless mini PC with 8-16GB RAM is more than enough to run the full monitoring suite alongside other homelab services. low power draw means it costs almost nothing to run 24/7.

AMD Ryzen - compact, fanless, low power
Perfect as a dedicated homelab monitoring and Docker server
view on amazonaffiliate link - helps support the blog
eli5
think of this as the health monitoring system for the house. Scrutiny is the inspector who checks the foundation for cracks (drive health). Beszel is the utility meter that tracks power and water usage over time (server metrics). Glances is the thermostat readout on the wall — current temperature at a glance. Dozzle is the intercom system — you can listen to what any room is saying right now (container logs). Tugtainer is the person who checks whether any appliances have newer firmware available. each tool covers a different kind of visibility, and together they mean there are very few surprises.