feat(health-checks): enhance health check configuration and logging
quality / commitlint (push) Skipped
CD / update-wiki (push) Successful in 8s
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 51s
quality / api (push) Successful in 44s
CD / quality (push) Successful in 1m44s
CD / publish (push) Successful in 1m35s

- Added new health worker URL and token fields to the AppConfig interface, allowing for Cloudflare Worker integration.
- Updated health check routes to utilize the new worker configuration, enabling dynamic health checks via Cloudflare Workers.
- Introduced a health log endpoint for services, providing detailed logs of health probe results.
- Enhanced health check service logic to support both local and Cloudflare Worker providers, improving flexibility in health monitoring.
- Updated UI components to reflect changes in health check provider settings and display relevant health information.

This commit significantly improves the health check management capabilities, allowing for better integration with Cloudflare Workers and enhanced logging features.
This commit is contained in:
Denozordec
2026-08-19 16:27:34 +07:00
parent d63c86065c
commit 2c92e78b24
36 changed files with 2184 additions and 263 deletions
@@ -0,0 +1,27 @@
-- XOR health-check: persist provider on bindings/groups; Worker URL/token;
-- colo + probe journal. Cloudflare = Worker edge probe, not Health Checks API.
ALTER TABLE service_bindings ADD COLUMN health_check_provider TEXT NOT NULL DEFAULT 'local';
ALTER TABLE service_groups ADD COLUMN health_check_provider TEXT NOT NULL DEFAULT 'local';
ALTER TABLE app_settings ADD COLUMN health_worker_url TEXT;
ALTER TABLE app_settings ADD COLUMN health_worker_token TEXT;
ALTER TABLE ip_health_status ADD COLUMN colo TEXT;
ALTER TABLE ip_health_status ADD COLUMN provider TEXT NOT NULL DEFAULT 'local';
CREATE TABLE IF NOT EXISTS health_probe_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
scope TEXT NOT NULL,
ref_id INTEGER NOT NULL,
ip TEXT NOT NULL,
provider TEXT NOT NULL,
status TEXT NOT NULL,
ok INTEGER NOT NULL,
latency_ms INTEGER,
colo TEXT,
error TEXT,
checked_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE INDEX IF NOT EXISTS idx_health_probe_log_target
ON health_probe_log(scope, ref_id, ip, checked_at DESC);