更新时间:2022-08-26 16:57:06

问题描述:

场景一:启用解析规则过多时,Logstash-filter一直重启,且filter无监控数据,具体情况如下:

 

场景二:启用解析规则过多(解析规则中含有添加数据库数据解析方法),Logstash-filter报错,filter不重启,数据流无法正常消费,Logstash-filter无监控数据,几个小时后filter一直重启,具体报错如下:

问题原因:

批量启用过多解析规则,当Logstash-filter资源配置无法完成加载解析规则时(场景一和场景二都是此原因),Logstash-filter会报错或者无法启动,导致最终一直重启。

排查思路:

  1. 查看Logstash-filter容器日志是否有以上报错;
  2. 查看Logstash-filter容器是否一直重启;
  3. 查看监控是否有Logstash-filter的数据信息。

如果存在场景一或者场景二情况,说明同时启用解析规则数量过多,当前Logstash-filter配置已无法满足解析规则加载。

排查方法:

1. 当标准一体机未执行性能优化脚本且启用的解析规则未到AR执行性能优化脚本之后可支持的解析规则上限时(标准一体机配置(x86:32C64G;arm:96C128G),可通过执行性能优化脚本(具体可查看实施指导手册优化性能)解决此问题。标准一体机性能调优后,AR可支持的解析规则上限(每个解析规则复杂程度不同,解析规则生效时间略有差异,以下数据仅供参考):

  • x86实体机性能调优之后,AR可支持的解析规则上限:38个解析规则(以内置14个+ab:19个+其他解析规则5个为例)解析规则生效时间:13分钟(即filter加载耗时:13分钟);
  • arm实体机性能调优之后:AR可支持的解析规则上限:33个解析规则(以内置14个+ab:19个为例)解析规则生效时间:13分钟(即filter加载耗时:13分钟)。

2. 当启用解析规则数据超过性能调优之后AR可支持的解析规则上限时(可能会出现场景一或者场景二情况),可通过手动调整Logstash-filter的配置解决(均在执行完性能优化脚本的基础上调整),需要调大Logstash-filter的JVM配置、内存限制(limits:Memory)以及健康检查时间(举例:若failureThreshold调整为6,意味着每5分钟检查1次,检查6次,即健康检查时间调整为30分钟,若6次都检查失败,Logstash-filter会重启)。

以批量启用50个解析规则为例:

(1)x86环境执行完性能优化脚本之后,需要调整的Logstash-filter的配置:JVM:15G,limits:Memory:16G,failureThreshold:6,如下所示:

当前配置下解析规则生效时间参考(每个解析规则复杂程度不同,解析规则生效时间略有差异,以下数据仅供参考):

  • 启用50个解析规则后重新部署filter,解析规则生效时间:25分钟(filter加载配置耗时:25分钟,即filter生效时间为filter重新部署的25分钟之后);
  • 启用50个解析规则后,编辑其中1个解析规则(即修改解析规则),filter生效时间:44分钟(等待21分钟+filter加载配置耗时23分钟)。

(2)ARM环境执行完性能优化脚本之后,需要调整的Logstash-filter的配置:JVM:20G,limits:Memory:21G,failureThreshold:6,如下所示:

当前配置下解析规则生效时间参考(每个解析规则复杂程度不同,解析规则生效时间略有差异,以下数据仅供参考):

  • 启用50个解析规则后重新部署filter,解析规则生效时间:23分钟(filter加载配置耗时:23分钟,即filter生效时间为filter重新部署的23分钟之后);
  • 启用50个解析规则后,编辑其中1个解析规则(即修改解析规则),filter生效时间:46分钟(等待23分钟+加载配置耗时23分钟)。