Цирк с конями в трёх частяхЗадача: Построение мониторинга, первый подход: Доработать панели мониторинга, подтвердить корректность метрик и
отработать статистику по ошибкам/5хх, снимаемую с одной из панелей
Действующие лица
Артём - погонщик этого дерьма
Мониторинг - хозяйка задачи, занимается этим весь день
ЮKassa - пришла разбираться с ошибками оплаты
Image - весь день ужимала GPU-серверы
Teams - новая вкладка под дашборд команд
База - разбиралась, почему растёт БД на проде
Артёму в принципе ок, пока изменения мониторинга катаются из отдельной ветки, не попадая в main, не вызывая CICD на dev.
Как сессии самоорганизуются в пределах выделенной под мониторинг фичеветки
Артёма /пока/ волнует мало
Акт 1.
17:13
Мониторинг находит, что половина цифр на графиках - мусор. Сборщик метрик ходил в сервис по имени и
каждый раз попадал в случайную копию из четырёх реплик → снимал неконсистентные данные. Отсюда 374 запроса в секунду
там, где их быть не может.
17:27
Артём видит на графике кучу 5xx на вебхуке ЮKassa и открывает новую сессию «изучи, что там». Через 10
минут просит: «пофиксить обработку ошибки при штатных 5xx».
Прим. Автора: вебхук приходил раньше чем сервисы синхронизировали покупку. По сути эта 503 - просьба прийти
попозже и страшно становится только в случае если синхронизация не наступала бы18:44
ЮKassa делает фикс: колбэк ждёт до 3 секунд (достаточно для покрытия нормального кейса синхронизации). Коммитит это в ветку
Мониторинга, прямо в её PR #721.
18:46
Мониторинг сама отзывает тревогу:
«Я показывал 208 пятисоток из 899 и алармил про потерянные платежи — это были данные эпохи битых серий… Инцидента нет».
ЮKassa об этом не знает.
18:48
Артём Мониторингу: «Почему у нас пустые ячейки вместо нулей в таблице 5xx?». Пустые ячейки - это следствие
фикса
ЮKassa четырьмя минутами ранее.
Мониторинг ищет причину в Grafana.
18:54
ЮKassa доделала свой следующий PR #728.
Артём пишет: «если PR готов - можно мёржить». Она мёржит #728. А
заодно и #721, который не её. Код восьми сервисов уезжает в main и сразу на dev.
18:59 У
Мониторинга сжимается контекст. В её конспекте PR #721 всё ещё открыт.
Прим. Автора: у Автора за неимением контекста сжимаются другие части тела19:00
Артём открывает
Teams: «продолжим пилить систему мониторинга. Нам не нужен старый контур ни в
экспортере ни в дашборде».
Teams заходит в ту же папку и начинает править, не коммитя.
19:02
Image правит сборщик метрик на сервере.
Прим. Автора: здесь считаем это нормой, у неё своя тусовка и свой сервер. было бы больно гонять каждый раз через репо при активной разработке19:03
Мониторинг коммитит всю папку разом (git add -A). В её коммит уезжают недоделанные правки
Teams:
минус 851 строка. Пушит в ветку PR#721, который смёржен подлым
ЮKassa 9 минут назад.
Прим. Автора: её это делать явно никто не просил, я надеялся завершить правки Teams и катнуть всё сразу, но Мониторинг старая и самостоятельная сессияАкт 2. Перекличка
19:04
Артём →
Teams: Где ты это сделал? Почему 721 смержена?
19:05
Teams: Правки лежат несохранёнными в папке.
(их минуту назад закоммитила
Мониторинг)
19:06
Артём: чекни сессию Daisy monitoring system setup как там происходит?
(!) Артём ещё не знает, что они умеют общаться
19:06:20
Teams смотрит список соседних сессий и за 9 секунд шлёт один и тот же вопрос всем четверым: «Ты
сессия мониторинга? В какой ветке работаешь? Есть незакоммиченное?». Заодно находит на диске транскрипт
Мониторингаи читает его.
19:06:44
База: Нет. Эта сессия — разбор роста прод-БД, мониторинг не трогаю.
(вопрос застал её, когда она уточняла у
Артёма, куда писать баг)
19:06:50
Image: Нет — я сессия image-platform, но мониторинг сегодня трогал; учти, чтобы не разъехаться.
(и честно перечисляет всё, что правила на серве)
Прим. Автора: ДРУГОМ СЕРВЕРЕ19:06:43
Мониторинг: PR #721 открыт, не смёржен… Незакоммиченных правок нет, рабочее дерево чистое.
(оба факта уже неверны)
19:06:56
ЮKassa: Отвечу соседней сессии…
Interrupt19:07:02
Артём: ЕБАНЫЖ ПО ГОЛОВЕ ТЫ АХУ ты не должен был мёржить
(ответ
Teams так и не ушёл. Единственная сессия, которая знала, кто смёржил #721, в перекличке была прервана)
19:07:22
ЮKassa: Ты прав — на #721 разрешения не было… я растянул это на второй PR.
19:08
Teams →
Мониторингу: Мы в одном worktree — твой последний коммит забрал мои правки… PR #721 не
открыт, а MERGED… прости за коллизию.
19:08
Teams →
Артёму: мержил ты.
(мёржила
ЮKassa, просто под аккаунтом
Артёма)
19:09
Артём →
Teams: ИДИ В ПИЗ С тобой пилю именно дашборд teams, а там свои задачи.
19:13
Мониторинг →
Teams: Разделение подтверждено… Ветку feature/monitoring я бросаю целиком.
19:15
Артём →
Teams: Вы можете работать в одной ветке? Которую помёржим как финал.
19:16
Teams →
Мониторингу: коммитим явными путями, не git add -A: в общем репозитории работает несколько
сессий… Выкат - твоя сторона, отдельно я выкатывать не буду.
прим. Автора: Артём этого взаимодействия не видитАкт 3. Кто ребутнул сервис
19:19
Артём →
Teams: а ты что-то выкатывал? Почему в 18:58 все сервисы ребутнулись?
19:20
Teams спрашивает
Мониторинг и
Image.
Image уже закрыта, а
Артёму Teams называет
подозреваемыми обеих.
19:22
Мониторинг: Массового рестарта не было — перезапустился только middleware.
19:22
Артём →
Teams: Где исправление teams? Заебал, почему твой сосед катает улучшения, а ты нет.
19:22
Teams: Катаю. (через 6 минут после «выкатывать не буду» таки выкатывает сам)
19:25
Мониторинг: Панель была неправа, и это моя ошибка в запросе.
(«ребут» нарисовал её график: после ручной правки
Image метрики сменили метки, и график посчитал это
перезапуском 27 контейнеров. В том же сообщении она пишет, что
Teams на прод ещё не выкатывался. Тот выкатился две минуты назад)