Имея в распоряжении настроенную связку Nagios + Nconf [1], продолжим развивать тему мониторинга разнообразных параметров. Будем мониторить время работы системы с момента загрузки системы. Чтобы "ребуты" оборудования не проходили для нас незаметно...
Проверку будем выполнять с используя расширение check_snmp. Синтаксис использования check_snmp следующий:
Usage: check_snmp -H <ip_address> -o <OID> [-w warn_range] [-c crit_range] [-C community] [-s string] [-r regex] [-R regexi] [-t timeout] [-e retries] [-l label] [-u units] [-p port-number] [-d delimiter] [-D output-delimiter] [-m miblist] [-P snmp version] [-N context] [-L seclevel] [-U secname] [-a authproto] [-A authpasswd] [-x privproto] [-X privpasswd] [-4|6] |
Будем использовать следующие переменные:
- 10.50.10.50 - IP-адрес оборудования
- public - SNMP community
- 2c - версия SNMP
Используя SNMP, состояние порта можно получить через OID sysUpTime.0. Пример такого запроса и ответа:
# snmpwalk -v 2c -c public 10.50.10.50 sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (4043391272) 467 days, 23:38:32.72 |
Теперь получим эту же информацию, используя check_snmp:
# /usr/local/libexec/nagios/check_snmp -H 10.50.10.50 -o sysUpTime.0 -P 2c -C public SNMP OK - Timeticks: (4043420333) 467 days, 23:43:23.33 | |
Последний штрих - укажем в комманде проверки дополнительные ключи, чтобы ограничить временные рамки, согласно которых получаем статус CRITICAL и WARNING. Если UpTime оборудования меньше 3 часов - статус CRITICAL, если UpTime меньше суток - статус WARNING. Итак:
- 3 часа - это 10800 секунд
- 24 часа - это 86400 секунд
SNMP возвращает нам значение sysUpTime.0, в формате timeticks. Timetick - это 0.01 секунды. Соответственно, необходимо перевести наше время в секундах в формат timeticks. Для этого умножаем время в секундах на 100, и получаем значение в timeticks.
Тестируем работоспособность комманды проверки:
# /usr/local/libexec/nagios/check_snmp -H 10.50.10.50 -o sysUpTime.0 -P 2c -C public -c 1080000:0 -w 8640000:0 SNMP WARNING - *8179000* | DISMAN-EVENT-MIB::sysUpTimeInstance=8179000;8640000:0;1080000:0;8640000;1080000; SNMP OK - 4049137283 | DISMAN-EVENT-MIB::sysUpTimeInstance=4049137283;8640000:0;1080000:0;8640000;1080000; |
Теперь, используя эту информацию, создадим в Nconf новую "Checkcommand" - "check_snmp_uptime".
Для этого в меню "Additional Items", пункт "Checkcommands" жмем кнопку "Add" и заполняем форму следующим образом:
check command name | check_snmp_uptime |
default service name | |
check command line | $USER1$/check_snmp -H $HOSTADDRESS$ -o sysUpTime.0 -P $ARG1$ -C $ARG2$ -c $ARG3$ -w $ARG4$ |
default command params | !2c!public!1080000:0!8640000:0 |
params description | ARG1=SNMP version,ARG2=SNMP community,ARG3=Warn level,ARG4=Critical Level |
amount of params | 4 |
После создания команды проверки check_snmp_uptime, добавляем этот сервис в команды проверки устройств, не забыв изменить необходимые переменные. Генерируем конфигурационные файлы и ожидаем проверки наших сервисов.
Результаты наших усилий: