The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Monitoring::Availability - Calculate Availability Data from Nagios and Icinga Logfiles.

SYNOPSIS

    use Monitoring::Availability;
    my $ma = Monitoring::Availability->new();

DESCRIPTION

This module calculates the availability for hosts/server from given logfiles. The Logfileformat is Nagios/Icinga only.

REPOSITORY

    Git: http://github.com/sni/Monitoring-Availability

CONSTRUCTOR

new ( [ARGS] )

Creates an Monitoring::Availability object. new takes at least the logs parameter. Arguments are in key-value pairs.

rpttimeperiod

report timeperiod. defines a timeperiod for this report. Will use 24x7 if not specified.

assumeinitialstates

Assume the initial host/service state if none is found, default: yes

assumestateretention

Assume state retention, default: yes

assumestatesduringnotrunning

Assume state during times when the monitoring process is not running, default: yes

includesoftstates

Include soft states in the calculation. Only hard states are used otherwise, default: no

initialassumedhoststate

Assumed host state if none is found, default: unspecified

valid options are: unspecified, current, up, down and unreachable

initialassumedservicestate

Assumed service state if none is found, default: unspecified

valid options are: unspecified, current, ok, warning, unknown and critical

backtrack

Go back this amount of days to find initial states, default: 4

showscheduleddowntime

Include downtimes in calculation, default: yes

timeformat

Time format for the log output, default: %s

verbose

verbose mode

METHODS

calculate

 calculate()

Calculate the availability

start

Timestamp of start

end

Timestamp of end

log_string

String containing the logs

log_file

File containing the logs

log_dir

Directory containing *.log files

log_livestatus

Array with logs from a livestatus query

 a sample query could be:
 selectall_arrayref(GET logs...\nColumns: time type options, {Slice => 1})
hosts

array with hostnames for which the report should be generated

services

array with hashes of services for which the report should be generated. The array should look like this:

 [{host => 'hostname', service => 'description'}, ...]
initial_states

if you use the "current" option for initialassumedservicestate or initialassumedhoststate you have to provide the current states with a hash like this:

  {
    hosts => {
     'hostname' => 'ok',
     ...
    },
    services => {
     'hostname' => {
         'description' =>  'warning',
         ...
      }
    }
  }

valid values for hosts are: up, down and unreachable

valid values for services are: ok, warning, unknown and critical

get_condensed_logs

 get_condensed_logs()

returns an array of hashes with the condensed log used for this report

get_full_logs

 get_full_logs()

returns an array of hashes with the full log used for this report

BUGS

Please report any bugs or feature requests to http://github.com/sni/Monitoring-Availability/issues.

SEE ALSO

You can also look for information at:

AUTHOR

Sven Nierlein, <nierlein@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010 by Sven Nierlein

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.