feat(ops/metrics): инфра-алерты уезжают в тему «метрики», клиенты остаются в «алертах» #3165

Merged
bot-backend merged 1 commit from feat/3163-infra-topic-split into main 2026-08-27 19:09:35 +00:00
Collaborator

Чинит #3163. Владелец: «в алерты пришло, метрики не пришло».

Что было

Тема «метрики» (245) пуста, потому что оба прямых получателя Alertmanager — telegram и telegram-heartbeat — брали топик из той же METRICS_TELEGRAM_TOPIC_ID, что и alert-ack. Развести их было нечем.

Что меняется

Новая METRICS_TELEGRAM_INFRA_TOPIC_ID — только для прямых получателей Alertmanager. alert-ack и вебхук GlitchTip остаются на прежней переменной, тема поддержки (2) не тронута.

Откат: пока новая переменная не задана, берётся старая. До этого момента поведение ровно прежнее, а не сломанное.

Заодно убрана мёртвая METRICS_TELEGRAM_TOPIC_LINE. После переезда обоих получателей на инфраструктурную строку шаблон её не содержит, а деплой продолжал бы её собирать, экспортировать и объявлять в envsubst. Тест, закреплявший эту сборку, зеленел бы вечно и блокировал уборку.

Проверено рендером, а не чтением

Состояние telegram telegram-heartbeat telegram-clients
тема задана 245 245 webhook, без темы
темы нет поля нет поля нет webhook, без темы

Пустое значение message_thread_id: уронило бы Alertmanager целиком — поэтому проверяется именно ОТСУТСТВИЕ поля, а не пустота.

Логика отката прогнана во всех трёх состояниях переменных:

обе заданы     → топик 245
только старая  → откат, топик 158 (+ строка в логе про откат)
ни одной       → строка пуста, поля не будет

Плюс: bash -n извлечённого деплой-скрипта чист, YAML воркфлоу парсится, в отрендеренном конфиге не осталось ни одного литерала ${...}, backend/tests/ops86 passed.

Два независимых ревью в чистом контексте: APPROVE (угол «отказы деплоя») и MINOR (угол «смысл и тесты» — нашло как раз мёртвую переменную, исправлено до коммита).

После мержа

Нужно задать METRICS_TELEGRAM_INFRA_TOPIC_ID=245 — иначе сработает откат и всё останется в 158.

Чинит #3163. Владелец: «в алерты пришло, метрики не пришло». ## Что было Тема «метрики» (245) пуста, потому что оба прямых получателя Alertmanager — `telegram` и `telegram-heartbeat` — брали топик из той же `METRICS_TELEGRAM_TOPIC_ID`, что и `alert-ack`. Развести их было нечем. ## Что меняется Новая `METRICS_TELEGRAM_INFRA_TOPIC_ID` — только для прямых получателей Alertmanager. `alert-ack` и вебхук GlitchTip остаются на прежней переменной, тема поддержки (2) не тронута. **Откат:** пока новая переменная не задана, берётся старая. До этого момента поведение ровно прежнее, а не сломанное. **Заодно убрана мёртвая `METRICS_TELEGRAM_TOPIC_LINE`.** После переезда обоих получателей на инфраструктурную строку шаблон её не содержит, а деплой продолжал бы её собирать, экспортировать и объявлять в `envsubst`. Тест, закреплявший эту сборку, зеленел бы вечно и блокировал уборку. ## Проверено рендером, а не чтением | Состояние | telegram | telegram-heartbeat | telegram-clients | |---|---|---|---| | тема задана | 245 | 245 | webhook, без темы | | темы нет | поля нет | поля нет | webhook, без темы | Пустое значение `message_thread_id:` уронило бы Alertmanager целиком — поэтому проверяется именно ОТСУТСТВИЕ поля, а не пустота. Логика отката прогнана во всех трёх состояниях переменных: ``` обе заданы → топик 245 только старая → откат, топик 158 (+ строка в логе про откат) ни одной → строка пуста, поля не будет ``` Плюс: `bash -n` извлечённого деплой-скрипта чист, YAML воркфлоу парсится, в отрендеренном конфиге не осталось ни одного литерала `${...}`, `backend/tests/ops` — **86 passed**. Два независимых ревью в чистом контексте: APPROVE (угол «отказы деплоя») и MINOR (угол «смысл и тесты» — нашло как раз мёртвую переменную, исправлено до коммита). ## После мержа Нужно задать `METRICS_TELEGRAM_INFRA_TOPIC_ID=245` — иначе сработает откат и всё останется в 158.
bot-backend added 1 commit 2026-08-27 18:51:28 +00:00
feat(ops/metrics): инфра-алерты уезжают в тему «метрики», клиенты остаются в «алертах»
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m57s
CI / backend-tests (pull_request) Successful in 17m26s
b90872b5d7
Форумная группа имеет три темы, но тема «метрики» была пуста: оба прямых
получателя Alertmanager — telegram и telegram-heartbeat — брали топик из той
же переменной METRICS_TELEGRAM_TOPIC_ID, что и сервис alert-ack. Развести их
было нечем, и heartbeat вместе со всем инфраструктурным шумом падал в ленту
клиентских инцидентов.

Смешанные в одной теме, инфраструктура и клиентский инцидент не равны по
срочности и приучают пролистывать обе.

Вводится METRICS_TELEGRAM_INFRA_TOPIC_ID для прямых получателей Alertmanager.
alert-ack и вебхук GlitchTip остаются на прежней переменной, тема поддержки
не тронута. Пока новая переменная не задана, берётся старая — до этого момента
поведение ровно прежнее, а не сломанное.

Клиентская METRICS_TELEGRAM_TOPIC_LINE убрана целиком: после переезда обоих
получателей на инфраструктурную строку шаблон её не содержит, а деплой
продолжал бы её собирать и объявлять в envsubst. Тест, закрепляющий сборку
такой строки, зеленел бы вечно и мешал бы её убрать.

Проверено рендером, а не чтением: при заданной теме telegram и
telegram-heartbeat дают 245, telegram-clients уходит вебхуком без темы; при
незаданной — поля message_thread_id нет вовсе (пустое значение уронило бы
Alertmanager целиком). Логика отката прогнана во всех трёх состояниях
переменных. backend/tests/ops — 86 passed.

Closes #3163
bot-backend merged commit 82171aedfc into main 2026-08-27 19:09:35 +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#3165
No description provided.