NAME

Nagios::MKLivestatus - access nagios runtime data from check_mk livestatus Nagios addon

SYNOPSIS

use Nagios::MKLivestatus;
my $nl = Nagios::MKLivestatus->new( socket => '/var/lib/nagios3/rw/livestatus.sock' );
my $hosts = $nl->selectall_arrayref("GET hosts");

DESCRIPTION

This module connects via socket to the check_mk livestatus nagios addon. You first have to install and activate the livestatus addon in your nagios installation.

CONSTRUCTOR

new ( [ARGS] )

Creates an Nagios::MKLivestatus object. new takes at least the socketpath. Arguments are in key-value pairs.

socket                    path to the UNIX socket of check_mk livestatus
server                    use this server for a TCP connection
verbose                   verbose mode
line_seperator            ascii code of the line seperator, defaults to 10, (newline)
column_seperator          ascii code of the column seperator, defaults to 0 (null byte)
list_seperator            ascii code of the list seperator, defaults to 44 (comma)
host_service_seperator    ascii code of the host/service seperator, defaults to 124 (pipe)
keepalive                 enable keepalive. Default is off
errors_are_fatal          errors will die with an error message. Default: on
timeout                   set a general timeout. Used for connect and querys, Default 10sec

If the constructor is only passed a single argument, it is assumed to be a the socket specification. Use either socker OR server.

METHODS

do

do($statement)

Send a single statement without fetching the result.
Always returns true.

selectall_arrayref

selectall_arrayref($statement)
selectall_arrayref($statement, %opts)
selectall_arrayref($statement, %opts, $limit )

Sends a query and returns an array reference of arrays

   my $arr_refs = $nl->selectall_arrayref("GET hosts");

to get an array of hash references do something like

   my $hash_refs = $nl->selectall_arrayref("GET hosts", { Slice => {} });

to get an array of hash references from the first 2 returned rows only

   my $hash_refs = $nl->selectall_arrayref("GET hosts", { Slice => {} }, 2);

use limit to limit the result to this number of rows

column aliases can be defined with a rename hash

   my $hash_refs = $nl->selectall_arrayref("GET hosts", { Slice => {}, rename => { 'name' => 'host_name' } });

selectall_hashref

selectall_hashref($statement, $key_field)

Sends a query and returns a hashref with the given key

   my $hashrefs = $nl->selectall_hashref("GET hosts", "name");

selectcol_arrayref

selectcol_arrayref($statement)
selectcol_arrayref($statement, %opt )

Sends a query an returns an arrayref for the first columns

   my $array_ref = $nl->selectcol_arrayref("GET hosts\nColumns: name");

   $VAR1 = [
             'localhost',
             'gateway',
           ];

returns an empty array if nothing was found


to get a different column use this

   my $array_ref = $nl->selectcol_arrayref("GET hosts\nColumns: name contacts", { Columns => [2] } );

you can link 2 columns in a hash result set

   my %hash = @{$nl->selectcol_arrayref("GET hosts\nColumns: name contacts", { Columns => [1,2] } )};

   produces a hash with host the contact assosiation

   $VAR1 = {
             'localhost' => 'user1',
             'gateway'   => 'user2'
           };

selectrow_array

selectrow_array($statement)

Sends a query and returns an array for the first row

   my @array = $nl->selectrow_array("GET hosts");

returns undef if nothing was found

selectrow_arrayref

selectrow_arrayref($statement)

Sends a query and returns an array reference for the first row

   my $arrayref = $nl->selectrow_arrayref("GET hosts");

returns undef if nothing was found

selectrow_hashref

selectrow_hashref($statement)

Sends a query and returns a hash reference for the first row

   my $hashref = $nl->selectrow_hashref("GET hosts");

returns undef if nothing was found

select_scalar_value

select_scalar_value($statement)

Sends a query and returns a single scalar

   my $count = $nl->select_scalar_value("GET hosts\nStats: state = 0");

returns undef if nothing was found

errors_are_fatal

errors_are_fatal($values)

Enable or disable fatal errors. When enabled the module will croak on any error.

returns always undef

verbose

verbose($values)

Enable or disable verbose output. When enabled the module will dump out debug output

returns always true

ERROR HANDLING

Errorhandling can be done like this:

use Nagios::MKLivestatus;
my $nl = Nagios::MKLivestatus->new( socket => '/var/lib/nagios3/rw/livestatus.sock' );
$nl->errors_are_fatal(0);
my $hosts = $nl->selectall_arrayref("GET hosts");
if($Nagios::MKLivestatus::ErrorCode)Ê{
    croak($Nagios::MKLivestatus::ErrorMessage);
}

SEE ALSO

For more information about the query syntax and the livestatus plugin installation see the Livestatus page: http://mathias-kettner.de/checkmk_livestatus.html

AUTHOR

Sven Nierlein, <nierlein@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2009 by Sven Nierlein

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

1 POD Error

The following errors were encountered while parsing the POD:

Around line 668:

Non-ASCII character seen before =encoding in 'if($Nagios::MKLivestatus::ErrorCode)Ê{'. Assuming CP1252