homelab/k3s/health/checks.json
Samantha Atkins 58bfd422d4 Add homelab internal health checker
Python checker runs on pve-control via systemd timer every 10 min,
publishes issues to NATS subject homelab_health_issue. Checks NATS,
Postgres, MariaDB, Ghost blogs, DB dependents, standalone services,
and every NodePort. Silent when healthy.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 15:48:07 -04:00

45 lines
1.8 KiB
JSON

{
"nats": {
"url": "nats://10.0.0.6:32386",
"subject": "homelab_health_issue",
"monitoring_nodeport": 32388
},
"databases": [
{
"name": "postgres",
"namespace": "default",
"pod_label": "app=postgres",
"probe_cmd": ["pg_isready", "-U", "postgres"]
},
{
"name": "mariadb",
"namespace": "default",
"pod_label": "app=mariadb",
"probe_cmd": ["mariadb-admin", "ping", "--silent"]
}
],
"services": [
{"name": "ghost1", "namespace": "default", "db": "mariadb",
"probe_path": "/ghost/api/admin/site/", "expected": [200, 301, 401]},
{"name": "ghost2", "namespace": "default", "db": "mariadb",
"probe_path": "/ghost/api/admin/site/", "expected": [200, 301, 401]},
{"name": "ghost3", "namespace": "default", "db": "mariadb",
"probe_path": "/ghost/api/admin/site/", "expected": [200, 301, 401]},
{"name": "mediawiki", "namespace": "default", "db": "mariadb",
"probe_path": "/", "expected": [200, 301, 302]},
{"name": "forgejo", "namespace": "default", "db": "postgres",
"probe_path": "/api/healthz", "expected": [200]},
{"name": "authentik", "namespace": "default", "db": "postgres",
"probe_path": "/-/health/live/", "expected": [200, 204]},
{"name": "listmonk", "namespace": "default", "db": "postgres",
"probe_path": "/", "expected": [200, 302]},
{"name": "n8n", "namespace": "default", "db": "postgres",
"probe_path": "/healthz", "expected": [200]},
{"name": "mattermost", "namespace": "default", "db": "postgres",
"probe_path": "/api/v4/system/ping", "expected": [200]},
{"name": "vaultwarden", "namespace": "default", "db": null,
"probe_path": "/alive", "expected": [200]},
{"name": "garage-webui", "namespace": "default", "db": null,
"probe_path": "/", "expected": [200, 302]}
]
}