LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

Во-первых не очень понятно, почему это нельзя поверх alertmanager реализовать. Если все сервисы уникальны, и на каждый сервис один маршрут, то alertmanager ничего дедуплицировать не будет же.

У меня нет «сервисов». У меня есть куча разных хуков, которые генерируют одиночные события с произвольной частотой. Каждое такое событие нужно обработать отдельно от всех остальных.

Alertmanager же ожидает, что каждый алерт, поступающий ему на вход, будет поступать в течение условно 30 секунд. И только после того, как ты несколько раз позовёшь его эндпоинт, передавая туда этот алерт, он соизволит его заметить и отправить. А потом нужно ещё один раз позвать эндпоинт и задеассертить алерт. Пока ты этого не сделаешь (или не истечёт таймаут) — этот алерт будет висеть в статусе и периодически рассылаться.

А мне нужно строго обратное. Если алерт пришёл один раз в сутки — нужно один раз в сутки отправить уведомление. И напротив, если пришла тысяча однотипных (или вовсе одинаковых) алертов в секунду — нужно отправить тысячу уведомлений.

Я могу написать демона-прослойку, который будет добавлять к каждому событию уникальный дискриминатор, а потом ассертить каждое событие ровно на протяжении таймаута срабатывания Alertmanager, но «эта сова начинает рваться ещё в самом начале процесса» (ц)

Так может тебе alertmanager надо не в этом месте прикрутить, а на шаг раньше и перенести в него логику разруливания событий?

На какой на шаг раньше? Вместо cron’а? :)

Исходная версия intelfx, :

Во-первых не очень понятно, почему это нельзя поверх alertmanager реализовать. Если все сервисы уникальны, и на каждый сервис один маршрут, то alertmanager ничего дедуплицировать не будет же.

У меня нет «сервисов». У меня есть куча разных хуков, которые генерируют одиночные события с произвольной частотой. Каждое такое событие нужно обработать отдельно от всех остальных.

Alertmanager же ожидает, что каждый алерт, поступающий ему на вход, будет поступать в течение условно 30 секунд. И только после того, как ты несколько раз позовёшь его эндпоинт, передавая туда этот алерт, он соизволит его заметить и отправить. А потом нужно ещё один раз позвать эндпоинт и задеассертить алерт. Пока ты этого не сделаешь (или не истечёт таймаут) — этот алерт будет висеть в статусе и периодически рассылаться.

А мне нужно строго обратное. Если алерт пришёл один раз в сутки — нужно один раз в сутки отправить уведомление. И напротив, если пришла тысяча однотипных (или вовсе одинаковых) алертов в секунду — нужно отправить тысячу уведомлений.

Эта сова начинает рваться ещё в самом начале процесса (ц)

Так может тебе alertmanager надо не в этом месте прикрутить, а на шаг раньше и перенести в него логику разруливания событий?

На какой на шаг раньше? Вместо cron’а? :)