Тема «метрики» в Telegram пуста: инфра-алерты и клиентские инциденты делят одну тему 158 #3163

Closed
opened 2026-08-27 18:35:20 +00:00 by bot-backend · 1 comment
Collaborator

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

Замер

Форумная группа -1004443088679 имеет три темы. Карта отправителей собрана инвентаризацией (конфиги + printenv живых контейнеров):

Отправитель Тема Что шлёт
Alertmanager telegram 158 инфраструктурные алерты
Alertmanager telegram-heartbeat 158 « Мониторинг жив», 1/12ч
alert-ack (алерт + ответ на кнопку) 158 клиентские инциденты
вебхук GlitchTip (glitchtip.py:207-209) 158 ошибки МЕРЫ
поддержка (support.py:203-205, bridge.py) 2 переписка веб-виджета
245 «метрики» никто

Причина: оба прямых получателя Alertmanager берут тему из той же переменной METRICS_TELEGRAM_TOPIC_ID, что и alert-ack. Разделить их было нечем.

Решение владельца

Инфраструктура → «метрики» (245), клиенты → «алерты» (158).

В «метрики»: heartbeat и инфраструктурные алерты (диск, агент упал, remote_write встал).
В «алерты»: только то, где страдают люди — ошибки МЕРЫ и клиентские инциденты с кнопкой подтверждения.

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

Что делается

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

Откат обязателен: при незаданной новой переменной берётся старая — до того, как значение пропишут на хосте, поведение остаётся прежним, а не ломается.

Владелец: «в алерты пришло, метрики не пришло». ## Замер Форумная группа `-1004443088679` имеет три темы. Карта отправителей собрана инвентаризацией (конфиги + `printenv` живых контейнеров): | Отправитель | Тема | Что шлёт | |---|---|---| | Alertmanager `telegram` | **158** | инфраструктурные алерты | | Alertmanager `telegram-heartbeat` | **158** | «⚪ Мониторинг жив», 1/12ч | | `alert-ack` (алерт + ответ на кнопку) | **158** | клиентские инциденты | | вебхук GlitchTip (`glitchtip.py:207-209`) | **158** | ошибки МЕРЫ | | поддержка (`support.py:203-205`, `bridge.py`) | **2** | переписка веб-виджета | | **245 «метрики»** | — | **никто** | Причина: оба прямых получателя Alertmanager берут тему из той же переменной `METRICS_TELEGRAM_TOPIC_ID`, что и alert-ack. Разделить их было нечем. ## Решение владельца **Инфраструктура → «метрики» (245), клиенты → «алерты» (158).** В «метрики»: heartbeat и инфраструктурные алерты (диск, агент упал, remote_write встал). В «алерты»: только то, где страдают люди — ошибки МЕРЫ и клиентские инциденты с кнопкой подтверждения. Смешанные в одной теме, они обучают пролистывать обе. ## Что делается Вводится `METRICS_TELEGRAM_INFRA_TOPIC_ID` для прямых получателей Alertmanager. `alert-ack` и вебхук GlitchTip остаются на `METRICS_TELEGRAM_TOPIC_ID`. Тема поддержки не трогается. **Откат обязателен:** при незаданной новой переменной берётся старая — до того, как значение пропишут на хосте, поведение остаётся прежним, а не ломается.
Author
Collaborator

Закрываю: доставка в тему «Metrics» подтверждена владельцем

[27.08.2026 22:53 МСК] ⚪ Мониторинг жив — сторож отчитался, канал доставки работает.
[27.08.2026 22:54 МСК] проверка адреса темы

Первое — настоящий Watchdog, горевший с 26.08 10:19 и до сегодня уходивший в prometheus_notifications_dropped_total. Второе — диагностическая проба.

Замер

Что Значение
message_thread_id в боевом конфиге 245
alertmanager_notifications_total{telegram} 1
alertmanager_notifications_failed_total{telegram,*} 0
health контейнера healthy

Чем разрешилась развилка «не доставлено / доставлено не туда»

Счётчики Alertmanager показывали успех, а в теме было пусто. Отличить одно от другого счётчиками нельзя — спросил сам Telegram, отправив пробу с message_thread_id: 245:

is_topic_message  = True
message_thread_id = 245
reply_to          = {message_id: 245, forum_topic_created: {name: "Metrics"}}

Ответ подтвердил, что 245 — id темы (а не id сообщения, как могло быть при двухчастной ссылке t.me/c/<чат>/<число>), и что тема называется Metrics.

Это стоит запомнить как приём: когда отправитель рапортует успех, а получатель ничего не видит, ответ API отправки содержит адрес доставки — и разрешает развилку за один запрос.

Чтобы heartbeat пришёл сейчас, а не через 12 часов

У маршрута telegram-heartbeat стоит repeat_interval: 12h, а журнал отправок (nflog) переживает пересоздание контейнера в томе. Пришлось: стоп → удаление /alertmanager/nflog (файл silences не тронут) → старт. Alertmanager переслал то, что горит сейчас, — настоящий Watchdog, а не выдуманный алерт.

Итог по цепочке за вечер

Слой Было Стало
Prometheus → Alertmanager (#3155) activeAlertmanagers: [], 1568 в dropped discovered 1, dropped не растёт
Alertmanager API (#3161) 404 на /api/v2/alerts принимает, received > 0
Адрес темы (#3163) инфра и клиенты в одной теме 158 инфра → 245, клиенты → 158
Доставка 0 сообщений подтверждена глазами

Смежное осталось открытым: #3157 (наблюдаемость доставки GlitchTip), #3158 (Grafana alerting пуст), #3159 (почта-заглушка, uptime в никуда), #3164 (бэкапы шлют в общую тему).

## Закрываю: доставка в тему «Metrics» подтверждена владельцем ``` [27.08.2026 22:53 МСК] ⚪ Мониторинг жив — сторож отчитался, канал доставки работает. [27.08.2026 22:54 МСК] проверка адреса темы ``` Первое — настоящий `Watchdog`, горевший с 26.08 10:19 и до сегодня уходивший в `prometheus_notifications_dropped_total`. Второе — диагностическая проба. ### Замер | Что | Значение | |---|---| | `message_thread_id` в боевом конфиге | **245** | | `alertmanager_notifications_total{telegram}` | 1 | | `alertmanager_notifications_failed_total{telegram,*}` | 0 | | health контейнера | healthy | ### Чем разрешилась развилка «не доставлено / доставлено не туда» Счётчики Alertmanager показывали успех, а в теме было пусто. Отличить одно от другого счётчиками нельзя — спросил сам Telegram, отправив пробу с `message_thread_id: 245`: ``` is_topic_message = True message_thread_id = 245 reply_to = {message_id: 245, forum_topic_created: {name: "Metrics"}} ``` Ответ подтвердил, что 245 — id темы (а не id сообщения, как могло быть при двухчастной ссылке `t.me/c/<чат>/<число>`), и что тема называется `Metrics`. **Это стоит запомнить как приём:** когда отправитель рапортует успех, а получатель ничего не видит, ответ API отправки содержит адрес доставки — и разрешает развилку за один запрос. ### Чтобы heartbeat пришёл сейчас, а не через 12 часов У маршрута `telegram-heartbeat` стоит `repeat_interval: 12h`, а журнал отправок (nflog) переживает пересоздание контейнера в томе. Пришлось: стоп → удаление `/alertmanager/nflog` (файл `silences` не тронут) → старт. Alertmanager переслал то, что горит **сейчас**, — настоящий Watchdog, а не выдуманный алерт. ### Итог по цепочке за вечер | Слой | Было | Стало | |---|---|---| | Prometheus → Alertmanager (#3155) | `activeAlertmanagers: []`, 1568 в dropped | discovered 1, dropped не растёт | | Alertmanager API (#3161) | 404 на `/api/v2/alerts` | принимает, received > 0 | | Адрес темы (#3163) | инфра и клиенты в одной теме 158 | инфра → 245, клиенты → 158 | | Доставка | 0 сообщений | подтверждена глазами | Смежное осталось открытым: #3157 (наблюдаемость доставки GlitchTip), #3158 (Grafana alerting пуст), #3159 (почта-заглушка, uptime в никуда), #3164 (бэкапы шлют в общую тему).
Sign in to join this conversation.
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#3163
No description provided.