feat: внешняя доступность сервисов — проба публичного пути и алерты
Публичный URL у сервиса включает второй контур проверки: публичный DNS
(1.1.1.1, в обход split-horizon) → ожидаемый GHARD_PUBLIC_IP → TLS с SNI
и проверкой сертификата → GET → код. Ловит dns_mismatch/dns_fail/tls_fail/
http_fail/down, которые не видит внутренний health-чек; недоступный
резолвер даёт probe_error без алерта.

Одно событие service_external_down на инцидент после 5 минут непрерывного
отказа и recovered только после реально отправленного down; состояние
переживает рестарт. История внешних проб — 7 дней. POST/PATCH и смена
публичного URL делают пробу сразу; смена URL чистит историю и состояние.
1 parent f14fb26 commit 83e3314dcdcc1d23f71747534e43def317597bb1
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 21 hours ago
Showing 11 changed files
View
docker-compose.yml
View
panel/backend/.env.example
View
panel/backend/app/api/services.py
View
panel/backend/app/config.py
View
panel/backend/app/db.py
View
panel/backend/app/events.py
View
panel/backend/app/external_probe.py 0 → 100644
View
panel/backend/app/main.py
View
panel/backend/app/mcp.py
View
panel/backend/app/schema.sql
View
panel/backend/pyproject.toml