Gatus

Gatus

WHAT IS IT?

Gatus is a self-hosted health dashboard written in Go and driven by a YAML file. Every monitored endpoint is described with its target, its interval and a list of conditions it has to satisfy to count as healthy. What you get is a readable status page plus an alerting engine, with no SaaS behind it and no agent to deploy on the monitored machines.

WHY IS IT INTERESTING?

  • Conditions, not just a ping: validation is written with placeholders such as [STATUS] == 200, [RESPONSE_TIME] < 500, [BODY].user.name == john using JSONPath, or len([BODY].data) < 5. You assert on the content of the response, not merely on the fact that one arrived.
  • Plenty of protocols: HTTP, TCP, UDP, SCTP, ICMP, DNS, SSH, WebSocket and gRPC. Dedicated conditions also cover certificate expiry with [CERTIFICATE_EXPIRATION] > 48h and domain expiry.
  • All in YAML: the config supports environment variable interpolation and loading several merged files from a directory. It versions and deploys like code.
  • Alerts everywhere: around forty built-in providers, from Slack and Discord to PagerDuty, Opsgenie, ntfy, Gotify or Home Assistant, plus custom webhooks for the rest.
  • Storage your way: memory by default, in which case nothing survives a restart, SQLite with write-through caching, or PostgreSQL for a shared instance.

USE CASES

  • Exposing a public status page for your services
  • Asserting that an API returns the right JSON rather than just a 200
  • Watching TLS certificate and domain expiry before either one bites
  • Monitoring internal services of a Kubernetes cluster from the inside
  • Routing homelab alerts to ntfy or Gotify

SOURCES

REPOhttps://github.com/TwiN/gatus
SITEhttps://gatus.io
LICENSEApache-2.0