6

I can print out Host UP Time percentage from Nagios-Report Perl Module with following code:

#!/usr/bin/perl
use strict ;
use Nagios::Report ;
my $x = Nagios::Report->new(q<local_cgi localhost nagiosadmin>)
  or die "Can't construct Nagios::Report object." ;
$x->mkreport(
                [ qw(HOST_NAME PERCENT_TOTAL_TIME_UP) ],

                sub {
                        my %F = @_; my $u = $F{PERCENT_TOTAL_TIME_UP}; $u =~ s/%//;
                    },
                        0,

                sub {
                        my $F = shift @_ ;
                }
) ;
$x->debug_dump ;

But How can I only print out Service UP Time Percentage? I mean only output the percentage value.

I tried many options but couldn't get it right.

Zim3r
  • 580
  • 2
  • 14
  • 36
  • 1
    I suggest you read the page you linked to and search for `service`. For example, the following text hints at the usage: `HOST_OR_SERVICE is an optional scalar specifying the service report instead of the host report. If not set, the host report is produced.` – Moritz Bunkus Jan 11 '13 at 16:37
  • Thank you, I don't understand how to produce service report. What should I set? – Zim3r Jan 11 '13 at 16:54
  • 1
    @Zim3r Perhaps my $x = Nagios::Report->new(q) – Craig Treptow Jan 11 '13 at 17:01
  • Thanks Craig, That didn't work but helped me to find the solution. I still don't know How to retrieve only the up-time value instead of full report. – Zim3r Jan 12 '13 at 08:14

1 Answers1

2

This will produce Service UP Time Report, but How can I only retrieve UP Time percentage value instead of full report?

#!/usr/bin/perl
use strict ;

use Nagios::Report ;

my $x = Nagios::Report->new(
                            # Data source
                q<local_cgi localhost nagiosadmin>,
                            # Report period
                [ qw(24x7) ],
                            # Time period
                'last7days',
                            # Service report
                1,
                            # Pre-filter 
                sub { my %F = @_; my $u = $F{PERCENT_TOTAL_TIME_OK}; $u =~ s/%//; $u < 100 }
               )
  or die "Can't construct Nagios::Report object." ;

$x->mkreport(
        [
        qw(
            HOST_NAME
            PERCENT_TOTAL_TIME_OK
            DOWN
            UP
            OUTAGE
          )
        ],

        sub { my %F = @_; my $u = $F{PERCENT_TOTAL_TIME_OK}; $u =~ s/%//; $u < 100 },

        undef,

        undef,

        1,

) ;

$x->debug_dump() ;
Zim3r
  • 580
  • 2
  • 14
  • 36