fix(ops/metrics): Alertmanager отвечал 404 на /api/v2/alerts — Prometheus писал мимо #3162

Merged
bot-backend merged 1 commit from fix/3161-alertmanager-route-prefix into main 2026-08-27 18:17:49 +00:00
Collaborator

Чинит #3161. Найдено приёмочной проверкой предыдущего PR (#3160): после него Prometheus приёмник видит, но доставки по-прежнему нет.

Замер до правки

prometheus_notifications_alertmanagers_discovered   1
prometheus_notifications_sent_total{...}            1
prometheus_notifications_errors_total{...}          1
alertmanager_alerts_received_total{status="firing"} 0

Прямая проба из контейнера Prometheus: /api/v2/status404, /alertmanager/api/v2/status200.

Причина и правка

--web.external-url=…/alertmanager без --web.route-prefix=/ распространяет префикс на весь API. Добавляю флаг — тот же и по той же причине уже стоит у Prometheus в этом же файле. Внешний префикс никому не нужен: маршрута /alertmanager в Caddy нет, внешний адрес идёт только в ссылки сообщений.

Healthcheck возвращается на обычный путь /-/healthy: раньше он был прописан С префиксом — лечение симптома, из-за которого причина осталась жива и продолжила ломать доставку.

Побочно оживает датасорс Alertmanager в Grafana (datasources.yml:37) — он настроен на корень.

Приёмка после деплоя

  1. alertmanager_alerts_received_total{status="firing"} > 0;
  2. prometheus_notifications_errors_total перестаёт расти;
  3. горящий Watchdog доезжает в топик алертов;
  4. контейнер остаётся healthy на новом пути проверки.
Чинит #3161. Найдено приёмочной проверкой предыдущего PR (#3160): после него Prometheus приёмник видит, но доставки по-прежнему нет. ## Замер до правки ``` prometheus_notifications_alertmanagers_discovered 1 prometheus_notifications_sent_total{...} 1 prometheus_notifications_errors_total{...} 1 alertmanager_alerts_received_total{status="firing"} 0 ``` Прямая проба из контейнера Prometheus: `/api/v2/status` → **404**, `/alertmanager/api/v2/status` → **200**. ## Причина и правка `--web.external-url=…/alertmanager` без `--web.route-prefix=/` распространяет префикс на весь API. Добавляю флаг — тот же и по той же причине уже стоит у Prometheus в этом же файле. Внешний префикс никому не нужен: маршрута `/alertmanager` в Caddy нет, внешний адрес идёт только в ссылки сообщений. Healthcheck возвращается на обычный путь `/-/healthy`: раньше он был прописан С префиксом — лечение симптома, из-за которого причина осталась жива и продолжила ломать доставку. Побочно оживает датасорс Alertmanager в Grafana (`datasources.yml:37`) — он настроен на корень. ## Приёмка после деплоя 1. `alertmanager_alerts_received_total{status="firing"}` > 0; 2. `prometheus_notifications_errors_total` перестаёт расти; 3. горящий `Watchdog` доезжает в топик алертов; 4. контейнер остаётся `healthy` на новом пути проверки.
bot-backend added 1 commit 2026-08-27 18:16:44 +00:00
fix(ops/metrics): Alertmanager отвечал 404 на /api/v2/alerts — Prometheus писал мимо
All checks were successful
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 7s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
790691d0b4
Приёмочная проверка #3155 показала второй отказ на том же пути. Prometheus
нашёл приёмник (`activeAlertmanagers` непуст), отправил уведомление — и
получил 404: `alertmanager_alerts_received_total 0` при
`prometheus_notifications_errors_total 1` и `dropped_total 1`.

`--web.external-url=…/alertmanager` без `--web.route-prefix=/` заставляет
Alertmanager обслуживать ВСЁ под этим префиксом. Проверено прямой пробой из
контейнера Prometheus: `/api/v2/status` → 404, `/alertmanager/api/v2/status`
→ 200. Снаружи префикс при этом никому не нужен: маршрута `/alertmanager`
в Caddy нет вовсе, внешний адрес используется только для ссылок в сообщениях.

Симптом этого же префикса уже ловили 27.08 на healthcheck — и вылечили на
стороне проверки, прописав ей путь с префиксом. Из-за этого причина осталась
жива и продолжила ломать то, что чинить куда важнее. Возвращаю обычный путь
healthcheck вместе с флагом.

Заодно оживает датасорс Alertmanager в Grafana
(`ops/metrics/grafana/provisioning/datasources/datasources.yml:37`) — он
настроен на корень и до сих пор упирался в тот же 404.

Closes #3161
bot-backend merged commit 084c3a2470 into main 2026-08-27 18:17:49 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3162
No description provided.