Комментарии 21
Если у вас уже есть Prometheus, отчего не привести всю эту информацию в него и не написать правила для уведомления там? Бонусом получаются HA (на alertmanager), группировка для уведомлений, возможность потом спросить у Prometheus «что видел мониторинг в момент срабатывания правила». Для PostgreSQL точно есть экспортер, позволяющий произвольные запросы, для остальных баз он либо есть, либо тривиально пишется. И в эти экспортеры у вас уезжает только определение метрик, а смысл уведомления видно не в коде, который надо глазами разбирать сквозь boilerplate-код соединения с источниками данных, а в одном выражении с человекопонятными именами метрик (которые всё равно придумывать). Приёмники уведомлений ваяются так же через webhook какие угодно.
Я Вашу статью прочитал, а Вы мой комментарий — нет, это досадно. Бизнес-логика может быть хоть какой, и данные из этого множества баз это всё равно метрики, имеющие по отдельности свой смысл, который можно назвать прямо в имени метрики. Исключение составляют только вопросы типа «возьмём оттуда топ100 строк и отсюда топ100 строк и сравним как списки», но мне хотелось бы видеть пример осмысленного алерта с такой механикой. Подсчёт rps за период на сложность, по моему мнению, не тянет.
Я могу ошибаться, но складывается впечатление, что Вы не осилили в полной мере хоть одну из систем мониторинга.
А как вы при сборе «на лету» будете смотреть исторические данные, особенно если источники данных эволюционировали со временем? Допустим, вы мониторите конверсию на основе данных из постгри, которые хранятся в табличке conversion_rate. Собирали эти данные 6 месяцев, а потом разработка решила переделать все на кликхаус и новые данные теперь хранятся в клике.
И теперь, чтобы построить какой-то сложный алерт (например, «сравни текущую конверсию с конверсией годом ранее и скажи если все плохо») вам придется городить какую-то адовую логику с кучей условий «если дата меньше такой-то — смотри в постгрю, иначе смотри в кликхаус» вместо того, чтобы работать с одной метрикой.
Если метрику сложно собрать имеющимися инструментами, а также дополнительно нужно обработать какой-то логикой — пишется свой Prometheus exporter который отдаст заветное 42. В подавляющем большинстве он примитивен. Аналогично решается задача кастомной метрикой в zabbix. IMHO прекрасный образовательный проект получился, практические применение выглядит не убедительно
Мне сейчас кажется, что проще выглядит путь — написать один скрипт (затем другой скрипт, затем править) для сконфигурированного Balerter, чем писать и вносить правки в prometheus exporter, затем надо обязательно иметь zabbix и править там. Я допускаю, что ошибаюсь, но пока мне кажется так.
Часто даже писать не нужно, "изучи инструмент с которым работаешь", есть убер комбайн telegraf, который превращает что угодно в метрики, позволяя дополнительно манипулировать данными. Корреляции, гистерезис, аномалии — все мимо без хранилища. Это не вопрос религии, это вопрос проектирования, архитектуры и ресурсов
Умер видимо проект - последняя активность 2г назад на гите
Легкая работа со сложными алертами. Или история создания Balerter