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