---
name: "Monitoring::Availability"
section: "3pm"
platform: "linux"
package: "libmonitoring-availability-perl"
version: "0.46-1"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/Monitoring::Availability"
---

# Monitoring::Availability(3pm)

Calculate Availability Data from Nagios / Icinga and Shinken Logfiles.

## 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:

- •

  Search CPAN

  \<http://search.cpan.org/dist/Monitoring-Availability/\>

- •

  Github

  \<http://github.com/sni/Monitoring-Availability\>

## 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.
