Make. Build. Break. Reflect.
1.35K subscribers
158 photos
4 videos
1 file
171 links
Полезные советы, всратые истории, странные шутки и заметки на полях от @kruchkov_alexandr
Download Telegram
#opensource #alertmanager #devops

Новости opensource мира.

У продукта Alertmanager есть неприятная недоработка.
Все уведомления в Slack он отправляет двумя сообщениями:
- проблема (firing)🔴
- проблема решена (resolved)🟢

Наверняка видели.

В мире шумных уведомлений даже этого много.
По сути 100 алертов порождают 200 сообщений (после их решения), что не очень удобно.
API самого Slack позволяет изменять сообщения, но алертменеджер не умел в это.

Это происходит прежде всего потому, что алертменеджер не хранит стейт алертов, чтобы "запоминать" куда слать обновление по алерту.

При этом аналоги умеют менять сообщение (меняя красный firing на зелёный resolved):
- grafana oncall / IRM
- pagerduty

С появлением GenAI инструментов я захотел исправить эту досадную оплошность, сделал форк алертменеджера, локально всё потестировал и примерно с полгода гонял у себя - работает идеально. (Март 2025)

Затем осмелился и запилил пулл реквест:
https://github.com/prometheus/alertmanager/pull/4682 (Ноябрь 2025)

Не скрою, пользовался GenAI, но основная идея была моя.
Я на 90% понимаю изменённый код и поведение.

После вялого обсуждения другие, более активные участники, реализовали это в два пулл реквеста:
- https://github.com/prometheus/alertmanager/pull/4899 (Январь 2026)
- https://github.com/prometheus/alertmanager/pull/5007 (Февраль 2026)

Само собой после этого мой PR не имеет смысла, я закрыл его. (Февраль 2026)

Вчера, 8 апреля 2026 выпущен новый релиз v0.32.0.
https://github.com/prometheus/alertmanager/releases/tag/v0.32.0

Теперь алертменеджер умеет хранить стейт алертов для слака и менять сообщения - что очень удобно. 🎉

Всех, кто использует алертменеджер, поздравляю.
Можете обновлять и радоваться меньшему количеству сообщений и меньшему шуму алертов.

---
Но вам же интересно глянуть, как это работает перед обновлением прода?

Нужен Bot Token Slack (xoxb-...) со скоупами chat:write и chat:update.
Важно: работает только с токеном, не с webhook URL.

Положить конфиг в /tmp/am-test/alertmanager.yml
global:
resolve_timeout: 1m

route:
receiver: slack
group_by: [alertname]
group_wait: 10s
group_interval: 10s
repeat_interval: 12h

receivers:
- name: slack
slack_configs:
- send_resolved: true
api_url: https://slack.com/api/chat.postMessage
http_config:
authorization:
credentials: xoxb-YOUR-BOT-TOKEN
channel: '#your-channel'
update_message: true # <-- вот эта опция
title: '{{ .GroupLabels.alertname }} - {{ .Status | toUpper }}'
text: |
{{ if eq .Status "firing" }}🔥 *{{ .Alerts.Firing | len }} alert(s) FIRING*{{ else }} *All alerts RESOLVED*{{ end }}

{{ range .Alerts }}• {{ if .Annotations.summary }}{{ .Annotations.summary }}{{ else }}{{ .Labels.alertname }}{{ end }}
{{ end }}
color: '{{ if eq .Status "firing" }}danger{{ else }}good{{ end }}'


Запустить alertmanager v0.32.0 через Docker:
mkdir -p /tmp/am-test

docker run -d \
--name am-test \
-p 9093:9093 \
-v /tmp/am-test/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
-v /tmp/am-test/data:/alertmanager \
prom/alertmanager:v0.32.0


Стрельнуть алертом:
curl -X POST http://localhost:9093/api/v2/alerts \
-H 'Content-Type: application/json' \
-d '[{
"labels": {"alertname": "TestAlert", "severity": "warning"},
"annotations": {"summary": "This is a test alert - will resolve in the same message"}
}]'


Подождать ~10–15 секунд - в Slack появится сообщение с 🔴.

Зарезолвить:
curl -X POST http://localhost:9093/api/v2/alerts \
-H 'Content-Type: application/json' \
-d '[{
"labels": {"alertname": "TestAlert", "severity": "warning"},
"annotations": {"summary": "This is a test alert - will resolve in the same message"},
"endsAt": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"
}]'


Подождать ~10 секунд - то же самое сообщение изменится на 🟢.
Нового сообщения не будет!

Поздравляю всех с таким мелким, но приятным обновлением.
🔥462
#devops #troubleshooting #opensource

Понадобилось мне тут на работе проверить есть ли троттлинг ЦПУ.
Причём без создания, тупо взять квери, проверить в explore на графане с датасорса виктории метрикс и всё.
Это новый проект, там ещё обсервабилити не готов, мне чисто проверить.

Зашёл я на свой любимый сайт, откуда пиз ворую алерты
https://samber.github.io/awesome-prometheus-alerts/rules/

А там красота - всё зарефактили, всё по-другому.
Зашёл в раздел кубера - а там этого алерта нет.
Command+f тоже не находит по ключевым словам.
Поискал на главной - тоже нет.
Самая большая тупость рефакторинга - нет поля для поиска по сайту.🚬

Это же опенсорс, а давай я это заклонирую, это быстрее, чем искать другие ресурсы.
Клонирую гит репо, ищу поиском - нахожу.
Во-первых, там теперь там теперь рейт вместо инкрис,во-вторых, добавили проверку деления на ноль и в-третьих перенесли в раздел Кадвизор.
Хм, в целом логично, хер ли я в кубере его искал.
Ок, взял квери - проверил на работе по задаче - всё ок, троттлинга не было.

И тут мне стало интересно, а чо поиск не показывал? Чего поиска нет на сайте.
С плейврайт я уже работал, а теперь захотелось поработать с аддоном для браузера Крома.
https://github.com/ChromeDevTools/chrome-devtools-mcp

В конфиге MCP серверов это всё выглядит просто
    },
"chrome-devtools-my": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--autoConnect"
]
}

Со стороны браузера Кром надо просто галочку включить
chrome://inspect/#remote-debugging


Как это работает в двух словах:
- запускаю клодкод в терминале
- прошу чот проверить/поменять
- включаю галочку дебаггинга в браузере
- клод спрашивает разрешения, открывает либо отдельную сессию/профиль браузера, либо в моей же сессии (смотря как настроить!!!). У меня это отдельная сессия-профиль, Он открывает вкладку, спрашивает разрешение на управление браузером и работает
- сам через нативный developers tools видит ошибки в консоли, в нетворкинге, латенси запросов, все url бэкенда и всё!
- делает виртуальные скриншоты, ищет поля, и исправляет поля
- он буквально за меня кликает все элементы страницы и видит весь дебаг
- галочку потом можно снять для успокоения паранойи

Буквально за минуты получаю ответ, что "а тут херово навайбкожено в слоях провалился поиск 😎", пилю исправление, прошу нейронку проверить исправление, проверяется так же через девелопертулс. Потом ещё сам проверяю - поиск работает, несчастный троттлинг показывает, даже по всем разделам. Ого, у опенсерч тоже есть троттлинг.

Прошу запилить МР на гитхаб с минимальнейшими исправлениями и скриншотами "до/после".
https://github.com/samber/awesome-prometheus-alerts/pull/590

На выходных автор смержил, правда потом поправил поиск - не в центре экрана, а аккуратнее в углу справа.

Итоги:
- поправить простые(!) фронт штуки с помощью нейронки, Кром браузера и мсп девелоперс тулс - достаточно легко в 2026. QA, фронтенд - тут не нужны😢, можно самому делать мелкие исправления БАГОВ. Фичи пилить я бы не решился.
- по токенам подобные мелкие штуки недорогие - специально посчитал, около 7000 токенов вышло
- девелопертулс мне понравился больше, для дебаггинга он прям топ
- для СЕБЯ(!) я определил так:
- - - https://playwright.dev - автоматизированные тесты, кросс браузеры
- - - https://github.com/ChromeDevTools/chrome-devtools-mcp - сила в дебаггинге нативного девелоперс тулс
Это похожие, на первый взгляд, инструменты, но с разными задачами как по мне.
- а, ну да, теперь на сайте снова можно юзать поиск и воровать алерты🤡
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰14🔥3👍2🤡1