Я ищу мониторинг и оповещения для некоторых наших бизнес-показателей в веб-приложении (просмотры страниц, подписки и т. Д.). Мы уже используем Nagios и Munin для широкого спектра случаев мониторинга серверов и предупреждений, поэтому я начал с них.
Я мог бы написать собственные плагины для Nagios, которые вычисляют наши статистические / контрольные диаграммы и проверяют, когда эти метрики опускаются ниже желаемых уровней (Предупреждение и Критический), но я также хотел бы знать, когда эти метрики поднимаются выше ожидаемых уровней (гораздо больше регистраций - мы что-то сделали правильно!).
Есть ли способ создать настраиваемые уровни предупреждений в Nagios или Munin, чтобы учесть эти положительные предупреждения, или есть еще один инструмент, который я должен искать, чтобы найти решение в этом случае? Идеальный инструмент:
Я использую nagios для предупреждений и ганглиев для сбора показателей. Часто мой инструмент, который отправляет данные в ганглии (через gmetric), также отправляет предупреждения в nagios (через send_nsca, также называемые пассивными предупреждениями). Если вы правильно напишете свой инструмент, он может обнаруживать изменения с последнего периода на текущий период. Таким образом вы можете, например, обнаружить изменения в определенных показателях. Среднее время ответа в этот раз на X% больше / меньше, чем в прошлый раз? Размер очереди увеличился / уменьшился на Х% больше / меньше?
Некоторое время я использовал мунин, но он не обладал гранулярностью ганглиев. Кроме того, создать новую метрику в ганглиях так же просто, как вызвать gmetric. БАМ, у вас новый график. Я также считаю полезным отображать время последнего развертывания на наших графиках показателей (просто вертикальная линия, показывающая время развертывания). Таким образом вы можете лучше визуализировать, что и когда происходит.
Многие плагины NAGIOS уже делают именно то, что вы хотите, и позволяют указывать пороги WARNING и CRITICAL в виде диапазона, предупреждая, когда значение выходит за пределы (или, необязательно, внутри) этого диапазона. Например, из /usr/lib/nagios/plugins/check_procs -h
:
[...]
Usage:
check_procs -w <range> -c <range> [-m metric] [-s state] [-p ppid]
[-u user] [-r rss] [-z vsz] [-P %cpu] [-a argument-array]
[-C command] [-t timeout] [-v]
[...]
-w, --warning=RANGE
Generate warning state if metric is outside this range
-c, --critical=RANGE
Generate critical state if metric is outside this range
[...]
RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If
specified 'max:min', a warning status will be generated if the
count is inside the specified range
[...]
Таким образом, в этом плагине уже есть идея, что «X проблематичен, если он больше C или меньше B, и неминуемая катастрофа, если он меньше A или больше D» (для A <B <C <D). Для меня это звучит очень похоже на то, о чем вы просили, и не требуется никакого изменения архитектуры NAGIOS (в которую довольно сильно встроена концепция OK / WARN / CRIT).