feat(ops): запасной канал алертов на случай недоступного Telegram #3070
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3070
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/alert-fallback-smtp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Закрывает пункт «независимый от Telegram канал алертов» из #3059.
Проблема — самоскрывающаяся
notify()вops/lib-backup.shпри отказе Telegram делал ровно это:Алерт терялся. Оставалась строка в логе, который никто не читает, пока не случится беда. Канал, которым мы узнаём о проблемах, сам является проблемой — и через него же идут алерты бэкапов (
ops/lib-backup.sh) и uptime-нотификации.Это не гипотеза, а замер (#3059, 23.08): из семи публикуемых адресов
api.telegram.orgс Poincare отвечает ровно один —149.154.167.220. Скан всей подсети149.154.167.0/24не нашёл больше ни одного. Через прокси Telegram не проходит вовсе (узлы российские). После переезда весь Telegram-канал висит на одном адресе, без запасного.Решение
Почта — потому что проверена: с Poincare
smtp.beget.com:465OPEN (587 закрыт). Транспорт — тот жеcurl, который уже является жёсткой зависимостью этого файла; новых пакетов не требуется.Правка ложится ровно в ту точку, которую файл сам объявляет расширением:
Ничего не настроено → ведёт себя ровно как до правки. Кредов в репозитории нет:
ALERT_SMTP_URL/ALERT_SMTP_USER/ALERT_SMTP_PASS/ALERT_MAIL_FROM/ALERT_MAIL_TOчитаются из того же env-файла, что и Telegram.Test plan
bash -n— синтаксис чистАЛЕРТ НЕ ДОСТАВЛЕН (telegram недоступен, почта не настроена),rc=1smtps://127.0.0.1:9) →АЛЕРТ НЕ ДОСТАВЛЕН НИ ОДНИМ КАНАЛОМ (telegram упал, curl smtp rc=7),rc=1notify()без Telegram сам зовёт запасной канал — проверено, обе строки в логеgrep -c SEKRET123по всему выводу дал 0Чего я НЕ проверил, и это важно
Успешную доставку письма не проверял. Для неё нужны настоящие SMTP-креды — это твоя часть. Три попытки поднять фейковый SMTP-сервер положительного контроля не дали (сначала неверный ответ на
AUTH LOGIN→rc=67, потом слушатель без ответов, потом сломанныйsedв тест-обвязке). Выдумывать «наверное работает» не стал: без положительного контроля успешные негативные тесты доказывают только то, что код правильно падает.Так что перед тем как полагаться на этот канал, надо один раз отправить письмо с настоящими кредами и убедиться, что оно дошло. До этого момента правка строго не хуже текущего состояния: она добавляет громкий лог там, где раньше была тишина.
Что нужно от тебя, чтобы канал заработал
Дописать в
/etc/default/gendesign-backup(и в тот же файл для tradein, если он отдельный):Затем один раз проверить доставку — например, временно убрав
TELEGRAM_BOT_TOKEN, чтобыnotify()пошёл по запасному пути.Refs #3059, #3057