Logstash优化心得
来源:互联网 发布:win7下nginx配置php 编辑:程序博客网 时间:2024/06/06 04:09
版权声明:本文为原创文章,未经博主允许不得转载。重点内容
背景
前些时间测试线上ELK环境,发现beats组件直连elasticsearch数据灌入异常快,但是过了logstash数据明显迟缓。判定logstah的灌入存在瓶颈。以下为logstash调优细节。
环境
本次针对的优化对象是线上的日志分析平台,主要数据源为metricbeat和filebeat(基础服务器数据和应用日志)
- ES节点:顶配3点集群,各方面负载不高,无写入瓶颈
- logstah节点:2个汇聚端,
- 网络:内网万兆传输,无瓶颈
- 数据量(条):2~3w/s,每天约两亿多
架构
分析
logstah的功能是一个管道,通过input灌入数据,filter过滤数据,output输入数据
- input:filebeat和metricbeat总连接数为500左右,且观察日志无retry 或 timeout等输出,无明显瓶颈
- filter和output:logstash的正则解析过程非常消耗资源,但是我们的节点资源消耗居然不高。在新版的logstash中优化了input,filter,output的线程模式,在配置文件中可以通过配置pipeline.workers来调整filter和
output的线程数
网友的测评数据是两个点的logstah可以承受600+的连接数。但是我懒,未验证。
优化
查询官网手册后,最影响logstah传输效率的参数有以下几个:
pipeline.workers
:决定filter和output的线程数,官方建议大于CPU数,如果logstah节点是混用服务器,建议等于或小于CPU数pipeline.batch.size
:单个线程每次调用ES bulk index API时的事件数。这些时间将被放到内存中。最好的设定值是不断地测试,测试,测试。JVM_heap
:内存堆大小,通过配置jvm_option来修改。
- 结果
我的配置是:
pipeline.workers: 30pipeline.output.workers: 30pipeline.batch.size: 2500pipeline.batch.delay: 5---JVM_conf-Xms32g-Xmx32g
由于我的CPU为20核,稍微增加了线程数为30核,pipeline.batch.size由默认的150修改为2500。由于我的机器配置比较高,配置32G内存来换取更好的性能。
- 公式
- logstash在过滤过程中会将输入的数据放入内存中,规则如下:
pipeline.workers * pipeline.batch.size / flush_size = ES bulk index API 调用数
优化结果
调优后的传输数据如下:
- 上浮部分为优化后
阅读全文
0 0
- Logstash优化心得
- Logstash性能优化
- 针对Logstash吞吐量一次优化
- 针对Logstash吞吐量一次优化
- 针对Logstash吞吐量一次优化
- 针对Logstash吞吐量一次优化 .
- Logstash
- LogStash
- Logstash
- logstash
- logstash
- Logstash
- logstash过滤器filter grok多种日志匹配使用心得
- DSP 优化心得
- oracle优化心得
- oracle优化心得
- tuxedo优化心得
- DSP 优化心得收藏
- 排序算法
- Linux 忘记mysql root 密码 修改mysql 的root权限和密码
- 使用LVS实现负载均衡原理及安装配置详解
- js中变量和jsp中java代码中变量互相访问解决方案
- oracle之DQL,DML以及常用函数(重点)
- Logstash优化心得
- ubuntu16.04中用xrandr设置屏幕分辨率,且重启后不失效
- Delphi XE 10 跨平台三层数据库应用 datasnap
- os -- 进程的控制
- 对角线之和
- java2
- #CCF准备一年日常刷题#2011604-1 折点计数
- wrk调用lua测试性能
- os -- 进程同步