Nagios и arping под FreeBSD

Жалкая пародия на межсетевой экран в Microsoft Windows по умолчанию запрещает ICMP-ответы. Это осложняет мониторинг ансамбля хостов, используя nagios. В то же время утилита arping позволяет точно определить наличие в сети хоста с заданным IP-адресом. По умолчанию в nagios есть только скрипт cheсk_ping, который используется для проверки сервиса.

Поиск в Google говорит о наличии плагина check_arping для Linux, однако под FreeBSD собрать нужные для него хитрые модули perl, не получается. А ведь по сути достаточно иметь просто скрипт, запускающий поставленную из портов утилиту arping, и согласовывающий его с nagios.  Собственно, в этой заметке, я предлагаю такой способ.

Прежде всего меняем в описании сервиса в конфиге nagios:

define service{
 use ping-service
 host_name  somehost
 service_description ARPING
 check_command check_arping!em0!25
 # check_command check_ping!100.0,20%!500.0,60%
 }

Т.е. передаем для arping 2 аргумента, имя интерфейса и таймаут в миллисекундах.

Далее добавляем в файл  /usr/local/etc/nagios/commands.cfg следующие строки:

# 'check_arping' command definition
 define command{
 command_name check_arping
 command_line $USER1$/check_arping -H $HOSTADDRESS$ -I $ARG1$ -T $ARG2$
 }

И, наконец, в директории /usr/local/libexec/nagios создаем скрипт check_arping следующего содержания.

#! /usr/bin/perl
 $ip =$ARGV[1];
 $iface =$ARGV[3];
 $timeout =$ARGV[5]*1000;
 $cmd = "/usr/local/sbin/arping -i $iface -w $timeout -c 4 $ip";
 @res = `$cmd`;
 foreach $str (@res) {
 if (index($str,'packets')>-1) {
 $more = $str;
 }
 }
 $more =~ /.*\s(\d+)%.*/;
 $percent = $1;
 if ($percent == 0) {
 $status = "OK";
 $code = 0;
 }
 if ($percent > 25) {
 $status = "WARNING";
 $code = 1;
 }
 if ($percent == 100) {
 $status = "CRITICAL";
 $code = 2;
 }
 print "ARPING $status - |$more";
 exit $code;
 __END__

Скрипт рабочий, но в самом минимуме. Выдает одну строку вида:

# ./check_arping -H 192.168.2.166 -I em0 -T 30
 ARPING OK - |4 packets transmitted, 4 packets received, 0% unanswered

Если из четырех пакетов потеряно менее двух скрипт возвращает код 0 — «OK» для nagios, если потеряно два  или три пакета скрпит возвращает код 1 — «WARNING«, а если потеряны все четыре — то скрипт возвращает 2 — «CRITICAL«.

В перспективе планирую облагообразить обработку аргументов, так, как сейчас, — это решение, обусловленное катастрофическим отсутствием времени, поэтому заранее прошу прощения за индусский код.

Источник http://myfreebsd.ru/other/nagios-i-arping-pod-freebsd

Запись опубликована в рубрике *Unix,*Linux, FreeBSD. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91