fix(observability): healthcheck Alertmanager стучится по правильному пути — контейнер был вечно unhealthy
All checks were successful
CI Trade-In / changes (pull_request) Successful in 12s
CI / changes (pull_request) Successful in 15s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped

--web.external-url=…/alertmanager заставляет Alertmanager обслуживать ВСЁ
под этим префиксом, включая служебные ручки. Проверено на проде:

    /-/healthy               → 404 Not Found
    /alertmanager/-/healthy  → OK

Контейнер при этом работал и рассылал алерты, но docker держал его
unhealthy бессрочно. Само по себе безобидно — и ровно поэтому вредно:
статус, который всегда красный, приучают не смотреть. А любая автоматика
вида «перезапусти нездоровое» устроила бы из этого вечный перезапуск
канала оповещений — то есть выбивала бы именно то, что должно работать
в аварию.
This commit is contained in:
bot-backend 2026-08-27 13:48:57 +03:00
parent 51c779c092
commit ede45f2a31

View file

@ -134,7 +134,22 @@ services:
mem_limit: 256m
logging: *default-logging
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:9093/-/healthy"]
# Путь С ПРЕФИКСОМ. `--web.external-url=…/alertmanager` выше заставляет
# Alertmanager обслуживать ВСЁ под этим префиксом, включая служебные
# ручки: `/-/healthy` отдаёт 404, а `/alertmanager/-/healthy` — OK.
#
# Прод 27.08: контейнер работал и рассылал алерты, но docker держал его
# `unhealthy` бессрочно. Само по себе безобидно, но приучает не смотреть
# на статус — а любая автоматика «перезапусти нездоровое» устроила бы из
# этого вечный перезапуск канала оповещений.
test:
[
"CMD",
"wget",
"-q",
"--spider",
"http://localhost:9093/alertmanager/-/healthy",
]
interval: 30s
timeout: 10s
retries: 5