Monitoring
Вычисление минимально/максимального/среднего значения контролируемого параметра
Используется fuse,pcre,yaml
Проблема в том, что системы мониторинга (nagios/icinga/...) не в состоянии отслеживать быстро изменяющиеся значения. Типичное время опроса в системах мониторинга составляет 2-5 минут. В некоторых случаях представляют интерес данные получаемые с интервалом несколько секунд. Данная программа как раз и решает эту задачу.
Для каждого source запускается отдельный тред, которой с указаным интервалом (параметр "interval") читает указанный файл и извлекает оттуда данные. Если из одного файла нужно получить несколько параметров, то используется параметр alias. Все имена (параметр "name") в source и alias должны быть уникальные, т.к. они являются именами файлов каталога, который создается при помощи fuse.
Выборка осуществляется по следуюшим правилам:
- читаются все строки подходящие под фильтр "filter" (если он есть) в виде регулярного выражения
- останавливаемся на строке указанной в "line"
- строка разбивается на слова (по пробелам) до номера слова указанного в "word"
- слово можно преобразовать при помощи параметра "subst" в виде регулярного выражения из которого будет взят первый параметр.
- строка преобразовывается во float
- если указан параметр "delta: 1", то вычисляется разница между предыдущим значением и делится на величину интервала.
- значение записывается во внутренний массив, после чего производится вычисление минимально/максимального/среднего значения. Число значений в массиве ограничивается параметром "numbers".