Elasticsearch针对filebeat配置调优
问题现象
filebeat是性能非常出色的文件采集工具,绝大多数的业务日志可以很容易的在1秒内收集至elasticsearch内,但是个别日志量大的业务日志无法及时收集,按照官方的默认配置通常1核CPU分配给filebeat时,写ES的速率低于1M/S,这里可以针对filebeat.yml配置文件做优化,提高写入ES的性能。
原因分析
filebeat.yml的默认配置比较保守,在日志量很大的业务场景,需要修改filebeat.yml参数进行调优。
处理步骤
- 针对filebeat.yml配置文件做参数优化,调整input端配置:
#根据实际情况调大harvester_buffer_size参数(该参数是指每个harvester监控文件时,使用的buffer大小)。 harvester_buffer_size:40960000 #根据实际情况调大filebeat.spool_size参数(该参数是指spooler的大小,一次Publish,上传多少行的日志量)。 filebeat.spool_size:250000 #根据实际情况调整 filebeat.idle_timeout参数(该参数是指spooler的超时时间,如果到了超时时间,不论是否到达容量阈值,spooler会清空发送出去)。 filebeat.idle_timeout:1s
- 针对filebeat.yml配置文件做参数优化,调整output.elasticsearch端配置:
#根据实际情况将worker参数调整为跟ES个数一致(该参数是指对应ES的个数,默认1)。 worker:1 #根据实际情况调大bulk_max_size参数(该参数是指单个elasticsearch批量API索引请求的最大事件数,默认是50)。 bulk_max_size:15000 #根据实际情况调整flush_interval参数(该参数是指新事件两个批量API索引请求之间需要等待的秒数,如果bulk_max_size在该值之前到达,额外的批量索引请求生效)。 flush_interval:1s