feat(health): добавить Globalping и мультивыбор источников проб
CD / update-wiki (push) Successful in 8s
quality / commitlint (push) Skipped
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 54s
quality / api (push) Successful in 46s
CD / quality (push) Successful in 1m49s
CD / publish (push) Successful in 1m40s
CD / update-wiki (push) Successful in 8s
quality / commitlint (push) Skipped
quality / changes (push) Successful in 5s
quality / docker-check (push) Skipped
quality / web (push) Successful in 54s
quality / api (push) Successful in 46s
CD / quality (push) Successful in 1m49s
CD / publish (push) Successful in 1m40s
Несколько источников проб сразу и правило агрегации на сервисе вместо XOR Local/Cloudflare. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
+25
-11
@@ -49,18 +49,26 @@ health-check работают на двух уровнях:
|
||||
после `HEALTH_SUCCESS_RECOVERIES` (default 2). Пороги и cron движка задаются в
|
||||
**Настройки → Health-check** (env — fallback, пока значения не сохранены в UI).
|
||||
|
||||
### Local XOR Cloudflare Worker
|
||||
### Источники проб: Local, Cloudflare Worker, Globalping
|
||||
|
||||
Провайдер задаётся на привязке (`service_bindings.health_check_provider`): **local**
|
||||
или **cloudflare**. Одновременно оба не работают.
|
||||
На привязке/группе задаётся **мультивыбор** источников (`health_check_providers` JSON)
|
||||
и **правило агрегации** (`health_check_aggregate`: `any` | `all` | `majority`).
|
||||
Failover читает одну строку `ip_health_status` (агрегат). Журнал `health_probe_log` —
|
||||
строка на каждый источник.
|
||||
|
||||
| | Local | Cloudflare Worker |
|
||||
|---|---|---|
|
||||
| Кто пробирует | процесс API CFDM | Worker на edge (Cron Trigger) |
|
||||
| Планировщик | глобальный cron CFDM | cron Worker + ingest KV в CFDM |
|
||||
| Пороги Slow/Down | Настройки → Health-check | те же |
|
||||
| Результат | SQLite `ip_health_status` | та же SQLite + `colo` из KV |
|
||||
| Регионы Health Checks | нет | нет (на Free продукта нет) |
|
||||
| | Local | Cloudflare Worker | Globalping |
|
||||
|---|---|---|---|
|
||||
| Кто пробирует | процесс API CFDM | Worker на edge (Cron Trigger) | [globalping.io](https://globalping.io) |
|
||||
| Планировщик | глобальный cron CFDM | cron Worker + ingest KV | тот же cron CFDM (POST/GET measurements) |
|
||||
| Пороги Slow/Down | Настройки → Health-check | те же | те же (по агрегату) |
|
||||
| Результат | SQLite `ip_health_status` | та же SQLite + `colo` из KV | та же SQLite, colo = city/country пробы |
|
||||
| Fallback | — | нет (не Local) | нет (нет токена / 429 / timeout = fail) |
|
||||
|
||||
**Агрегация (на сервисе/группе):**
|
||||
|
||||
- `any` — Down, если хотя бы один выбранный источник Down
|
||||
- `all` — Down, только если все выбранные Down
|
||||
- `majority` — Down по большинству (2 источника → оба; 3 → ≥2)
|
||||
|
||||
**Cloudflare в CFDM — это Worker**, не [Health Checks API](https://developers.cloudflare.com/api/resources/healthchecks).
|
||||
Продукт Health Checks на Free-плане недоступен и **не используется**.
|
||||
@@ -75,7 +83,13 @@ Account `Workers Scripts Write` + `Workers KV Storage Write`. Zone DNS недо
|
||||
Free: 5 Cron Triggers на аккаунт; KV 1000 writes/сутки (интервал ≥ 2 мин);
|
||||
≤ 48 целей за тик. Исходник: [`workers/health-probe/`](../workers/health-probe/).
|
||||
|
||||
Reconcile DNS запускается cron-задачей `health-check` после ingest KV.
|
||||
**Globalping:** `POST /v1/measurements` → poll `GET` каждые ≥ 500 мс.
|
||||
CFDM TCP → `type: ping` + `protocol: TCP`; HTTP → `type: http`, `target` = IP, `request.host` = hostname.
|
||||
Токен: [dash.globalping.io/tokens](https://dash.globalping.io/tokens). Без токена 250 tests/hour, с токеном 500 + [credits](https://globalping.io/credits).
|
||||
Локации (magic CSV, default `World`) и `limit` (1–10, default 3) — **Настройки → Health-check**.
|
||||
Один measurement на уникальный origin (IP/порт/path) за тик.
|
||||
|
||||
Reconcile DNS запускается cron-задачей `health-check` после ingest KV и агрегации.
|
||||
|
||||
## Docker
|
||||
|
||||
|
||||
Reference in New Issue
Block a user