feat(observability): клиентский инцидент зовёт дежурного поимённо + чинит сломанное продолжение команды (#3078) #3128
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#3128
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/3078-oncall-mention"
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?
Две вещи, и вторая — исправление ошибки, которую я сам внёс в #3127 час назад.
1. Дежурного зовут по имени
27.08 продукты лежали 10 часов, и в канале «диск занят на 86 %» и «клиенты не могут открыть сайт» выглядели бы одинаково. Разной настойчивости не было вообще.
Появился отдельный маршрут:
severity = "critical"Иhost = "apps"— критично на продуктовой машине означает, что людям недоступны МЕРА и Site Finder, а не «где-то в инфраструктуре тесно».Короткий
repeat_intervalнамеренно неудобен: пока инцидент не погашен, напоминание должно мешать. Заглушить его — осознанное действие через Alertmanager, и оно же служит отметкой «принято».Сужение по
host=appsсущественно. Без него дежурного звали бы на каждую инфраструктурную мелочь, и тег перестал бы что-либо значить за неделю.Аккаунт в репозиторий не попадает — берётся из
METRICS_TELEGRAM_ONCALL(секрет уже задан). Дежурный меняется, конфиг в git — нет. Пустая переменная = сообщение без тега: поведение не ломается, если её забыли задать, и деплой предупреждает об этом явно.2. Починка: комментарий внутри продолжения команды
В #3127 блок
rm -fвместе с комментарием встал между строками, каждая из которых заканчивалась обратным слешем:Конфиг Alertmanager перестал бы рендериться вовсе — при полностью зелёном деплое.
Дефект коварен формой: синтаксически это корректный шелл,
bash -nего не ловит, а в диффе не видно — строки выглядят самостоятельными. Поэтому тест структурный и применяется ко всем shell-блокам workflow (run:иscript:), а не только к месту ожога: после строки с продолжением не может идти комментарий.Проверка
Покрыто: комментарий внутри продолжения (упал бы на версии из #3127); наличие приёмника и маршрута; порядок маршрутов — клиентский обязан стоять выше общего
critical, иначе Alertmanager заберёт инцидент в общий и тег молча не сработает; параметризация упоминания и отсутствие конкретного аккаунта в git; сквозная цепочка «секрет → env шага → список envsubst» (рвётся молча в любом звене); оба условия сужения маршрута.Чего здесь нет
Кнопки подтверждения. Alertmanager инлайн-клавиатуру не умеет — нужен свой обработчик, и у него есть развилка по месту жительства, которую стоит решать отдельно и осознанно. Опишу варианты в #3078; этот PR даёт вызов по имени, что закрывает бо́льшую часть задачи «не проспать».
Refs #3078, #3127, #3119