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 / Icinga and Shinken 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

breakdown

Breakdown availability into 'months', 'weeks', 'days', 'none'

adds additional 'breakdown' hash to each result with broken down results

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})
log_iterator
 Iterator object for logentry objects. For example a L<MongoDB::Cursor> object.
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.

DEBUGING

You may enable the debug mode by setting MONITORING_AVAILABILITY_DEBUG environment variable. This will create a logfile: /tmp/Monitoring-Availability-Debug.log which gets overwritten with every calculation. You will need the Log4Perl module to create this logfile.

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.