Перейти к основному контенту

Релей GlitchTip в Telegram

Для разработчиков. Состояние на 24.09.2026. Подробности — README Buharestskie/gitchtip_tg_bot. Отчёт по оплатам для группы ОС описан отдельно — статья «Отчёт по оплатам группы ОС».

Коротко

gitchtip_tg_bot — релей в Telegram. Принимает HTTP-вебхуки и пересылает их в чаты: алерты GlitchTip, обращения «Сообщить о проблеме» из дашбордов и виджетов, отчёт смены менеджера МОС. Сам следит, жив ли GlitchTip, и раз в день собирает отчёт по оплатам группы ОС.

Алерт GlitchTip, обращение пользователя и монитор
Алерт GlitchTip, обращение пользователя и монитор

Где живёт

Серверulrica — с российских площадок api.telegram.org недоступен; каталог, контейнер и адрес — в README
АдресHTTP без TLS и без reverse proxy, на отдельном порту ulrica
Коддоставляется git-бандлом: у ulrica нет доступа к GitHub

Что куда уходит

Все пути защищены одним токеном в адресе: /hook/<WEBHOOK_TOKEN>. Чужой токен — 401.

Кто шлётПутьКак бот понимает, что этоЧат
GlitchTip (все проекты)/hook/…всё, что не подошло нижеTELEGRAM_CHAT_ID
«Сообщить о проблеме»: МОС, МПП1, МПП2, виджет Яндекс.Диска, return_amo_hook_service/hook/… (у отправителя — FEEDBACK_WEBHOOK_URL)в теле есть непустой aliasTELEGRAM_CHAT_ID
Отчёт смены из виджета МОС/mos-workday-report/… (у отправителя — WORKDAY_REPORT_WEBHOOK_URL)в теле есть объект reportWORKDAY_REPORT_CHAT_ID
Ручной запуск отчёта по оплатамPOST /payments-report/…—PAYMENTS_REPORT_CHAT_ID

Тип определяет тело, а не путь: отчёт смены, присланный на /hook/, всё равно уйдёт в чат отчётов.

Из пейлоада GlitchTip читаются только text и attachments[].title / title_link / text. Уровень события не читается — у любого алерта шапка «🔴 GlitchTip».

Подключить новый проект GlitchTip

  1. В GlitchTip, в настройках проекта, — правило алерта с интеграцией generic webhook.
  2. Адрес — …/hook/<WEBHOOK_TOKEN> релея: проще всего скопировать из правила любого уже подключённого проекта; адрес — в README, токен — в .env релея на сервере.
  3. Как часто алертить, решает правило в GlitchTip: сам релей ничего не фильтрует и не склеивает — один POST, одно сообщение.

Монитор GlitchTip

Раз в 5 минут релей запрашивает GLITCHTIP_HEALTH_URL (таймаут 10 секунд). Пишет только при смене состояния: «🔴 GlitchTip недоступен» с причиной и «🟢 GlitchTip снова доступен». Одного неудачного опроса хватает для алерта; падение и подъём между двумя опросами не заметит.

На что наступают

  • Нет очереди и повторов. Если Telegram отказал, отправитель получает 502 и должен повторить сам — иначе сообщение потеряно.
  • Сообщение длиннее 4096 символов Telegram отклонит — тоже 502. Режется на части только отчёт по оплатам.
  • Сменили WEBHOOK_TOKEN — поправить адрес в правилах GlitchTip и FEEDBACK_WEBHOOK_URL / WORKDAY_REPORT_WEBHOOK_URL у всех отправителей.
  • Токен в пути попадает в access-лог.
  • Поля …Seconds в отчёте смены МОС на самом деле минуты — дашборд уже переводит их, а имена полей не меняет.
  • aiohttp не указан в requirements.txt — работает транзитной зависимостью.
  • Отчёт по оплатам падает с KeyError молча — если зарплатный дашборд поменял формат ответа, в чат не придёт ни отчёт, ни сообщение о сбое.
  • Внешней пробы у релея нет — окно обслуживания при выкатке открыть не на что.