Post

Gatus

Gatus

Gatus

Purpose

Gatus is a health/uptime monitoring dashboard that polls every externally-routed service on this cluster and a handful of bare hosts (TrueNAS, Proxmox, etc.), displaying status and history.

Deployment

ItemValue
Imagetwinproduction/gatus:v5.36.0
Namespacedefault
Replicas1
Service typeClusterIP, port 8080
Storage backendExternal PostgreSQL (192.168.1.33:5432)
IngressTraefik IngressRoute, TLS via shared local-example-com-tls cert
GitOpsManaged by ArgoCD (argocd/apps/gatus.yaml)

Config (endpoints + UI) is mounted from a ConfigMap at /config; Postgres credentials come from a Secret via envFrom, interpolated into the storage connection string as ${POSTGRES_USER} / ${POSTGRES_PASSWORD} / ${POSTGRES_DB}.

The Postgres backend is an external host (192.168.1.33), not the in-cluster Postgres Deployment used by other apps — separate database, not shared history.

Monitored Endpoints

Roughly 25 endpoints are configured, in two groups:

  • Ping — ICMP checks against bare hosts (TrueNAS, Proxmox, goku) and [STATUS] HTTP checks against every *.prod-k3s.iot-proxmox.net service on the cluster (accepting 200/301/302/401/403 as healthy).
  • DNS — a matching [DNS_RCODE] == NOERROR check per hostname, verifying each service still resolves.

Services checked include Longhorn, ArgoCD, draw.io, this doc site, the media indexer, Prometheus, pgAdmin, Kafka UI, Homepage, Grafana, SFTPGo, n8n, ActiveMQ, Mailpit, RustFS, Portainer, Open WebUI, DBeaver, and the Traefik dashboard.

GitOps

The ArgoCD Application tracks the k3s branch of this app’s own Gitea repo (gitea.prod.iot-proxmox.net/bjones/Gatus), auto-syncing with prune: true and selfHeal: true. A separate test branch runs a Kustomize-based layout used only by CI to smoke-test changes against a throwaway cluster before they’re applied to k3s.

Ingress

Routed via Traefik IngressRoute at:

  • gatus.prod-k3s.iot-proxmox.net (with default-headers middleware)
  • www.gatus.prod-k3s.iot-proxmox.net

Resources

 RequestsLimits
CPU200m500m
Memory128Mi256Mi
This post is licensed under CC BY 4.0 by the author.