Nagios и openrrcp
Есть у нас некоторое количество сетевого оборудования, за которым необходимо следить и вовремя принимать меры по устранению неполадок. Софтинку, которая нам будет об этих неполадках докладывать, мы уже настроили. Теперь настроим ту, которая будет следить за нашим нехитрым оборудованием.
Для этого нам нужен пакет openrrcp. Куда-нибудь его скачиваем и распаковываем. Перед сборкой исходников нужно будет установить библиотеку libdnet. Ну а дальше нас поджидают некоторые незадачи, которые надо будет устранить :)
Первая незадача заключается в том, что после того, как мы сделаем make в корневой директории пакета, в поддиректории /bin появится много всего интересного, но только не то, что нам в данном случае нужно. Почему? А потому, что в ./src/Makefile не написали, что плагин к nagios тоже надо собрать. Открываем Makefile и в конец блока all: дописываем check_rrcp. После этого плагин соберется как надо.
Следующим номером нашей программы станет опция -a, —authkey=AUTHKEY. У меня она почему то упорно не хотела воспринимать ключ, ругаясь на неверный аргумент команды. Собственно, в качестве решения этого вопроса ничего лучше не придумалось, кроме как исправить в исходнике плагина дефолтный ключ на нужный мне. В файле ./src/check_rrcp.c находим строчку
1 | authkey=0x2379 |
и меняем 2379 на нужный ключ.
Всё это может отказаться собираться, если установлена библиотека libpcap. Придется ее удалить :) После успешной установки openrrcp можно будет вернуть библиотеку libpcap обратно.
Проверяем работоспособность
1 2 | ./check_rrcp -H 00:80:48:45:30:8F -I em0 RRCP OK: Reply from 00:80:48:45:30:8F, time 5.428 ms |
Чутье странным образом подсказывает мне, что всё в порядке :) Переместим плагин в директорию с плагинами нагиоса.
С учетом того, что доступ к сетевому интерфейсу есть только из под рута, то нужно будет добавить пользователя nagios в список sudoers. Например так:
1 | %nagios ALL=(ALL) NOPASSWD: /usr/local/libexec/nagios/check_rrcp |
Ну а теперь осталось описать сервисы в конфигах нагиоса, которые будут использоваться для опроса оборудования.
commands.cfg:
1 2 3 4 5 | # 'check-switch-alive' command definition define command{ command_name check-switch-alive command_line sudo /usr/local/libexec/nagios/check_rrcp -I em0 -H '$_HOSTMAC_ADDRESS$' } |
templates.cfg:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # Define a template for switches that we can reuse define host{ name generic-switch use generic-host check_period 24x7 check_interval 5 retry_interval 1 max_check_attempts 10 check_command check-switch-alive notification_period 24x7 notification_interval 30 notification_options d,r contact_groups admins register 0 } |
hosts.cfg:
1 2 3 4 5 6 | define host{ use generic-switch host_name compex _mac_address 00:80:48:53:50:07 alias Compex ps2216 } |