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>
45 lines
1.8 KiB
JSON
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]}
|
|
]
|
|
}
|