Skip to content

vel21ripn/watcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

watcher

Monitoring

Вычисление минимально/максимального/среднего значения контролируемого параметра

Используется fuse,pcre,yaml

Проблема в том, что системы мониторинга (nagios/icinga/...) не в состоянии отслеживать быстро изменяющиеся значения. Типичное время опроса в системах мониторинга составляет 2-5 минут. В некоторых случаях представляют интерес данные получаемые с интервалом несколько секунд. Данная программа как раз и решает эту задачу.

Для каждого source запускается отдельный тред, которой с указаным интервалом (параметр "interval") читает указанный файл и извлекает оттуда данные. Если из одного файла нужно получить несколько параметров, то используется параметр alias. Все имена (параметр "name") в source и alias должны быть уникальные, т.к. они являются именами файлов каталога, который создается при помощи fuse.

Выборка осуществляется по следуюшим правилам:

  1. читаются все строки подходящие под фильтр "filter" (если он есть) в виде регулярного выражения
  2. останавливаемся на строке указанной в "line"
  3. строка разбивается на слова (по пробелам) до номера слова указанного в "word"
  4. слово можно преобразовать при помощи параметра "subst" в виде регулярного выражения из которого будет взят первый параметр.
  5. строка преобразовывается во float
  6. если указан параметр "delta: 1", то вычисляется разница между предыдущим значением и делится на величину интервала.
  7. значение записывается во внутренний массив, после чего производится вычисление минимально/максимального/среднего значения. Число значений в массиве ограничивается параметром "numbers".