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