在使用阿里云Logstash将数据写入阿里云Elasticsearch(output指定为阿里云Elasticsearch)时,您可能会遇到网络不通、管道配置错误、负载高、管道正常启动但无数据写入目标端以及服务正常但缺少数据等问题,此时您可以参考本文的排查方案进行排查解决。
网络不通
排查方案 | 常见错误案例 | 建议解决方案 |
分别检查Logstash是否与源端和目标端服务在同一网络下。 说明 阿里云Logstash和阿里云Elasticsearch服务部署在专有网络环境下,建议您将业务部署在相同的专有网络下。 | 源端服务在公网环境下,而Logstash在专有网络环境下。 | 选择以下任意一种方式处理:
|
检查NAT配置是否错误。 |
| 根据具体情况,按照以下方式处理:
|
检查是否上传了正确的JDBC驱动插件。 | PolarDB数据同步场景中,使用高版本的JDBC驱动,日志无报错,但数据写不到目标端,换成低版本后正常。 | 选择正确版本的JDBC驱动,详细信息请参见配置扩展文件。 |
检查白名单或安全组是否有限制。 | 通过Filebeat将数据采集到Logstash中处理,Filebeat部署在用户侧ECS上,但ECS未在安全组开放监听端口。 | 根据具体情况,按照以下方式处理: |
检查Logstash管道配置的源端或目标端是否涉及到RAM用户未授权,导致RAM用户无法访问对应服务。 |
| 根据具体情况,按照以下方式处理: |
管道配置错误
排查方案 | 常见错误案例 | 建议解决方案 |
参见查询日志,查看Logstash的主日志,检查日志是否存在报错。 | 未安装插件。例如日志中出现 | 选择以下任意一种方式处理:
|
配置中存在隐藏的特殊字符。 | 手动输入配置。 | |
filter过滤代码有误,例如ruby代码存在错误。 | 选择以下任意一种方式处理:
| |
管道参数名或参数值写入错误。例如logstash-output-elasticsearch插件中的hosts写成了host、RDS实例名称不正确等。 | 参见Logstash官方文档或阿里云Elasticseatch官方最佳实践文档编写管道配置。 | |
Logstash和源端或目标端连接超时。例如无法访问Elasticsearch时,会出现 | 确保Logstash和Elasticsearch网络互通,并输入正确的源端和目标端地址。 | |
Elasticsearch开启了HTTPS协议,但Logstash管道配置时使用了http。 | 修改管道配置,使用与源端和目标端相同的访问协议。 |
负载问题
排查方案 | 常见错误案例 | 建议解决方案 |
参见集群监控章节,检查节点磁盘使用率是否过高。 |
| 根据具体情况,按照以下方式处理:
|
参见集群监控章节,检查节点内存是否溢出OOM(Out Of Memory)。 | 内存OOM,节点未拉起。 | 在控制台重启对应节点。 |
检查源端或目标端是否存在负载问题。 | Elasticsearch集群不健康,影响写入。 | 暂停写入,优先恢复集群健康,建议扩容。 |
管道正常启动,但无数据写入目标端
排查方案 | 常见错误案例 | 建议解决方案 |
参见使用Logstash管道配置调试功能,开启Logsatsh的管道配置调试功能(需要安装logstash-output-file_extend插件),查看调试日志,判断是否有数据流入Logstash服务:
| 无数据流入Logstash:
| 根据具体情况,选择以下方式处理:
|
有数据流入Logstash:
| 根据具体情况,选择以下方式处理:
|
服务正常缺少数据
排查方案 | 常见错误案例 | 建议解决方案 |
根据管道配置场景,结合管道插件属性排查:
| JDBC场景:
| 根据具体情况,选择以下方式处理:
|
使用logstash-input-elasticsearch插件场景:
| Logstash不适用于数据实时同步场景。如果源端存在实时写入,建议通过拉长定时查询时间,减少频繁在源端和目标端查询和写入。 | |
参见查询日志,查看Logstash慢日志,检查是否存在写入慢的问题。 | 源端和目标端压力均未达到瓶颈,但Logstash的管道工作线程数使用了官方的默认值。 | 增加Logstash的管道批大小和工作线程数,详细信息请参见通过配置文件管理管道。 |