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.

We earn commissions when you shop through the links below. Full disclosure →
Monitoring

Beszel

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 →
Monitoring

changedetection.io

Watches web pages for content changes and sends notifications through Apprise to Discord, Slack, Telegram, email, webhooks and more, with CSS/XPath/JSON filters to limit a watch to part of a page. Plain HTTP fetching works out of the box; JavaScript-heavy pages need an optional Playwright/Chrome browser container.
PythonFlask
easyRead guide →
Monitoring

Checkmate

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 →
Monitoring

Gatus

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 →
Monitoring

Glances

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 →
Monitoring

Healthchecks

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 →
Monitoring

LibreSpeed

A self-hosted browser speed test measuring download, upload, ping and jitter with XMLHttpRequest and Web Workers, so no Flash, Java or WebSocket is needed. Optional telemetry stores results in SQLite, MySQL or PostgreSQL behind a password-protected stats page.
JavaScriptPHP
easyRead guide →
Monitoring

Speedtest Tracker

Runs scheduled internet speed tests with the Ookla Speedtest CLI and records download, upload, ping and packet loss over time, with charts, threshold notifications and InfluxDB/Prometheus export. Built on Laravel and shipped as a LinuxServer.io image with SQLite by default.
PHPLaravel
easyRead guide →
Monitoring

Uptime 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 →
Monitoring

Zabbix

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 →

Head-to-heads in this category

Where to host itaffiliate disclosure
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Replace a paid tool

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