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


   use strict;
   use POE qw(Component::Client::NSCA);
   use Data::Dumper;

        inline_states => {
                _start =>
                sub {
                        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',
                _result =>
                sub {
                   my $result = $_[ARG0];
                   print Dumper( $result );

   exit 0;


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.



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.


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;


Chris BinGOs Williams <>

Based on Net::Nsca by P Kent

Which was originally derived from work by Ethan Galstad.

See the LICENSE file for details.


Copyright © Chris Williams, P Kent and Ethan Galstad.

This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.