饶琛琳 > Message-Passing-Filter-Regexp-0.04 > Message::Passing::Filter::Regexp

Download:
Message-Passing-Filter-Regexp-0.04.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 0.04   Source   Latest Release: Message-Passing-Filter-Regexp-0.05

NAME ^

Message::Passing::Filter::Regexp - Regexp Capture Filter For Message::Passing

SYNOPSIS ^

    # regexfile
    [FORMAT]
    :default = %date %status %remotehost %domain %request %originhost %responsetime %upstreamtime %bytes %referer %ua %xff
    :nginxaccesslog = %date %status %remotehost %bytes %responsetime
    [REGEXP]
    %date = (?#=date)\[(?#=ts)\d{2}\/\w{3}\/\d{4}(?::\d{2}){3}(?#!ts) [-+]\d{4}\](?#!date)
    %status = (?#=status)\d+(?#!status)
    %remotehost = (?#=remotehost)\S+(?#!remotehost)
    %domain = (?#=domain).*?(?#!domain)
    %request = (?#=request)-|(?#=method)\w+(?#!method) (?#=url).*?(?#!url) (?#=version)HTTP/\d\.\d(?#!version)(?#!request)
    %originhost = (?#=originhost)-|(?#=oh).*?(?#!oh):\d+(?#!originhost)
    %responsetime = (?#=responsetime)-|.*?(?#!responsetime)
    %upstreamtime = (?#=upstreamtime).*?(?#!upstreamtime)
    %bytes = (?#=bytes)\d+(?#!bytes)
    %referer = (?#=referer)\"(?#=ref).*?(?#!ref)\"(?#!referer)
    %useragent = (?#=useragent)\"(?#=ua).*?(?#!ua)\"(?#!useragent)
    %xforwarderfor = (?#=xforwarderfor)\"(?#=xff).*?(?#!xff)\"(?#!xforwarderfor)

    # message-passing-cli
    use Message::Passing::DSL;
    run_message_server message_chain {
        output stdout => (
            class => 'STDOUT',
        );
        output elasticsearch => (
            class => 'ElasticSearch',
            elasticsearch_servers => ['127.0.0.1:9200'],
        );
        encoder("encoder",
            class => 'JSON',
            output_to => 'stdout',
            output_to => 'es',
        );
        filter regexp => (
            class => 'Regexp',
            format => ':nginxaccesslog',
            capture => [qw( ts status remotehost url oh responsetime upstreamtime bytes )]
            output_to => 'encoder',
        );
        filter logstash => (
            class => 'ToLogstash',
            output_to => 'regexp',
        );
        decoder decoder => (
            class => 'JSON',
            output_to => 'logstash',
        );
        input file => (
            class => 'FileTail',
            output_to => 'decoder',
        );
    };

DESCRIPTION ^

This filter passes all incoming messages through with regexp captures.

Note it must be running after Message::Passing::Filter::ToLogstash because it don't process with json format but directly capture $message->{'@message'} data lines into %{ $message->{'@fields'} }

ATTRIBUTES ^

regexfile

Path of your regexfile. Default is /etc/message-passing/regexfile.

format

Name of a defined format in your regexfile.

capture

ArrayRef of regex names which you want to capture and has been defined in your regexfile. note delete the prefix %.

fromto

HashRef of fields which you want capture from and to. Default as { '@message' => '@fields' }.

SEE ALSO ^

Idea steal from <http://logstash.net> Grok filter

Config Format see Config::Tiny

AUTHOR ^

chenryn, <rao.chenlin@gmail.com<gt>

COPYRIGHT AND LICENSE ^

Copyright (C) 2012 by chenryn

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.

syntax highlighting: