#!/usr/bin/perl -w ########################################### use strict; use RRDTool::OO; use Getopt::Std; use Pod::Usage; use Nagios::Clientstatus; my $N = "TEMPERATURE"; my $nc = Nagios::Clientstatus->new( help_subref => sub { pod2usage() }, mandatory_args => [qw( crit warn dsname )], ); my $rrd = RRDTool::OO->new( file => "/tmp/temperature.rrd" ); my $dsnames = $rrd->meta_data("dsnames"); $rrd->fetch_start( start => time() - 6*60, end => time() ); my $temp; if(my($time, @values) = $rrd->fetch_next()) { for(my $i=0; $i<@$dsnames; $i++) { if($dsnames->[$i] eq $nc->get_given_arg("dsname")) { $temp = $values[$i]; last; } } } my $status = "ok"; if(! defined $temp) { $status = "unknown"; } elsif($temp >= $nc->get_given_arg("crit")) { $status = "critical"; } elsif($temp >= $nc->get_given_arg("warn")) { $status = "warning"; } printf "$N %s - %s: %s\n", uc($status), $nc->get_given_arg("dsname"), defined $temp ? sprintf("%.1f", $temp) : "NODATA"; exit $nc->exitvalue($status);