NAME

POE::Component::Server::eris - POE eris message dispatcher

VERSION

version 2.6

SYNOPSIS

POE session for integration with your central logging infrastructure By itself, this module is useless. It is designed to take an stream of data from anything that can generate a POE Event. Examples for syslog-ng and rsyslog are included in the examples directory!

use POE qw(
    Component::Server::TCP
    Component::Server::eris
);

# Message Dispatch Service
my $SESSION = POE::Component::Server::eris->spawn(
        Alias               => 'eris_dispatch',     #optional
        ListenAddress       => 'localhost',         #default
        ListenPort          => '9514',              #default
        GraphiteHost        => undef,               #default
        GraphitePort        => 2003,                #default
        GraphitePrefix      => 'eris.dispatcher',   #default
        MaxLineLength       => 16384,               #default
);

# $SESSION = { alias => 'eris_dispatch', ID => POE::Session->ID };


# Take Input from a TCP Socket
my $input_log_session_id = POE::Component::Server::TCP->spawn(

    # An event will post incoming messages to:
    # $poe_kernel->post( eris_dispatch => dispatch_message => $msg );
    #        or
    # $poe_kernel->post( $SESSION->{alias} => dispatch_message => $msg );
    ...

);

POE::Kernel->run();

METHODS

spawn

Creates the POE::Session for the eris message dispatcher.

Parameters:

ListenAddress

Defaults to localhost.

ListenPort

Defaults to 9514, this is the port that clients can connect to request subscriptions from the service.

GraphitePort

Defaults to 2003, this is the port to submit graphite metrics from the daemon.

GraphitePrefix

Defaults to eris.dispatcher, all generated metrics will use this prefix.

GraphiteHost

This parameter is required to enable the graphite output. Without it, metrics will not be sent anywhere.

MaxLineLength

Defaults to 16384, this does not truncate log lines, but anytime a line exceeds this length the line will immediately be flushed from the buffer.

This only affects multi-line logging as multi-line logs longer than this setting will be split up into more than one message.

EVENTS

debug

Controls Debugging Output to the controlling terminal

dispatcher_start

Sets the alias and creates in-memory storages

graphite_connect

Establish a connection to the graphite server

flush_stats

Send statistics to the graphite server and the debug clients

dispatch_message

Based on clients connected and their feed settings, distribute this message

dispatch_messages

Splits multiple messages by line feeds into many messages.

server_error

Handles errors related to the PoCo::TCP::Server

register_client

Client Registration for the dispatcher

debug_client

Enables debugging for the client requesting it

nobug_client

Disables debugging for a particular client

fullfeed_client

Adds requesting client to the list of full feed clients

nofullfeed_client

Disables the full feed from the requesting client.

subscribe_client

Handle program name subscription

unsubscribe_client

Handle unsubscribe requests from clients

match_client

Handle requests for string matching from clients

flush_client

Flushes the outstanding buffer to the client.

nomatch_client

Remove a match based feed from a client

regex_client

Handle requests for string regexes from clients

noregex_client

Remove a match based feed from a client

status_client

Send current server statistics to client

dump_client

Dump something interesting to the client

hangup_client

This handles cleaning up from a client disconnect

server_shutdown

Announce server shutdown, shut off PoCo::Server::TCP Session

client_connect

PoCo::Server::TCP Client Establishment Code

client_print

PoCo::Server::TCP Write to Client

broadcast

PoCo::Server::TCP Broadcast Messages

debug_message

Send debug message to DEBUG clients

client_input

Parse the Client Input for eris::dispatcher commands and enact those commands

help_client

Display the help message

client_term

PoCo::Server::TCP Client Termination

ACKNOWLEDGEMENTS

Mattia Barbon

AUTHOR

Brad Lhotsky <brad@divisionbyzero.net>

SUPPORT

Websites

The following websites have more information about this module, and may be of help to you. As always, in addition to those websites please use your favorite search engine to discover more resources.

Bugs / Feature Requests

This module uses the GitHub Issue Tracker: https://github.com/reyjrar/POE-Component-Server-eris/issues

Source Code

This module's source code is available by visiting: https://github.com/reyjrar/POE-Component-Server-eris

COPYRIGHT AND LICENSE

This software is Copyright (c) 2017 by Brad Lhotsky.

This is free software, licensed under:

The (three-clause) BSD License