diff --git a/docker-compose.metrics.yml b/docker-compose.metrics.yml index 381d517d..723a4f03 100644 --- a/docker-compose.metrics.yml +++ b/docker-compose.metrics.yml @@ -115,6 +115,14 @@ services: - "--config.file=/etc/alertmanager/alertmanager.yml" - "--storage.path=/alertmanager" - "--web.external-url=https://metrics.gendsgn.ru/alertmanager" + # Внешний адрес — ТОЛЬКО для ссылок в сообщениях; обслуживать всё под + # этим префиксом Alertmanager не должен. Без этой строки он отвечает + # 404 на `/api/v2/alerts`, а Prometheus именно туда и пишет: 27.08 + # Prometheus нашёл приёмник (`activeAlertmanagers` непуст), послал + # уведомление и получил 404 — `alertmanager_alerts_received_total 0` + # при `prometheus_notifications_errors_total 1`. Тот же флаг и по той + # же причине стоит у Prometheus выше. + - "--web.route-prefix=/" env_file: - path: ./backend/.env.runtime required: false @@ -136,22 +144,15 @@ services: mem_limit: 256m logging: *default-logging healthcheck: - # Путь С ПРЕФИКСОМ. `--web.external-url=…/alertmanager` выше заставляет - # Alertmanager обслуживать ВСЁ под этим префиксом, включая служебные - # ручки: `/-/healthy` отдаёт 404, а `/alertmanager/-/healthy` — OK. + # Путь БЕЗ ПРЕФИКСА — вместе с `--web.route-prefix=/` выше. # - # Прод 27.08: контейнер работал и рассылал алерты, но docker держал его - # `unhealthy` бессрочно. Само по себе безобидно, но приучает не смотреть - # на статус — а любая автоматика «перезапусти нездоровое» устроила бы из - # этого вечный перезапуск канала оповещений. - test: - [ - "CMD", - "wget", - "-q", - "--spider", - "http://localhost:9093/alertmanager/-/healthy", - ] + # Раньше здесь стоял `/alertmanager/-/healthy`: внешний адрес заставлял + # Alertmanager обслуживать под префиксом всё, включая служебные ручки, и + # `/-/healthy` отдавал 404 (прод 27.08 — контейнер работал, а docker + # держал его `unhealthy` бессрочно). Лечили симптом на стороне проверки, + # и потому не заметили, что тот же префикс ломает `/api/v2/alerts`, куда + # пишет Prometheus. Теперь причина убрана, и путь снова обычный. + test: ["CMD", "wget", "-q", "--spider", "http://localhost:9093/-/healthy"] interval: 30s timeout: 10s retries: 5