Im sending all my beat* data into kafka and reading it from there via logstash (running on kubernetes). I use kafka for lots of other purposes and I know we can read 1M records a second using a simple consumer. When I look at the stats for my cluster it appears we're getting ~50K records / sec.
I suspect I have something misconfigured in my logstash setup. Not sure where to look to find tips/tricks for optimizing this path.
System: all 7.3.0
5 data nodes running on kubernetes hosts with 56 cores/64G RAM
5 ingest nodes
3 master nodes
file/metric beat kafka topics have 20 partitions and 20 consumers for each - also running in kubernetes.
How would I (dis)prove that elastic is the limiting factor?
Additional: yesterday I split out some of the higher traffic items from file/metric beat into their own kafka topics. Where my slower topics have 20 partitions / consumers these new ones only have 5/5 and seem to be performing much better.
Is this something I could solve by (properly) using pipelines?
Looking at the pipeline ui in Kibana.. a few facts surface:
The UI is only letting me see one (of 5? more?) filter-chains
For some outputs Im seeing > 25ms/event of latency. That's going to add up quickly. How do I fix this?
If you got improved throughput by changing Logstash config it isquite likely that Elasticsearch is not the bottleneck. It may be something related to the Kafka input plugin design, but I do not know the internals.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.