Skip to content
OpenSourceSoftware.ai

GitHub stars

12,441
—Awaiting first sync

Awaiting first sync

No measured star history yet

What is Gatus?

Gatus checks your websites and APIs on a schedule, so you can find a problem before customers report it. Each check can test more than whether a page loads, such as response time, page content or certificate expiry. Results appear on a status page you can share, and failures send alerts to the tools your team already uses.

Gatus is a developer-oriented health dashboard and status page. It checks services over HTTP, ICMP, TCP, DNS and other protocols, tests each result against conditions such as status code, response time, body content and certificate expiry, and shows the history on a dashboard. Failed checks can trigger alerts to Slack, Teams, PagerDuty, Discord, email and many other providers.

Core capabilities

  • Runs health checks over HTTP, ICMP, TCP, UDP, DNS, SSH, gRPC, WebSocket and TLS.
  • Conditions test status code, response time, body, certificate and domain expiry.
  • Sends alerts to Slack, Teams, PagerDuty, Discord, Telegram, email and more.

Health checks with clear conditions

Each endpoint in the YAML configuration has a URL, a check interval and a list of conditions. Conditions use placeholders such as [STATUS], [RESPONSE_TIME], [BODY], [CERTIFICATE_EXPIRATION] and [DOMAIN_EXPIRATION]. Besides HTTP, Gatus can check ICMP, TCP, UDP, DNS, SSH, gRPC, WebSocket, STARTTLS and TLS endpoints. External endpoints let your own scripts push results to Gatus, with an optional heartbeat that alerts when updates stop arriving.

  • Health checks
  • Conditions
  • YAML
  • DNS

Status page and alerting

The dashboard shows uptime and response time history for every endpoint, and endpoint groups keep related services together. Announcements show messages about outages, warnings or planned work at the top of the page, and badges display uptime or response time on other sites. Alerts can go to a long list of providers, including Slack, Teams, PagerDuty, Opsgenie, Discord, Telegram and email, with thresholds and maintenance windows to reduce noise. Access to the dashboard can be limited with basic authentication or OIDC.

  • Status page
  • Alerting
  • Badges
  • OIDC

Run it yourself under Apache-2.0

Run the ghcr.io/twin/gatus:stable or twinproduction/gatus:stable Docker image on port 8080 with your config.yaml mounted, or install the Helm chart on Kubernetes. Results are kept in memory by default and lost on restart, so the docs show SQLite or PostgreSQL storage for lasting history. Prometheus metrics are available at /metrics when enabled. Gatus is released under the Apache-2.0 licence, and Gatus.io is a separate paid managed service from the same author.

  • Self-hosted
  • Docker
  • Kubernetes
  • Apache-2.0

Where it fits

Use cases

  1. 01

    Publish a status page for your services

    Write a config.yaml with an endpoints list, giving each endpoint a name, URL, interval and conditions such as [STATUS] == 200. Run the ghcr.io/twin/gatus:stable image with the file mounted at /config/config.yaml. Use the group field to keep related endpoints together and add announcements to tell visitors about outages or planned work.

  2. 02

    Get alerted before customers notice an outage

    Configure a provider such as Slack or PagerDuty under alerting, then add alerts to each endpoint. Set failure-threshold for how many failed checks in a row trigger an alert, and turn on send-on-resolved to hear when the service recovers. A maintenance window stops alerts during planned work.

  3. 03

    Watch certificates and domains before they expire

    Add a condition such as [CERTIFICATE_EXPIRATION] > 48h to an HTTPS endpoint, or [DOMAIN_EXPIRATION] > 720h to track domain renewal. The check fails once the limit is reached, which sends the alerts you configured. With metrics enabled, the same values are exposed to Prometheus at /metrics.