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 <d...@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: [r...@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: [r...@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.evangeli...@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.
------------------------------------------------------------------------------
_______________________________________________ Nagios-users mailing list Nagios-users@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