NAME

    POE::Component::Client::NSCA - a POE Component that implements
    send_nsca functionality

VERSION

    version 0.18

SYNOPSIS

       use strict;
       use POE qw(Component::Client::NSCA);
       use Data::Dumper;
    
       POE::Session->create(
            inline_states => {
                    _start =>
                    sub {
                       POE::Component::Client::NSCA->send_nsca(
                            host    => $hostname,
                            event   => '_result',
                            password => 'moocow',
                            encryption => 1, # Lets use XOR
                            message => {
                                            host_name => 'bovine',
                                            svc_description => 'chews',
                                            return_code => 0,
                                            plugin_output => 'Chewing okay',
                            },
                       );
                       return;
                    },
                    _result =>
                    sub {
                       my $result = $_[ARG0];
                       print Dumper( $result );
                       return;
                    },
            }
       );
    
       $poe_kernel->run();
       exit 0;

DESCRIPTION

    POE::Component::Client::NSCA is a POE component that implements
    send_nsca functionality. This is the client program that is used to
    send service check information from a remote machine to an nsca daemon
    on the central machine that runs Nagios.

    It is based in part on code shamelessly borrowed from Net::Nsca and
    optionally supports encryption using the Mcrypt module.

CONSTRUCTOR

    send_nsca

      Takes a number of parameters:

        'host', the hostname or IP address to connect to, mandatory;
        'event', the event handler in your session where the result should be sent, mandatory;
        'password', password that should be used to encrypt the packet, mandatory;
        'encryption', the encryption method to use, see below, mandatory;
        'message', a hashref containing details of the message to send, see below, mandatory;
        'session', optional if the poco is spawned from within another session;
        'port', the port to connect to, default is 5667;
        'context', anything you like that'll fit in a scalar, a ref for instance;
        'timeout', number of seconds to wait for socket timeouts, default is 10;

      The 'session' parameter is only required if you wish the output event
      to go to a different session than the calling session, or if you have
      spawned the poco outside of a session.

      The 'encryption' method is an integer value indicating the type of
      encryption to employ:

             0 = None        (Do NOT use this option)
             1 = Simple XOR  (No security, just obfuscation, but very fast)
      
             2 = DES
             3 = 3DES (Triple DES)
             4 = CAST-128
             5 = CAST-256
             6 = xTEA
             7 = 3WAY
             8 = BLOWFISH
             9 = TWOFISH
             10 = LOKI97
             11 = RC2
             12 = ARCFOUR
      
             14 = RIJNDAEL-128
             15 = RIJNDAEL-192
             16 = RIJNDAEL-256
      
             19 = WAKE
             20 = SERPENT
      
             22 = ENIGMA (Unix crypt)
             23 = GOST
             24 = SAFER64
             25 = SAFER128
             26 = SAFER+

      Methods 2-26 require that the Mcrypt module is installed.

      The 'message' hashref must contain the following keys:

        'host_name', the host that this check is for, mandatory;
        'return_code', the result code for the check, mandatory;
        'plugin_output', the output from the check, mandatory;
        'svc_description', the service description ( required if this is a service not a host check );

      The poco does it's work and will return the output event with the
      result.

OUTPUT EVENT

    This is generated by the poco. ARG0 will be a hash reference with the
    following keys:

      'host', the hostname given;
      'message', the message that was sent;
      'context', anything that you specified;
      'success', indicates that the check was successfully sent to the NSCA daemon;
      'error', only exists if something went wrong;

PROVENANCE

    Based on Net::Nsca by P Kent

    Which was originally derived from work by Ethan Galstad.

SEE ALSO

    POE

    Net::Nsca

    Mcrypt

    http://www.nagios.org/

AUTHOR

    Chris Williams <chris@bingosnet.co.uk>

COPYRIGHT AND LICENSE

    This software is copyright (c) 2017 by Chris Williams, P Kent and Ethan
    Galstad.

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