.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Monitoring::Availability 3pm" .TH Monitoring::Availability 3pm "2014-10-25" "perl v5.20.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Monitoring::Availability \- Calculate Availability Data from Nagios / Icinga and Shinken Logfiles. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& use Monitoring::Availability; \& my $ma = Monitoring::Availability\->new(); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module calculates the availability for hosts/server from given logfiles. The Logfileformat is Nagios/Icinga only. .SH "REPOSITORY" .IX Header "REPOSITORY" .Vb 1 \& Git: http://github.com/sni/Monitoring\-Availability .Ve .SH "CONSTRUCTOR" .IX Header "CONSTRUCTOR" .SS "new ( [\s-1ARGS\s0] )" .IX Subsection "new ( [ARGS] )" Creates an \f(CW\*(C`Monitoring::Availability\*(C'\fR object. \f(CW\*(C`new\*(C'\fR takes at least the logs parameter. Arguments are in key-value pairs. .IP "rpttimeperiod" 4 .IX Item "rpttimeperiod" report timeperiod. defines a timeperiod for this report. Will use 24x7 if not specified. .IP "assumeinitialstates" 4 .IX Item "assumeinitialstates" Assume the initial host/service state if none is found, default: yes .IP "assumestateretention" 4 .IX Item "assumestateretention" Assume state retention, default: yes .IP "assumestatesduringnotrunning" 4 .IX Item "assumestatesduringnotrunning" Assume state during times when the monitoring process is not running, default: yes .IP "includesoftstates" 4 .IX Item "includesoftstates" Include soft states in the calculation. Only hard states are used otherwise, default: no .IP "initialassumedhoststate" 4 .IX Item "initialassumedhoststate" Assumed host state if none is found, default: unspecified .Sp valid options are: unspecified, current, up, down and unreachable .IP "initialassumedservicestate" 4 .IX Item "initialassumedservicestate" Assumed service state if none is found, default: unspecified .Sp valid options are: unspecified, current, ok, warning, unknown and critical .IP "backtrack" 4 .IX Item "backtrack" Go back this amount of days to find initial states, default: 4 .IP "showscheduleddowntime" 4 .IX Item "showscheduleddowntime" Include downtimes in calculation, default: yes .IP "timeformat" 4 .IX Item "timeformat" Time format for the log output, default: \f(CW%s\fR .IP "verbose" 4 .IX Item "verbose" verbose mode .IP "breakdown" 4 .IX Item "breakdown" Breakdown availability into 'months', 'weeks', 'days', 'none' .Sp adds additional 'breakdown' hash to each result with broken down results .SH "METHODS" .IX Header "METHODS" .SS "calculate" .IX Subsection "calculate" .Vb 1 \& calculate() .Ve .PP Calculate the availability .IP "start" 4 .IX Item "start" Timestamp of start .IP "end" 4 .IX Item "end" Timestamp of end .IP "log_string" 4 .IX Item "log_string" String containing the logs .IP "log_file" 4 .IX Item "log_file" File containing the logs .IP "log_dir" 4 .IX Item "log_dir" Directory containing *.log files .IP "log_livestatus" 4 .IX Item "log_livestatus" Array with logs from a livestatus query .Sp .Vb 2 \& a sample query could be: \& selectall_arrayref(GET logs...\enColumns: time type options, {Slice => 1}) .Ve .IP "log_iterator" 4 .IX Item "log_iterator" .Vb 1 \& Iterator object for logentry objects. For example a L object. .Ve .IP "hosts" 4 .IX Item "hosts" array with hostnames for which the report should be generated .IP "services" 4 .IX Item "services" array with hashes of services for which the report should be generated. The array should look like this: .Sp .Vb 1 \& [{host => \*(Aqhostname\*(Aq, service => \*(Aqdescription\*(Aq}, ...] .Ve .IP "initial_states" 4 .IX Item "initial_states" if you use the \*(L"current\*(R" option for initialassumedservicestate or initialassumedhoststate you have to provide the current states with a hash like this: .Sp .Vb 12 \& { \& hosts => { \& \*(Aqhostname\*(Aq => \*(Aqok\*(Aq, \& ... \& }, \& services => { \& \*(Aqhostname\*(Aq => { \& \*(Aqdescription\*(Aq => \*(Aqwarning\*(Aq, \& ... \& } \& } \& } .Ve .Sp valid values for hosts are: up, down and unreachable .Sp valid values for services are: ok, warning, unknown and critical .SS "get_condensed_logs" .IX Subsection "get_condensed_logs" .Vb 1 \& get_condensed_logs() .Ve .PP returns an array of hashes with the condensed log used for this report .SS "get_full_logs" .IX Subsection "get_full_logs" .Vb 1 \& get_full_logs() .Ve .PP returns an array of hashes with the full log used for this report .SH "BUGS" .IX Header "BUGS" Please report any bugs or feature requests to . .SH "DEBUGING" .IX Header "DEBUGING" You may enable the debug mode by setting \s-1MONITORING_AVAILABILITY_DEBUG\s0 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. .SH "SEE ALSO" .IX Header "SEE ALSO" You can also look for information at: .IP "\(bu" 4 Search \s-1CPAN\s0 .Sp .IP "\(bu" 4 Github .Sp .SH "AUTHOR" .IX Header "AUTHOR" Sven Nierlein, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2010 by Sven Nierlein .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.