Numerical - Числовой метод проверки

Пассивный индикатор. Метод проверяет соответствие числового значения указанным критериям.

Аргументы

Для числового значения есть 4 возможных проверки. Каждая (если задан соответствующий аргумент) проверяется, и если проверка показыват нарушение, устанавливается статус ERR. Если все проверки успешны, устанавливается статус OK.

minlim - минимальное допустимое значение параметра (если число ниже - выставляется статус ошибки 'ERR').

maxlim - максимальное допустимое значение.

diffmin - максимальное допустимое отклонение вверх (абсолютное, или в процентах, если указано со знаком процента в конце).

diffmax - максимальное допустимое отклонение вниз (аналогично).

current - последнее (предыдущее) установленное значение, с которым выполняются относительные (devup, devdown) сравнения нового числа.

Secret и Patience - общие аргументы для всех пассивных индикаторов.

Описание

diffmin и diffmax указываются относительно предыдущего результата, и должны выставляться с учетом времени политики. Например, если индикатор замеряет размер логфайла и работает по политике Hourly (период: 1 час), мы можем иметь diffmin в 1000000 (миллион байт), индикатор сработает, если лог будет расти более чем на 1 Мб в час. Это имеет смысл, если обычно он растет со скоростью полмегабайта в час. Но если мы сменим политику на Daily (период: 1 сутки), то изменение значения между обновлениями будет примерно 0.5*24 = 12 мегабайт, что выше diffmax, так что каждое изменение вызовет переход индикатора в ERR.

Установка diffmin в 0 удобна для слежения за величинами, которые должны монотонно увеличиваться. Например, uptime сервера. В случае перезагрузки сервера, он начнет отсчитываться с нуля, и первое же обновление индикатора вызовет ERR.

Более высокие величины diffmin удобны для слежения за "скоростью роста" параметра. Например, если мы имеем в среднем от 5 до 10 заказов в интернет-магазине за час, то слежение за количеством заказов в базе с diffmin=5 обнаружит, если внезапно у нас будет "провал", неважно по какой причине.

Комбинируя несколько числовых индикаторов с разными значениями и флагами silent (тихий), и объединив их через логический индикатор верхнего уровня, можно создать проверку, которая будет иметь разные границы для дневного и ночного режима. (Если днем количество новых заказов в базе данных в час меньше 5, а ночью меньше 1 в час, то логический индикатор).

Индикатор типа numerical можно заменить более простым индикатором типа heartbeat если выполнять логику (проверку числовых значений) на стороне клиента. Но numerical удобнее тем, что можно управлять значениями централизованно из веб-интерфейса.

Примеры

Создать индикатор с аргументами minlimn=50 и maxlim=100. Исходное значение - 80

$ okerrclient --name test:numerical -s 'METHOD numerical minlim=50 maxlim=100' 'STR 80'
okerr updated test:numerical = 80

Так как значение 80 находится в допустимых пределах, статус индикатора будет OK.

А теперь, укажем значение вне допустимых границ:

$ okerrclient --name test:numerical -s 'STR 101'
okerr updated test:numerical = 101

Так как значение вышло за пределы, состояние индикатора в веб-интерфейсе будет ERR, и будет выслано оповещение об этом.

Скрипт, отслеживающий размер последнего файла резервной копии:

#!/bin/sh
FILE=backup.tar.gz
SIZE=`/usr/bin/stat -c %s $FILE`
/usr/local/bin/okerrclient --name test:latest-backup -S mysecret -s "METHOD numerical minlim=1024000 diffmin=10% diffmax=-10%" "STR $SIZE"

Подобный мониторинг через okerr позволит обнаруживать целый ряд возможных проблемЖ

  • Что-то случилось со скриптом генерации бэкапов и резервная копия не создана
  • Резервная копия создана, но имеет очень малый размер, возможно неполная
  • Резервная копия создана, но она существенно больше или значительно меньше предыдущей, возможно, стоит проверить, почему это случилось.
  • Есть проблема с мониторингом (например, скрипт мониторинга не исполняется, или проблема с настройкой okerrclient) - обновления не будут сообщаться на сервер okerr, и он сообщит об ошибке.