Nagios plugin problem using check_nrpe

Antonio Fernando Evangelista antonio.evangelista at dasa.com.br
Tue May 11 18:16:14 CEST 2010


Hi.

I'm writing a new Nagios plugin  that will be responsible to monitor the server internal components temperature.

I have a Proliant DL380 G5 with the HP Management CLI for Linux installed on it, and I wrote a perl program to check the
Temperature.

When I execute the perl script directly from the command prompt, I receive a message indicating the behavior of the
Temperature. But, when I call this script perl using check_nrpe command, I received the same message, but the information
of the temperature stays in blank.

Following are my nrpe.cfg configuration file and the perl script.

Does anybody know how can I fix this?


NRPE.CFG

pid_file=/var/run/nrpe.pid
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=172.16.4.56,localhost
dont_blame_nrpe=0
debug=1
command_timeout=60
connection_timeout=300
command[check_load]=/usr/local/nagios/libexec/check_load -w 3,3,3 -c 4,4,4
command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/mapper/vg01-lvol1
command[check_sda2]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/cciss/c0d0p1
command[check_sda3]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/mapper/vg01-lvol6
command[check_sda4]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/mapper/vg01-lvol4
command[check_sda5]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/mapper/vg01-lvol3
command[check_sda6]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/mapper/vg01-lvol2
command[check_sda7]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/sda7
command[check_sda8]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/sda8
command[check_sda9]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/sda9
command[check_sda10]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/sda10
command[check_drbd0]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/drbd0
command[check_drbd1]=/usr/local/nagios/libexec/check_disk -w 15% -c 10% -p /dev/drbd1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 2 -c 4 -s Z
command[check_informix]=/usr/local/nagios/libexec/check_procs -c 1:50 -C oninit
command[check_crond]=/usr/local/nagios/libexec/check_procs -c 1:50 -C crond
command[check_cupsd]=/usr/local/nagios/libexec/check_procs -c 1:50 -C cupsd
command[check_freemem]=/usr/local/nagios/libexec/check_mem.pl -w 10 -c 5 -f
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 90% -c 80%
command[check_bonding]=/usr/local/nagios/libexec/check_linux_bonding
command[check_iozone]=/usr/local/nagios/libexec/check_temperature_hp.pl -s1 -w80 -c85
command[check_ambient]=/usr/local/nagios/libexec/check_temperature_hp.pl -s2 -w80 -c85
command[check_sensor1_cpu1]=/usr/local/nagios/libexec/check_temperature_hp.pl -s3 -w80 -c85
command[check_sensor2_cpu1]=/usr/local/nagios/libexec/check_temperature_hp.pl -s4 -w80 -c85
command[check_teste]=/usr/local/nagios/libexec/check_teste.pl -s 4 -w 80 -c 85



The Perl program:

#! /usr/bin/perl -w
# $Id: check_teste.pl


use lib "/usr/local/nagios/libexec"  ;

# Tell Perl what we need to use
use strict;
use Getopt::Std;

# Predefined exit codes for Nagios
use vars qw($opt_s $opt_c $opt_f $opt_u $opt_w $opt_C $opt_v %exit_codes);
#use vars qw($numero $descricao $tempatual $templimite $sensor);

%exit_codes   = ('UNKNOWN' ,-1,
                                 'OK'      , 0,
                 'WARNING' , 1,
                 'CRITICAL', 2,
                 );

# Get our variables, do our checking:


init();

get_temperature();


# Show usage
sub usage() {
  print "\ncheck_mem.pl v1.0 - Nagios Plugin\n\n";
  print "usage:\n";
  print " check_mem.pl -<f|u> -w <warnlevel> -c <critlevel>\n\n";
  print "options:\n";
  print " -f           Check FREE memory\n";
  print " -u           Check USED memory\n";
  print " -C           Count OS caches as FREE memory\n";
  print " -w PERCENT   Percent free/used when to warn\n";
  print " -c PERCENT   Percent free/used when critical\n";
  print "\nCopyright (C) 2000 Dan Larsson <dl\@tyfon.net>\n";
  print "check_mem.pl comes with absolutely NO WARRANTY either implied or explicit\n";
  print "This program is licensed under the terms of the\n";
  print "GNU General Public License (check source code for details)\n";
  exit $exit_codes{'UNKNOWN'};
}

#-----------------------------------------------------------------------------
# Verifica parametros passados
#-----------------------------------------------------------------------------
sub init {
    # Get the options

    if ($#ARGV le 0) {
      &usage;
    }
    else {
      getopts('c:s:w:vh');
    }

    # Shortcircuit the switches
    if (!$opt_w or $opt_w == 0 or !$opt_c or $opt_c == 0) {
      print "*** You must define WARN and CRITICAL levels!\n";
      &usage;
    }
    elsif (!$opt_s) {
      print "*** You must select the SENSOR number!\n";
      &usage;
    }

    # Check if levels are sane
    if ($opt_w >= $opt_c) {
      print "*** WARN level must not be greather than CRITICAL!\n";
      &usage;
    }
}

#-----------------------------------------------------------------------------
# Termina o programa enviando mensagem e postando RC
#-----------------------------------------------------------------------------
sub finish {
    my ($msg,$state) = @_;
    print "$msg\n";
    exit $state;
}

#-----------------------------------------------------------------------------
# Checa a temperatura do sensor solicitado
#-----------------------------------------------------------------------------
sub get_temperature {
my $numero=0;
my $descricao=0;
my $tempatual=0;
my $templimite=0;
my $sensor=0;
my $command=0;

$sensor = $opt_s;

$command=sprintf("/usr/local/nagios/libexec/check_temp_atual.sh %s",$sensor);
$tempatual = `$command`;
chomp($tempatual);

$command=sprintf("/usr/local/nagios/libexec/check_temp_thre.sh %s",$sensor);
$templimite = `$command`;
chomp($templimite);


    $numero = $opt_s;

         my $twarning = $templimite - ($templimite-($templimite * ($opt_w / 100)));
         my $tcritical =$templimite - ($templimite-($templimite * ($opt_c / 100)));

         if($tempatual < $twarning)
         {
               print STDOUT "OK: TEMPERATURA ATUAL: $tempatual C - THRESHOLD: $templimite C\n";
               exit(0);
         }
         elsif($tempatual < $templimite)
         {
               print STDOUT "WARNING: TEMPERATURA ATUAL: $tempatual C - THRESHOLD: $templimite C\n";
               exit(1);
         }
         else
         {
               print STDOUT "CRITICAL: TEMPERATURA ATUAL: $tempatual C - THRESHOLD: $templimite C\n";
               exit(2);
         }
}


If I execute the script directly from the command prompt:

[root at lnxaphmoa04 libexec]# /usr/local/nagios/libexec/check_teste.pl -s4 -w80 -c85
OK: TEMPERATURA ATUAL: 30 C - THRESHOLD: 127 C



If I execute the script calling through the check_nrpe command:

[root at lnxaphmoa04 libexec]# /usr/local/nagios/libexec/check_nrpe  -H localhost  -c check_teste
CRITICAL: TEMPERATURA ATUAL:  C - THRESHOLD:  C


Thanks in advance.

Regards,






________________________________
Antonio Evangelista
Especialista de Sistemas - Infraestrutura - TI
DASA - www.dasa.com.br<about:www.dasa.com.br>
e-mail: antonio.evangelista at dasa.com.br
Tel.: (11) 4197-5450
Nextel: (11) 7719-4643 - 55*6013*626



Esta mensagem, incluindo seus anexos, pode conter informações privilegiadas e/ou de caráter confidencial, não podendo ser retransmitida sem autorização do remetente. Se você não é o destinatário ou pessoa autorizada a recebê-la, informamos que o seu uso, divulgação, cópia ou arquivamento são proibidos. Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a. 

This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-lists.org/archive/users/attachments/20100511/c77c4540/attachment.html>
-------------- next part --------------
------------------------------------------------------------------------------

-------------- next part --------------
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null


More information about the Users mailing list