1
Home
forgejo_admin edited this page 2026-08-15 22:29:58 +00:00
gatus — estate service health
Tier-1 uptime/health status page (Gatus) at
https://gatus.192.168.10.46.sslip.io. Config is managed in git
(forgejo_admin/gatus).
Where it runs
Deployment gatus in namespace gatus (image pinned), config mounted from ConfigMap gatus-config,
which is built from config/config.yaml in the repo (the single source of truth). Ingress
gatus.192.168.10.46.sslip.io.
What it monitors (18 endpoints, grouped)
- identity: keycloak · secrets: infisical · cmdb: netbox · monitoring: librenms · core-network: dns1-resolver (DNS check)
- platform: forgejo, temporal, rancher
- observability: grafana, prometheus, alertmanager, backstage, qlever, qlever-ui
- pipeline: collector, mover, triplify, loader, forgejo-trigger
In-cluster targets use the service FQDN + health path (e.g.
http://loader.pipelines.svc.cluster.local:8080/healthz); public services use their ingress
(https://<svc>.192.168.10.46.sslip.io/..., client.insecure: true for the lab CA).
Add / change an endpoint
Edit config/config.yaml under endpoints:, commit, then redeploy:
- name: <service>
group: <group>
url: "https://<service>.192.168.10.46.sslip.io/<health>" # or in-cluster svc FQDN
interval: 60s
client: { insecure: true } # lab-CA certs; use ignore-redirect for 3xx health
conditions: ["[STATUS] == 200"] # or [DNS_RCODE] == NOERROR for DNS
kubectl -n gatus create configmap gatus-config \
--from-file=config.yaml=config/config.yaml --dry-run=client -o yaml | kubectl apply -f -
kubectl -n gatus rollout restart deploy/gatus
Notes
- A service must have a reachable HTTP/DNS/TCP health endpoint to be checked (Gatus doesn't do
PromQL). Headless workloads need a Service first — e.g. the collector got a
/healthz+ Service so it could be added here. - DaemonSets checked via a ClusterIP Service (e.g.
mover-podlogs) are an "at least one up" check; per-node detail lives in Prometheus/Grafana. - Gatus doesn't monitor itself (it can't report its own downtime) — that's expected.