Provided by: libmonitoring-livestatus-perl_0.78-1_all bug

NAME

       Monitoring::Livestatus - Perl API for check_mk livestatus to access runtime data from
       Nagios and Icinga

SYNOPSIS

           use Monitoring::Livestatus;
           my $ml = Monitoring::Livestatus->new(
             socket => '/var/lib/livestatus/livestatus.sock'
           );
           my $hosts = $ml->selectall_arrayref("GET hosts");

DESCRIPTION

       This module connects via socket/tcp to the livestatus addon for Naemon, Nagios, Icinga and
       Shinken. You first have to install and activate the livestatus addon in your monitoring
       installation.

CONSTRUCTOR

   new ( [ARGS] )
       Creates an "Monitoring::Livestatus" object. "new" takes at least the socketpath. Arguments
       are in key-value pairs.

       socket
           path to the UNIX socket of check_mk livestatus

       server
           uses this server for a TCP connection

       peer
           alternative way to set socket or server, if value contains ':' server is used, else
           socket

       name
           human readable name for this connection, defaults to the the socket/server address

       verbose
           verbose mode

       line_separator
           ascii code of the line separator, defaults to 10, (newline)

       column_separator
           ascii code of the column separator, defaults to 0 (null byte)

       list_separator
           ascii code of the list separator, defaults to 44 (comma)

       host_service_separator
           ascii code of the host/service separator, defaults to 124 (pipe)

       keepalive
           enable keepalive. Default is off

       errors_are_fatal
           errors will die with an error message. Default: on

       warnings
           show warnings currently only querys without Columns: Header will result in a warning

       timeout
           set a general timeout. Used for connect and querys, no default

       query_timeout
           set a query timeout. Used for retrieving querys, Default 60sec

       connect_timeout
           set a connect timeout. Used for initial connections, default 5sec

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

METHODS

   do
        do($statement)
        do($statement, %opts)

       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 = $ml->selectall_arrayref("GET hosts");

       to get an array of hash references do something like

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

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

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

       you may use limit to limit the result to this number of rows

       column aliases can be defined with a rename hash

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

   selectall_hashref
        selectall_hashref($statement, $key_field)
        selectall_hashref($statement, $key_field, %opts)

       Sends a query and returns a hashref with the given key

           my $hashrefs = $ml->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 = $ml->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 = $ml->selectcol_arrayref(
              "GET hosts\nColumns: name contacts",
              { Columns => [2] }
           );

        you can link 2 columns in a hash result set

           my %hash = @{
             $ml->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)
        selectrow_array($statement, %opts)

       Sends a query and returns an array for the first row

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

       returns undef if nothing was found

   selectrow_arrayref
        selectrow_arrayref($statement)
        selectrow_arrayref($statement, %opts)

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

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

       returns undef if nothing was found

   selectrow_hashref
        selectrow_hashref($statement)
        selectrow_hashref($statement, %opt)

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

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

       returns undef if nothing was found

   selectscalar_value
        selectscalar_value($statement)
        selectscalar_value($statement, %opt)

       Sends a query and returns a single scalar

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

       returns undef if nothing was found

   errors_are_fatal
        errors_are_fatal()
        errors_are_fatal($value)

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

       returns the current setting if called without new value

   warnings
        warnings()
        warnings($value)

       Enable or disable warnings. When enabled the module will carp on warnings.

       returns the current setting if called without new value

   verbose
        verbose()
        verbose($values)

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

       returns the current setting if called without new value

   peer_addr
        $ml->peer_addr()

       returns the current peer address

       when using multiple backends, a list of all addresses is returned in list context

   peer_name
        $ml->peer_name()
        $ml->peer_name($string)

       if new value is set, name is set to this value

       always returns the current peer name

       when using multiple backends, a list of all names is returned in list context

   peer_key
        $ml->peer_key()

       returns a uniq key for this peer

       when using multiple backends, a list of all keys is returned in list context

   post_processing
        $ml->post_processing($result, $options, $keys)

       returns postprocessed result.

       Useful when using select based io.

QUERY OPTIONS

       In addition to the normal query syntax from the livestatus addon, it is possible to set
       column aliases in various ways.

   AddPeer
       adds the peers name, addr and key to the result set:

        my $hosts = $ml->selectall_hashref(
          "GET hosts\nColumns: name alias state",
          "name",
          { AddPeer => 1 }
        );

   Backend
       send the query only to some specific backends. Only useful when using multiple backends.

        my $hosts = $ml->selectall_arrayref(
          "GET hosts\nColumns: name alias state",
          { Backends => [ 'key1', 'key4' ] }
        );

   Columns
           only return the given column indexes

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

         see L<selectcol_arrayref> for more examples

   Deepcopy
           deep copy/clone the result set.

           Only effective when using multiple backends and threads.
           This can be safely turned off if you don't change the
           result set.
           If you get an error like "Invalid value for shared scalar" error" this
           should be turned on.

           my $array_ref = $ml->selectcol_arrayref(
              "GET hosts\nColumns: name contacts",
              { Deepcopy => 1 }
           );

   Limit
           Just like the Limit: <nr> option from livestatus itself.
           In addition you can add a start,length limit.

           my $array_ref = $ml->selectcol_arrayref(
              "GET hosts\nColumns: name contacts",
              { Limit => "10,20" }
           );

           This example will return 20 rows starting at row 10. You will
           get row 10-30.

           Cannot be combined with a Limit inside the query
           because a Limit will be added automatically.

           Adding a limit this way will greatly increase performance and
           reduce memory usage.

           This option is multibackend safe contrary to the "Limit: " part of a statement.
           Sending a statement like "GET...Limit: 10" with 3 backends will result in 30 rows.
           Using this options, you will receive only the first 10 rows.

   Rename
         see L<COLUMN ALIAS> for detailed explainaton

   Slice
         see L<selectall_arrayref> for detailed explainaton

   Sum
       The Sum option only applies when using multiple backends.  The values from all backends
       with be summed up to a total.

        my $stats = $ml->selectrow_hashref(
          "GET hosts\nStats: state = 0\nStats: state = 1",
          { Sum => 1 }
        );

COLUMN ALIAS

       In addition to the normal query syntax from the livestatus addon, it is possible to set
       column aliases in various ways.

       A valid Columns: Header could look like this:

        my $hosts = $ml->selectall_arrayref(
          "GET hosts\nColumns: state as status"
        );

       Stats queries could be aliased too:

        my $stats = $ml->selectall_arrayref(
          "GET hosts\nStats: state = 0 as up"
        );

       This syntax is available for: Stats, StatsAnd, StatsOr and StatsGroupBy

       An alternative way to set column aliases is to define rename option key/value pairs:

        my $hosts = $ml->selectall_arrayref(
          "GET hosts\nColumns: name", {
            rename => { 'name' => 'hostname' }
          }
        );

   extract_keys_from_stats_statement
        extract_keys_from_stats_statement($statement)

       Extract column keys from statement.

ERROR HANDLING

       Errorhandling can be done like this:

           use Monitoring::Livestatus;
           my $ml = Monitoring::Livestatus->new(
             socket => '/var/lib/livestatus/livestatus.sock'
           );
           $ml->errors_are_fatal(0);
           my $hosts = $ml->selectall_arrayref("GET hosts");
           if($Monitoring::Livestatus::ErrorCode) {
               croak($Monitoring::Livestatus::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, 2009-present, <sven@nierlein.org>

COPYRIGHT AND LICENSE

       Copyright (C) by Sven Nierlein

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