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.

config.yaml
# 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: true

Run 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.

  1. Add the URL Paste the address of your site or its health endpoint. The first check runs straight away, from outside your network.
  2. 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.
  3. 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

FeatureLogdashGatus
Who keeps the checker runningWe do, outside your networkYou do, on a box you patch
Checks in gitNo, a form in the browserYAML, reviewed like code
Check typesHTTP status code and response timeAdds TCP, ICMP, DNS, TLS, certificate and domain expiry
Alert channelsTelegram and webhook40+ providers, Telegram included
LicenceAGPL-3.0Apache 2.0
Self-hosting in productionNot ready yetOne container
Logs and metrics beside the checksEight SDKs into the same serviceUptime 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.
Does the licence of open source website monitoring matter?
Only if you change the code and offer it to others as a service. MIT and Apache 2.0 let you do anything. AGPL-3.0, used by Logdash, Checkmate and OpenStatus, lets you run and change it for any purpose, including commercial, but a modified version you run for other people has to be published under the same licence.
Is there open source URL monitoring that runs without a server?
Upptime. It runs on GitHub Actions in your own repository, checks every 5 minutes and costs nothing. The trade is the 5-minute floor and scheduled runs that can start late when runners are busy.
Is Logdash open source website monitoring?
Yes, AGPL-3.0 with the code on GitHub. The hosted version is what you use today. Production self-hosting means wiring up MongoDB, Redis and ClickHouse by hand and is tracked as an open issue.
Is website uptime monitoring open source software really free?
The software is. The server, its backups and the hours spent patching it are not, and the monitor is only as reliable as the box it runs on. The Logdash free plan covers 5 services at a 5-minute interval if you would rather run nothing.

Point it at your own URL and watch it for real.