diff --git a/Home.md b/Home.md index b00f150..6537f49 100644 --- a/Home.md +++ b/Home.md @@ -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