Доброго времени суток!
Имеется 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%
}
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 $');
<------>
}
Не поливайте матом)) Большая просьба помочь разобраться.