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.
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.
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.
How to use
- Create a
config.yamldefining your endpoints with health conditions. Each endpoint specifies a URL, check interval, and conditions to evaluate. - 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. - Configure alerting to receive notifications via Slack, Discord, PagerDuty, email, or webhooks when endpoints fail their health conditions.
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'
Related on TokRepo
- AI tools for monitoring — Monitoring and observability tools
- AI tools for DevOps — Infrastructure management and automation
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
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.
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.
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.
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.
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)
- Gatus GitHub Repository— Gatus monitors endpoints with configurable conditions and displays a status page
- Gatus Endpoints Documentation— Gatus supports HTTP, TCP, DNS, ICMP, and SSH endpoint monitoring
- Gatus Alerting Documentation— Gatus provides uptime badges and supports 10+ alerting channels
Related on TokRepo
Discussion
Related Assets
Moodle — Open-Source Learning Management System
The most widely used open-source learning platform, providing course management, assessments, and collaboration tools for educators and organizations worldwide.
Sylius — Headless E-Commerce Framework on Symfony
An open-source headless e-commerce platform built on Symfony and API Platform, designed for developers who need a customizable and API-first commerce solution.
Akaunting — Free Self-Hosted Accounting Software
A free, open-source online accounting application built on Laravel for small businesses and freelancers to manage invoices, expenses, and financial reports.