
# Elasticsearch针对filebeat配置调优
#### 问题现象
filebeat是性能非常出色的文件采集工具，绝大多数的业务日志能够在1秒内收集至Elasticsearch集群内，但是个别日志量大的业务日志无法及时收集，按照官方的默认配置通常1核CPU分配给filebeat时，数据写入Elasticsearch的速率低于1M/s，但支持优化"filebeat.yml"配置文件，提高写入集群的性能。
#### 原因分析
"filebeat.yml"的默认配置比较保守，在日志量很大的业务场景，需要修改"filebeat.yml"参数进行调优。
#### 处理步骤
1. 针对"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
   ```
   
2. 针对"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
   ```
   
 
