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.
Review-first install path
This asset needs a review step. The copied prompt tells the agent to dry-run, show the writes, then proceed only after confirmation.
npx -y tokrepo@latest install 592ca5d9-34e1-11f1-9bc6-00163e2b0d79 --target codexDry-run first, confirm the writes, then run this command.
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
OpenStatus — Open-Source Monitoring and Status Page Platform
OpenStatus is an open-source uptime monitoring and status page platform that checks endpoints from multiple regions, tracks latency and availability, and serves beautiful public status pages for your services.
Cachet — Open Source Self-Hosted Status Page System
Cachet is a self-hosted status page application that helps teams communicate service availability and incidents to users through a clean web dashboard.
Upptime — GitHub-Powered Uptime Monitor and Status Page
An open-source uptime monitor and status page powered entirely by GitHub Actions, Issues, and Pages, requiring no server or database.
Terratest — Automated Testing for Infrastructure Code
Terratest is a Go library that makes it easy to write automated tests for your Terraform, Packer, Kubernetes, and Docker infrastructure.