Open source website monitoring
Open source website monitoring means a checker whose code you can read and run yourself: Uptime Kuma or Gatus if you want to host it, Upptime if you want GitHub Actions to run it, and Logdash if you want the code open but the monitor run for you.
Open source answers one question: can you read the code and run it without asking anyone. It does not answer the question that matters at 3am, which is who keeps the monitor itself running. A self-hosted checker on the same VPS as your site goes down with your site and tells nobody. Pick by where it runs first and by licence second.
Open source uptime monitors worth knowing
- Uptime Kuma, MIT, 90,000+ GitHub stars. Runs on your server as one Docker container with a web UI. The default for a reason.
- Gatus, Apache 2.0, 12,000+ stars. One Go binary driven by a YAML file, on your server or as the managed version at gatus.io.
- Upptime, MIT, 17,000+ stars. Runs on GitHub Actions in your own repository, checks every 5 minutes, opens an issue per outage and publishes a status page on GitHub Pages.
- Checkmate, AGPL-3.0, 10,000+ stars. A newer Kuma-style app on Node.js and MongoDB, installed with Docker Compose.
- OpenStatus, AGPL-3.0, 9,000+ stars. Hosted with checks from 28 regions, or self-hosted with Docker Compose, where checks only run from probes you deploy.
- Logdash, AGPL-3.0. Hosted HTTP checks with status code and response time, Telegram and webhook alerts and a public status page, plus logs and metrics from eight SDKs. The code is public; production self-hosting is not ready yet.
Open source URL monitoring as a config file
If open source to you means checks you can diff, Gatus is the cleanest example. This file watches one URL every minute, fails the check on anything but a 200 or a response slower than 1 second, and messages Telegram after 3 failures in a row, which is the default threshold, and again on recovery.
# docker run -p 8080:8080 -e TELEGRAM_TOKEN -e TELEGRAM_CHAT_ID \
# --mount type=bind,source="$(pwd)"/config.yaml,target=/config/config.yaml \
# ghcr.io/twin/gatus:stable
alerting:
telegram:
token: "${TELEGRAM_TOKEN}"
id: "${TELEGRAM_CHAT_ID}"
endpoints:
- name: website
url: "https://example.com/health"
interval: 1m
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 1000"
alerts:
- type: telegram
send-on-resolved: trueRun it on a different machine from the site it watches, ideally with a different provider. That one rule matters more than which tool on this page you choose.
Website uptime monitoring, open source, without the server
Logdash takes the other trade. The code is AGPL-3.0 on GitHub, so you can read exactly what a check does: one GET with a 10 second timeout, any status from 200 to 399 counts as up, and an alert fires when the monitor flips to down and again when it flips back. What you do not do is run it. That is a loss if self-hosting was the requirement, and a relief if the requirement was a monitor that survives your server. Checks run every 5 minutes on the free plan, every minute on Builder and every 15 seconds on Pro.
- Add the URL Paste the address of your site or its health endpoint. The first check runs straight away, from outside your network.
- Connect Telegram Add a Telegram channel once and attach it to the monitor. A webhook works too if you want to route alerts through your own code.
- Break it on purpose Point the monitor at a path that returns 500, or stop the app. On the next check it flips to down and the Telegram alert arrives with the status code and the error.
Logdash vs Gatus
| Feature | Logdash | Gatus |
|---|---|---|
| Who keeps the checker running | We do, outside your network | You do, on a box you patch |
| Checks in git | No, a form in the browser | YAML, reviewed like code |
| Check types | HTTP status code and response time | Adds TCP, ICMP, DNS, TLS, certificate and domain expiry |
| Alert channels | Telegram and webhook | 40+ providers, Telegram included |
| Licence | AGPL-3.0 | Apache 2.0 |
| Self-hosting in production | Not ready yet | One container |
| Logs and metrics beside the checks | Eight SDKs into the same service | Uptime only, by design |
When Gatus is the better pick
- Open source means you run it. Gatus does that today and Logdash does not.
- Your checks belong in a pull request. A reviewed YAML file beats a form nobody audits.
- You need TCP, DNS, ICMP or certificate expiry checks. Logdash checks HTTP and nothing else.