Compare commits

...

2 commits

Author SHA1 Message Date
7e1a79ea0c Merge pull request 'fix(observability): healthcheck Alertmanager стучится по правильному пути — контейнер был вечно unhealthy' (#3134) from fix/3078-alertmanager-healthcheck-prefix into main
Some checks failed
Deploy Metrics / agent-apps (push) Blocked by required conditions
Deploy Metrics / agent-infra (push) Blocked by required conditions
Deploy Metrics / server (push) Has been cancelled
2026-08-27 10:53:26 +00:00
bot-backend
ede45f2a31 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 бессрочно. Само по себе безобидно — и ровно поэтому вредно:
статус, который всегда красный, приучают не смотреть. А любая автоматика
вида «перезапусти нездоровое» устроила бы из этого вечный перезапуск
канала оповещений — то есть выбивала бы именно то, что должно работать
в аварию.
2026-08-27 13:48:57 +03:00

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