[syslog-ng] Elasticsearch destination

jrhendri at roadrunner.com jrhendri at roadrunner.com
Thu Oct 23 16:50:55 CEST 2014


Hi Fabien -

  Correct - I am trying your Perl module. What I would like to do is:

1) have the syslog-ng servers run patterndb to parse different log types (makes that pattern matching scale over multiple servers)
2) send directly to an ES cluster

I was thinking maybe a "broker" like redis or RabitMQ might add buffering for performance but hoping it would not be necessary

What I have working is this:
destination d_redis {
  redis (
    host("localhost")
    command("LPUSH", "logstash", "$(format-json proxy_time=${PROXY.TIME} proxy_s_ip=${PROXY.S_IP} proxy_c_ip=${PROXY.C_IP} proxy_cs_mthd=${PROXY.CS_METHOD} proxy_s_action=${PROXY.S_ACTION} proxy_cs_host=${PROXY.CS_HOST} proxy_cs_uri_port=${PROXY.CS_URI_PORT} proxy_cs_username=${PROXY.CS_USERNAME} proxy_user_agent=${PROXY.USER_AGENT} proxy_cs_categories=${PROXY.CS_CATEGORIES})\n")
  );
};

with logstash simply pulling from redis and feeding ES.

Are you saying I would not need to use the format-json bit? If so - how would I select/name the desired fields that were parsed with patterndb?

As far as overall performance - I really think it is a combination of disk I/O and memory starvation.

I see a spike in "majflt/s" around the time the performance goes down hitting around 100 - 200 

I also see a *lot* of reads *and* writes which could be the paging...

Anyway - I think I could scale (out) the ES across multiple nodes once I get the syslog-ng indexing to json part working well.

Could you help me grok how to specify the fields to your Perl mod?

(otherwise I might have to read the source :-(


Thanks!!
Jim

---- Fabien Wernli <wernli at in2p3.fr> wrote: 
> Hi,
> 
> On Wed, Oct 22, 2014 at 09:28:23PM -0400, Jim Hendrick wrote:
> >   First of all - I'm glad to see more of us working on this.
> 
> I second that. We should have a common repository to share our efforts,
> as I know the incubator team is very busy, we could as well help them take
> the right decisions.
> 
> > scripts. I have done some basic testing and it looks like the Lua one
> > has more features, but I am having library issues with it so I may try
> > to use the Perl module and try to add some of these features (e.g.
> > template() is missing in the current Elasticsearch.pm so using that to
> > format-json seems out of the question at the moment)
> 
> If you're referring to my implementationi [1], the reason template() is missing,
> is that you actually don't need it, as the perl module passes a perl
> structure with all the key-values from `scope()` to the queue callback.
> 
> As for the performance, I start to get drops at around 5k/s, and I have a
> 6-node ES cluster with pretty decent hardware. I suspect the bottleneck to
> be my syslog_ng server which is a virtual machine.
> 
> My opinions/findings so far:
> 
> 1) the lua destination is very nice, but lua IMHO lacks a decent
>    Elasticsearch lib, and you have to format name-value pairs as json
> 2) the perl dest is nice as it gets the name-value pairs natively as perl
>    structures, and CPAN has an awesome ES module [2]
>    we're using it in production
> 3) python seems great too, and python has from what I hear a nice ES module
>    it also gets the name-value pairs as a python dictionary
>    it would be great if someone could test it
> 4) the last "official" option is using the SCL block from the incubator,
>    which basically is a shell program destination, so I didn't even consider
>    it for obvious performance reasons
> 5) other upcoming option: java destination in the works (which would
>    obviously benefit from ES' native libs)
> 
> Admittedly ES already takes json as input, so wether it's the destination
> handling the serialization or syslog's json parser is probably not so much
> of an issue, as long as it doesn't need to be munged in your destination
> code.
> 
> Cheers
> 
> [1] https://github.com/faxm0dem/syslog_ng-elasticsearch
> [2] http://search.cpan.org/~drtech/Search-Elasticsearch
> 
> ______________________________________________________________________________
> Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng
> Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng
> FAQ: http://www.balabit.com/wiki/syslog-ng-faq
> 



More information about the syslog-ng mailing list