LINUX.ORG.RU
ФорумAdmin

Nagios. check_arping - скрипт работает. Проблема с конфигурацией Nagios!


0

1

Доброго времени суток!

Имеется Suse linux 10 на нем Nagios 3.2.3

Основная цель, для которой он ставился -Мониторинг управляемых коммутаторов. Все работало замечательно, пока кое-кому свыше не приспичило добавить в nagios адреса компьютеров физических лиц. Пинг работает всего у пары абонентов, те что без роутеров сидят. Порты закрыты. В общем выход - это прикрутить arping. Перл скрипт с дистрибутива нагиоса check_arping

После пары часов танцев с бубнами, все заработало.

dbs:/ # /usr/local/nagios/libexec/check_arping -H 127.0.0.1 -I eth0 -T 25

ARPING OK - replied with MAC address 00:1d:60:d5:e1:f7

только ,попытка, прикрутить его непосредственно в Nagios, успехом не увенчалась((

Попробовал поставить сначала как сервис на localhost

кусок command.cfg

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


# 'check_snmp' command definition
define command{
        command_name    check_snmp
        command_line    $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
        }

Кусок localhost.cfg

# Define a host for the local machine

define host{
        use                     linux-server            ; Name of host template to use
<------> ------><------><------><------><------><------>; This host definition will inherit all variables that are defined
<------><------><------><------><------><------><------>; in (or inherited by) the linux-server host template definition.
        host_name               localhost
        alias                   localhost
        address                 127.0.0.1
        }


define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             ARPING
<------>check_command<-><------><------>check_arping!eth0!25
        }
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             PING
<------>check_command<-><------><------>check_ping!100.0,20%!500.0,60%
        }
В самом Nagios напротив названия сервиса в статусе сначала долго «Pending» затем «Critical»

Status information: (Return code of 255 is out of bounds)

Вот сам перл скрипт check_arping

#! /usr/bin/perl -w

use POSIX;
use strict;
use lib "/usr/local/nagios/libexec" ;
use utils qw($TIMEOUT %ERRORS &print_revision &support);

use Net::Arping;
use Getopt::Long;

my $PROGNAME = "check_arping";

my($status, $state, $answer);
my($opt_V, $opt_h, $opt_t, $opt_I, $opt_H);


#Option checking
$status = GetOptions(
<------>"V|version"<--->=> \$opt_V,
<------>"help"<>=> \$opt_h,.
<------>"I|interface=s">=> \$opt_I,
<------>"H|host=s"<---->=> \$opt_H,
<------>"t|timeout=i"<->=> \$opt_t);
<------><------>
if ($status == 0)
{
<------>print_help() ;
<------>exit $ERRORS{'OK'};
}


if ($opt_V) {
<------>print_revision($PROGNAME,'$Revision: 1112 $ ');
<------>exit $ERRORS{'OK'};
}

if ($opt_h) {
<------>print_help();
<------>exit $ERRORS{'OK'};
}

if ($opt_t) {
<------>if ($opt_t ne int($opt_t)) {
<------><------>print "Timeout not in seconds!\n";
<------><------>print_help();
<------><------>exit $ERRORS{'OK'};
<------>}
<------>$opt_t = int($opt_t);
} else {
<------>$opt_t = 3;
}

if (! utils::is_hostname($opt_H)){
<------>usage();
<------>exit $ERRORS{"UNKNOWN"};
}

my $ping = Net::Arping->new();

my $reply = $ping->arping(Host => $opt_H, Interface => $opt_I, Timeout => $opt_t);

if ($reply eq "0") {
<------>$state = "CRITICAL";
<------>print "$state: no reply from $opt_H on interface $opt_I in $opt_t seconds.\n";
<------>exit $ERRORS{$state};
} else {
<------>$state = "OK";
<------>$answer = "replied with MAC address $reply";
}

print "ARPING $state - $answer\n";
exit $ERRORS{$state};


sub usage {
<------>print "\nMissing arguments!\n";
<------>print "\n";
<------>print "check_arping -I <interface> -H <host IP> [-t <timeout>]\n";
<------>print "\n\n";
<------>support();
<------>exit $ERRORS{"UNKNOWN"};
}

sub print_help {
<------>print "check_arping pings hosts that normally wouldn't allow\n";
  <---->print "ICMP packets but are still on the local network.\n";
<------>print "\nUsage:\n";
<------>print "   -H (--host)       IP to query - (required)\n";
<------>print "   -I (--interface)  Interface to use.\n";
<------>print "   -t (--timeout)    Timeout in seconds.\n";
<------>print "   -V (--version)    Plugin version\n";
<------>print "   -h (--help)       usage help \n\n";
<------>print_revision($PROGNAME, '$Revision: 1112 $');
<------>
}
Вроде все делал по мануалам, но ничего так и не заработало(((

Не поливайте матом)) Большая просьба помочь разобраться.

Разобрался сам! Всем спасибо за внимание)

Xaoc_nsk ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.