RES: check_rrd_data.pl

Marcio Queiroz marcioqueiroz at vicom.com.br
Fri Mar 21 18:54:58 CET 2003


Jamie, 

i use this file and the plugin worked.

I put then on RRD on the perl directory.

 <<RRDs.zip>> 



	Marcio Q.  Dall Agnol
	phone : 55-21-3873-5826
	Fax      : 55-21-3873-5845
	marcioqueiroz at vicom.com.br
	VICOM
	Net Serviços de Comunicação S/A
	Visite nossas páginas:
	Redes Corporativas: <http://www.vicom.com.br>
	Internet Banda Larga: <http://www.virtua.com.br>
	TV por Assinatura : <http://www.net.tv.br>
	Institucional: http://www.netservicos.com


> ----- Mensagem original -----
> De:		Jamie [SMTP:jamie at bclnz.net]
> Enviada em:		terça-feira, 25 de fevereiro de 2003 19:08
> Para:		nagios-users at lists.sourceforge.net
> Assunto:		[Nagios-users] check_rrd_data.pl
> 
> Hi,
> 
> Has anyone actually managed to make check_rrd_data.pl work?
> 
> I've been hacking at it. Unsuccessfully. I tried messing around with the
> @INC array to include cricket's RRD::File.pm, and I thought I was getting
> there until I got:
> 
> Can't locate object method "new" via package "RRD::File" (perhaps you
> forgot
> to load "RRD::File"?) at ./check_rrd_data.pl line 95.
> 
> 
> This is what issue to check_rrd_data.pl:
> 
> ./check_rrd_data.pl
> /var/lib/cricket/edge/utilisation/inband.skt/fastethernet0_0.rrd 'return
> "Warning\n" if ($value > 10);' 'return \ "Critical\n" if ($value > 100);'
> 'printf \ "OK", $value; return 0;'
> 
> This is the code:
> 
> #!/usr/bin/perl -wT
> 
> # check_rrd_data plugin for nagios
> #
> # usage:
> #    check_rrd machine_id perlexp_warn perlexp_crit perlexp_default [ds]
> #
> # Checks data from a RRD file. machine_id is normally an IP address, that
> has
> # to be mapped to a RRD file, by means of the config file (by default
> # /var/spool/nagios/rrd-files, a file with pairs of (machine_id,rrd_file),
> # separated by whitespace). It can be a RRD file, too.
> #
> # The Perl expressions are expressions to be evaluated in the following
> cases:
> #
> # - perlexp_crit. The first one, to check if there is a critical
> situation.
> If
> # it returns other than "", it will be a critical message.
> # - perlexp_warn. The second one to be evaluated. If returns other than
> "",
> a
> # warning will be issued to Nagios.
> # - perlexp_default. If both of the above return "", it will be evaluated,
> and
> # wathever returns this expression will be returned by the script. NOTE
> that
> # this is different from the other two cases, to allow the user issue a
> # warning or critical failure even if the other two don't return it.
> #
> # Use these hosts.cfg entries as examples
> #
> # command[check_ping]=$USER1$/check_rrd_data.pl $HOSTADDRESS$ \
> #       'return "CHECK_CRICKET_PING: Warning\n" if ($value > 10);' 'return
> \
> #       "CHECK_CRICKET_PING: Critical\n" if ($value > 100);' 'printf \
> #       "PING OK - RTA = %.2fms\n", $value; return 0;' 1
> #
> service[machine]=PING;0;24x7;3;5;1;router-admins;240;24x7;1;1;1;;check_pin
> g
> #
> # initial version: 28 Nov 2000 by Esteban Manchado Velázquez
> # current status: 0.1
> #
> # Copyright Notice: GPL
> #
> 
> # Doesn't work! Why?
> # BEGIN {
>         # my $runtimedir = substr($0,0,rindex($0,'/'));
>         # require "$runtimedir/utils.pm";
> # }
> 
> require '/usr/lib/netsaint/plugins/utils.pm';
> 
> #changed by Jamie
> use lib '/usr/share/cricket/lib/RRD/File';
> 
> #use RRD::File;
> # use strict;                   # RRD:File and utils.pm don't like this
> 
> my $configfilepath = "/usr/lib/netsaint/plugins/rrd-files";     # Change
> if
> needed
> my %hostfile;                                           # For storing
> config
> my $rrdfile;                                            # RRD file to open
> 
> $ENV{'PATH'} = "/bin:/usr/bin";
> $ENV{'ENV'} = "";
> 
> if (scalar @ARGV != 4 && scalar @ARGV != 5) {print STDERR join "' '",
> @ARGV,
> "\n";
>         my $foo = 'check_rrd_data';
>         print STDERR $foo, " <file.rrd> <perl_exp_warn>
> <perl_exp_crit><perl_exp_default> [<ds>]\n\n";
>         print STDERR "<perl_exp_*> is an expression that gets evaluated
> with
> \$_ at the current\n";
>         print STDERR "value of the data source. If it returns something
> other than \"\", there\n";
>         print STDERR "will be a warning or a critical failure. Else, the
> expression\n";
>         print STDERR "<perl_exp_default> will be evaluated\n";
>         exit;
> }
> 
> # Check configuration file
> open F, $configfilepath or do {print "Can't open config file
> $configfilepath\n";
>         return $ERRORS{'UNKNOWN'};
> };
> while (<F>) {next unless /(.+)\s+(.+)/;
>         $hostfile{$1} = $2;
> }
> close F;
> 
> # Default
> my $ds = defined $ARGV[4]?$ARGV[4]:0;
>         # print "\$ds = " . $ds . ":";
>         # print "\$ARGV[4] = " . $ARGV[4] . ":";
> $ds =~ s/\$//g;         # Sometimes Nagios gives 1$ as the last parameter
> 
> # Guess which RRD file have to be opened
> $rrdfile = $ARGV[0] if (-r $ARGV[0]);           # First the parameter
> $rrdfile = $hostfile{$ARGV[0]} unless $rrdfile; # Second, the config file
>         # print "$ARGV[0]:";
> 
> if (! $rrdfile) {
>         print "Can't open data file for $ARGV[0]\n";    # Aaaargh!
>         return $ERRORS{'UNKNOWN'};      # Unknown
> }
> 
>         # print "Opening file $rrdfile:";
> my $rrd = new RRD::File ( -file => $rrdfile );
> $rrd->open();
> if (! $rrd->loadHeader()) {
>         print "Couldn't read header from $rrdfile\n";
>         exit $ERRORS{'UNKNOWN'};        # Unknown
> }
> my $value = $rrd->getDSCurrentValue($ds);
> $rrd->close();
> 
> # Perl expressions to evaluate
> my ($perl_exp_warn, $perl_exp_crit, $perl_exp_default) =
>                 ($ARGV[1], $ARGV[2], $ARGV[3]);
> my $result;     # Result of the expressions (will be printed)
> my @data;       # Special data reserved for the expressions, to pass data
> 
> # First check for critical errors
> $perl_exp_crit =~ /(.*)/;
> $perl_exp_crit = $1;
> $result = eval $perl_exp_crit;
> if ($result) {
>         print $result;
>         exit 2;         # Critical
> }
> 
> # Check for warnings
> $perl_exp_warn =~ /(.*)/;
> $perl_exp_warn = $1;
> $result = eval $perl_exp_warn;
> if ($result) {
>         print $result;
>         exit 1;         # Warning
> }
> 
> $perl_exp_default =~ /(.*)/;
> $perl_exp_default = $1;
> eval $perl_exp_default; # Normally returns 0 (OK)
> 
> Jamie
> 
> 
> 
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: RRDs.zip
Type: application/octet-stream
Size: 5701 bytes
Desc: not available
URL: <https://www.monitoring-lists.org/archive/users/attachments/20030321/d6ee5bda/attachment.obj>


More information about the Users mailing list