ScriptsApr 10, 2026·3 min read

Gatus — Automated Status Page with Health Checks & Alerts

Gatus is a developer-oriented health dashboard and status page. Define endpoints in YAML, get automated monitoring with uptime badges, alerts, and a beautiful status page.

TL;DR
Gatus monitors endpoints defined in YAML, generates uptime badges, sends alerts, and displays a clean status page for your services.
§01

What it is

Gatus is a developer-oriented health monitoring tool that checks service availability and displays results on a status page. Endpoints are defined in YAML configuration files with conditions that must be met for a service to be considered healthy. Gatus checks HTTP responses, DNS records, TCP connections, and more on configurable intervals.

It targets DevOps engineers and development teams who want a lightweight status page and health monitoring system without the overhead of full monitoring platforms like Prometheus or Datadog.

§02

How it saves time or tokens

Gatus replaces the need to build a custom status page. Define your endpoints and health conditions in YAML, deploy Gatus, and you have a production-ready status page with uptime history, response time charts, and embeddable badges.

The condition-based health checking is more flexible than simple up/down pings. You can check HTTP status codes, response body content, response time thresholds, certificate expiration, and DNS resolution results in a single endpoint definition.

§03

How to use

  1. Create a config.yaml defining your endpoints with health conditions. Each endpoint specifies a URL, check interval, and conditions to evaluate.
  2. Deploy Gatus with Docker: docker run -p 8080:8080 -v ./config.yaml:/config/config.yaml twinproduction/gatus. The status page is available at port 8080.
  3. Configure alerting to receive notifications via Slack, Discord, PagerDuty, email, or webhooks when endpoints fail their health conditions.
§04

Example

# config.yaml
endpoints:
  - name: API
    url: 'https://api.example.com/health'
    interval: 60s
    conditions:
      - '[STATUS] == 200'
      - '[RESPONSE_TIME] < 500'
      - '[BODY].status == up'
    alerts:
      - type: slack
        send-on-resolved: true

  - name: Website
    url: 'https://example.com'
    interval: 120s
    conditions:
      - '[STATUS] == 200'
      - '[CERTIFICATE_EXPIRATION] > 720h'

  - name: Database
    url: 'tcp://db.example.com:5432'
    interval: 30s
    conditions:
      - '[CONNECTED] == true'

alerting:
  slack:
    webhook-url: 'https://hooks.slack.com/services/xxx/yyy/zzz'
§05

Related on TokRepo

§06

Common pitfalls

  • Defining too many conditions without understanding precedence. If any condition fails, the endpoint is marked unhealthy. Start with basic status code checks and add response time and body checks incrementally.
  • Not configuring persistent storage for uptime history. Without a database (SQLite or PostgreSQL), Gatus loses all historical data on restart. Mount a volume for the SQLite database to persist uptime records.
  • Checking endpoints too frequently from a single instance. Very short intervals (under 10 seconds) can trigger rate limiting or appear as attack traffic to the monitored service. Use reasonable intervals for external endpoints.

Frequently Asked Questions

What can Gatus monitor?+

Gatus monitors HTTP/HTTPS endpoints, TCP connections, DNS records, ICMP ping, and SSH connections. Health conditions can check status codes, response times, response body content (including JSON paths), SSL certificate expiration, and DNS resolution results.

How does the status page look?+

Gatus provides a clean, responsive status page showing each endpoint with its current status, response time graph, and uptime percentage over configurable time windows. The page supports dark mode and can be customized with logos and descriptions.

Can I embed uptime badges?+

Yes. Gatus generates SVG badges for each endpoint showing uptime percentage and response time. Embed these badges in README files, documentation, or dashboards using the badge URL: /api/v1/endpoints/{key}/uptimes/{duration}/badge.svg.

What alerting channels does Gatus support?+

Gatus supports Slack, Discord, PagerDuty, Pushover, Mattermost, Telegram, Twilio, email (SMTP), Teams, Google Chat, Opsgenie, and custom webhooks. Alerts fire when conditions fail and optionally send resolved notifications when services recover.

How does Gatus compare to Uptime Kuma?+

Both are self-hosted status page tools. Gatus uses YAML configuration and is more developer-oriented with powerful condition expressions. Uptime Kuma has a web UI for adding monitors and is more accessible to non-technical users. Gatus supports configuration-as-code, which integrates better with Git workflows.

Citations (3)

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets