[Nagiosplug-help] Help with passing Nagios variables to customplugin
Zembower, Kevin
kzembowe at jhuccp.org
Mon Oct 1 15:31:49 CEST 2007
Hello, Ralph, thanks for writing again.
No, it's not a typo; it really says, " hostaddress is $HOSTADDRES$".
This also shows up in two (related) locations. In the dump of the
NAGIOS_* variables, I also get "NAGIOS_SERVICEOUTPUT=Temperature
UNKNOWN: CCP server room temperature could not be determined with host
HOSTADDRES. Probable communications or host failure." This also shows up
on the Nagios web page for this service in the 'status information'
columm, "Temperature UNKNOWN: CCP server room temperature could not be
determined with host $HOSTADDRES$. Probable communications or host
failure."
The check-command for this service from
/etc/nagios2/conf.d/services-nagios2.cfg is:
# check that ambient temperature from Dell sensor is less than 80 and 90
degree F.
# Notify the 'temp' group only.
define service {
hostgroup_name temp_sensor
service_description Ambient Temperature
check_command check_ambtempF!80!90
use generic-service
notification_interval 0 ; set > 0 if you want to be
renotified
contact_groups temp
}
The command-line in/etc/nagios2/services.cfg is:
# Define command for check_ambtempF to check the ambient temperature
using the Dell PC SNMP sensor.
define command {
command_name check_ambtempF
command_line $USER1$/check_ambtempF -H $HOSTADDRES$ -w $ARG1$
-c $ARG2$
}
For anyone who's interested, I've pasted in the complete
/usr/lib/nagios/plugins/check_ambtempF perl script at the end of this
note.
Thanks, again, Ralph, for your advice and suggestions.
-Kevin
'-----Original Message-----
From: Ralph.Grothe at itdz-berlin.de [mailto:Ralph.Grothe at itdz-berlin.de]
Sent: Monday, October 01, 2007 5:29 AM
To: Zembower, Kevin; nagiosplug-help at lists.sourceforge.net
Subject: RE: [Nagiosplug-help] Help with passing Nagios variables to
customplugin
Hi Kevin,
> -----Original Message-----
> From: nagiosplug-help-bounces at lists.sourceforge.net
> [mailto:nagiosplug-help-bounces at lists.sourceforge.net]On Behalf
Of
> Zembower, Kevin
> Sent: Friday, September 28, 2007 9:13 PM
> To: nagiosplug-help at lists.sourceforge.net
> Subject: [Nagiosplug-help] Help with passing Nagios variables
to
> customplugin
>
>
> Following advice from a user here, I used this code to dump
> the contents
> of the NAGIOS_* variables to a file when the perl plugin I
wrote was
> called:
>
> # Use this line below to dump the environment variables for
debugging
> system "env|sort >/tmp/plugins_env.$$";
>
> This seems to work correctly, and I end up with:
> ...
> NAGIOS_HOSTADDRESS=10.253.192.204
> NAGIOS_HOSTALIAS=www.jhuccp.org
> ...
>
> which is exactly what I expected. Then I tried to use this
value with:
> my %NAGIOS_ENV = map { $_ => $ENV{$_} } grep /^NAGIOS_/, keys
%ENV;
> ...
> } elsif (defined($NAGIOS_ENV{NAGIOS_HOSTADDRESS})) {
> $hostaddress = $NAGIOS_ENV{NAGIOS_HOSTADDRESS};
> ...
> print DMP "hostaddress is $hostaddress.\n";
>
> This outputs:
> hostaddress is $HOSTADDRES$.
is this just a typo (one missing S of the macro name)?
What does your check command definition look like?
=============================================================
nagios at cn2:/etc/nagios2$ cat /usr/lib/nagios/plugins/check_ambtempF
#! /usr/bin/perl -w
# check_ambtempF is a perl wrapper around the Nagios check_snmp plugin
# to check the ambient temperature sensor in Dell PowerEdge servers.
# Written by Kevin Zembower, 13-Sep-2007
use strict;
use Getopt::Std;
my %opts;
getopts('dhc:w:H:',\%opts);
# Use this line below to dump the environment variables for debugging
system "env|sort >/tmp/plugins_env.$$";
my %NAGIOS_ENV = map { $_ => $ENV{$_} } grep /^NAGIOS_/, keys %ENV;
if ( defined($opts{h}) ) {
print <<EOF;
Test ambient temperaure in Farenheit plugin for Nagios
Copyright (c) 2007 Kevin Zembower
This plugin is used to check the ambient temperature in degrees
Farenheit on Dell PowerEdge servers using SNMP.
Requirements:
This plugin requires /usr/lib/nagios/plugins/check_snmp.
usage: $0 [-h] [-d] [-H hostaddress] [-w warn] [-c crit]
-h print this short help message
hostaddress address of host to check
warn Warning threshold value in degrees Farenheit
crit Critical threshold value in degrees Farenheit
-d Turn on debugging output
EOF
exit;
}
# for debugging
open(DMP, ">/tmp/temperature.dmp");
my $warn= $opts{w};
my $crit= $opts{c};
my $debug = $opts{d};
my $hostaddress;
if (defined $opts{H}) {
$hostaddress=$opts{H};
} elsif (defined($NAGIOS_ENV{NAGIOS_HOSTADDRESS})) {
$hostaddress = $NAGIOS_ENV{NAGIOS_HOSTADDRESS};
} else {
$hostaddress="127.0.0.1"
};
print DMP "hostaddress is $hostaddress.\n";
my $output = "Temperature ";
$_ = `/usr/lib/nagios/plugins/check_snmp -H $hostaddress -o
.1.3.6.1.4.1.674.10892.1.700.20.1.6.1.3 -w 267 -c 332`;
print DMP $_;
close(DMP);
if ($? != 0) { #There was an error calling the check_snmp routine...
$output .= "UNKNOWN: CCP server room temperature could not be
determined with host $hostaddress. Probable communications or host
failure.\n";
print $output;
exit 3;
}
print "Error code: $?\n" if $debug;
print $_ if $debug;
(my $tempC) = /=(\d+)/; #All the digits after the equals sign are the
temperature in tenths of a degree Celsius
$tempC /= 10; #Divide the returned value by 10
print "${tempC}C\n" if $debug;
my $tempF = (9/5*$tempC + 32);
print "${tempF}F\n" if $debug;
if ( defined $crit && $tempF >= $crit ) {
$output .= "CRITICAL: CCP server room temperature of ${tempF}F
exceeds critical temperature of $crit\n";
print $output;
exit 2;
} elsif ( defined $warn && $tempF >= $warn ) {
$output .= "WARNING: CCP server room temperature of ${tempF}F
exceeds warning temperature of $warn\n";
print $output;
exit 1;
} else {
$output .= "OK: CCP server room temperature is ${tempF}F\n";
print $output;
exit 0;
}
nagios at cn2:/etc/nagios2$
More information about the Help
mailing list