OpenSourcePicks

Open source alternatives to popular software, with live GitHub data

GitHub stats refreshed every day

Gatus

Health checks and status page defined in YAML, with conditions on status, body, latency and certificates

Open source alternative to

Visit GatusGitHubDocumentation

Main features

  • Checks defined in YAML with conditions on status, body, JSON path, response time and IP
  • HTTP, GraphQL, ICMP, TCP, UDP, WebSocket, gRPC, DNS, SSH and TLS checks
  • Certificate and domain expiry conditions
  • External endpoints that receive pushed results, with heartbeat alerts
  • Multi-step suites with shared context (alpha)
  • About 40 alert providers plus custom webhooks
  • Status page announcements for incidents and maintenance
  • Maintenance windows that silence alerts
  • SSH tunnels to reach internal services
  • Basic auth or OIDC login for the dashboard
  • Prometheus metrics and uptime badges

What Gatus does

Gatus is a health dashboard for developers. You describe each endpoint in a YAML file, with its URL or address, an interval and a list of conditions, and Gatus runs the checks and shows the results on a status page. A condition can test far more than “is it up”: the HTTP status, the response time, a value inside a JSON body, the resolved IP, or how many hours remain before the TLS certificate or the domain expires. The author points out that this lets Gatus double as a simple automated acceptance test.

The project’s own argument for it is that metric-based alerting only fires when real users are already sending traffic. If a load balancer dies, no requests reach the application and error rates stay flat. Active checks catch that case before customers report it.

Supported protocols include HTTP (with a GraphQL helper), ICMP, TCP, UDP, SCTP, WebSocket, gRPC, DNS, SSH, STARTTLS and TLS. External endpoints accept results pushed by your own scripts or agents and can alert when a heartbeat stops. Suites, still marked alpha, run several requests in sequence and pass values between them, for example log in, fetch a protected page and log out.

Alerts and status page

Alerts can go to about 40 named providers, including Slack, Microsoft Teams workflows, PagerDuty, Opsgenie, Discord, Telegram, Matrix, ntfy, email and SMS gateways, or to any custom HTTP endpoint. Maintenance windows suppress alerts at set times and days. A connectivity checker pauses all checks when Gatus itself loses internet access, which avoids a flood of false alarms.

The dashboard doubles as the public status page. Announcements typed as outage, warning, information or operational can be pinned to the top, which serves as basic incident communication. The dashboard can be protected with basic auth or OpenID Connect, and a /metrics endpoint feeds Prometheus.

Self-hosting Gatus

Gatus is a single Go binary, published as a Docker image on GitHub Container Registry and Docker Hub, with an official Helm chart and a Terraform module for Kubernetes. You mount a configuration file, and changes to it can be reloaded without a restart. By default results are kept in memory and disappear on restart; for history, point it at SQLite or PostgreSQL. SSH tunnels let one instance reach services behind a bastion host.

Checks run from wherever Gatus is deployed. The experimental remote instances feature can merge several Gatus deployments into one dashboard, which is one way to check from more than one location.

Hosted version

The author runs a managed service at gatus.io, built on the open source project and offered with a free trial. Its plans and probe locations were not readable from the website when we checked.

Limitations

There is no point-and-click editor for monitors: everything is YAML, which is a strength for infrastructure-as-code teams and a hurdle for others. The status page is simpler than dedicated tools, with no subscriber notifications described in the documentation. Like other check-based tools, it does not collect server metrics, logs or traces.

Who it suits

Gatus fits developers and platform teams who keep configuration in Git and run Kubernetes or Docker, and who want checks that assert on responses rather than just ping them. If you prefer a graphical interface with dozens of ready-made check types, Uptime Kuma is easier to start with.

Technical details

Self-hosting needs

  • SQLite or PostgreSQL (optional)

Built with

  • Go
  • Vue

GitHub topics

  • alerting
  • container
  • dashboard
  • devops
  • docker
  • go
  • golang
  • health
  • monitor
  • monitoring
  • monitoring-tool
  • notifications
  • self-hosted
  • selfhosted

Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.