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
+26 -2
View File
@@ -25,6 +25,8 @@ Manage Cloudflare zones, DNS records, domain groups, and TLS certificate expiry
| `HEALTH_DOWN_FAILURES` | Ошибок подряд до `down` (default `2`). То же в UI. |
| `HEALTH_SUCCESS_RECOVERIES` | Успехов подряд для recovery `CHECKING → HEALTHY` (default `2`). То же в UI. |
| `HEALTH_LATENCY_WARN_MS` | Латентность-порог для `degraded` (default `1000`). То же в UI. |
| `HEALTH_WORKER_URL` | URL Worker health-probe (fallback). Переопределяется в **Настройки → Health-check**. |
| `HEALTH_WORKER_TOKEN` | Bearer-токен Worker (fallback). В GET `/settings` не отдаётся целиком. |
## Load balancing & health checks
@@ -48,8 +50,30 @@ health-check работают на двух уровнях:
не попадает в пул, пока нет успешных проб; восстановление — `UNHEALTHY → CHECKING → HEALTHY`
после `HEALTH_SUCCESS_RECOVERIES` (default 2). Пороги и cron движка задаются в
**Настройки → Health-check** (env — fallback, пока значения не сохранены в UI).
Reconcile DNS запускается cron-задачей
`health-check`. Cloudflare Health Checks — официальный API зоны, Workers не используются.
### Local XOR Cloudflare Worker
Провайдер задаётся на привязке (`service_bindings.health_check_provider`): **local**
или **cloudflare**. Одновременно оба не работают.
| | Local | Cloudflare Worker |
|---|---|---|
| Кто пробирует | процесс API CFDM | Worker на edge Cloudflare |
| Планировщик | глобальный cron CFDM | тот же cron вызывает Worker |
| Пороги Slow/Down | Настройки → Health-check | те же |
| Результат | SQLite `ip_health_status` | та же SQLite + `colo` |
| Регионы Health Checks | нет | нет (на Free продукта нет) |
**Cloudflare в CFDM — это Worker**, не [Health Checks API](https://developers.cloudflare.com/api/resources/healthchecks).
Продукт Health Checks на Free-плане недоступен и **не используется**. Worker
stateless: конфиг и журнал (`health_probe_log`) живут в SQLite CFDM.
Деплой Worker: [`workers/health-probe/README.md`](../workers/health-probe/README.md)
(`wrangler deploy`). URL и токен — **Настройки → Health-check**. Если Worker не
задан, cloudflare-цели **не** пробируются как Local.
Reconcile DNS запускается cron-задачей `health-check`. Free Workers ≈ 100k
запросов/сутки; cron раз в 2 мин × число IP должен влезать.
## Docker