Skip to content

Best Self-Hosted Monitoring Tools

Self-hosted monitoring tools answer three different questions: is it up, did the job run, and what is this box doing right now. Start there, because the tools overlap far less than they look like they do. Uptime Kuma, Gatus and Checkmate actively probe endpoints over HTTP, TCP, ping and DNS from wherever you run them. Healthchecks does the opposite — it waits for your cron jobs and backups to ping it and alerts when one goes quiet, which is the only way you find out a nightly backup stopped running weeks ago. Beszel and Glances watch machines instead of endpoints: Beszel collects CPU, memory, disk and container stats from a small agent per host, while Glances is a terminal view of the single box it runs on. The second axis is how much you are agreeing to operate. Gatus is one Go binary and a YAML file; Uptime Kuma is one container; Checkmate wants MongoDB beside it; Zabbix is a server, a database, a PHP frontend and an agent on every host, and only repays that at real scale. And if what you actually want is the full metrics, logs and traces stack — Grafana, Prometheus, SigNoz — that is observability, and it has its own hub.

MonitoringBeszel
A lightweight server monitoring hub with a small agent per machine, charting CPU, memory, disk, network and Docker container stats with history and threshold alerts. The hub is a single Go binary built on PocketBase, so there is no separate database to run.
GoPocketBaseSQLite
easyRead guide →
MonitoringCheckmate
An uptime and incident monitor with HTTP, ping, port, SSL, Docker and game-server checks, PageSpeed reports and status pages, wrapped in an unusually polished dashboard. Hardware metrics come from a separate agent called Capture rather than from the app itself.
TypeScriptNode.jsMongoDB
easyRead guide →
MonitoringGatus
A developer-oriented health dashboard and status page driven entirely by a YAML file, checking endpoints over HTTP, ICMP, TCP and DNS and evaluating each result against conditions on status code, response time, body values or certificate expiry. There is no setup UI — the monitor list lives in your repo.
Go
easyRead guide →
MonitoringGlances
A terminal system monitor in the lineage of top and htop, folding CPU, memory, disk I/O, network, sensors and container stats into one adaptive view. It can also serve a web UI and REST API, but it reports on the machine it runs on — it is a system monitor, not a hosted uptime service.
Python
easyRead guide →
MonitoringHealthchecks
A cron job and background task monitor: your scheduled jobs ping a URL when they finish, and Healthchecks alerts you when the ping does not arrive on time. It watches jobs from the inside — the dead-man's-switch half of monitoring that endpoint checkers miss entirely.
PythonDjangoPostgreSQL
moderateRead guide →
MonitoringUptime Kuma
A slick self-hosted uptime monitor and status page — HTTP, TCP, ping, and more, with notifications to nearly anything. One container, zero fuss.
JavaScriptNode.js
easyRead guide →
MonitoringZabbix
Enterprise-grade infrastructure monitoring covering agents, SNMP, IPMI, JMX and agentless checks, with templates, network auto-discovery, escalation-aware alerting and long-term trend storage. It is a server, a database, a PHP frontend and agents — not a single container you start and forget.
CPHPMySQL
hardRead guide →

Replace a paid tool

Search SelfHost Atlas

Search apps, comparisons, guides, and categories.

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.