记一次日志采集问题:logstash没有向ES写入数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次日志采集问题:logstash没有向ES写入数据相关的知识,希望对你有一定的参考价值。

参考技术A 又出现了数次这样的问题,觉得不应该是es问题,又重新分析发现是修改过Logstash的配置文件,增加了日志的grok处理,导致logstash的处理速度跟不上kafka生产数据的速度,进而积压了数据。
看来还需要再优化。

===================以下是原分析================

某天突然日志审计系统不能采集数据,表现为查不到最近1小时的日志。
日志写入ES有几条通路:
1、WebServer API接口服务->kafka集群->logstash->ES集群
2、filebeat syslog 514端口->kafka集群->logstash->ES集群
3、filebeat采集nginx日志目录/var/log/nginx/access.log->kafka集群->logstash->ES集群
4、metricbeat、auditbeat采集系统日志->kafka集群->logstash->独立ES节点(系统监控日志)
前三条通路都无法采集到数据,而第四条通路时而能采集到数据,时而不行。

首先想定位出是哪个地方出了问题
1、先验证kafka集群的状态。
用命令行消费消息:
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.180:9092 --from-beginning --topic testtopic
验证结果:能正常的收到日志数据。说明kafka集群状态正常。
2、接着验证logstash输出是否正常
将logstash的配置文件做修改,
output
stdout
codec => rubydebug # 将日志输出到当前的终端上显示


查看输出结果,也是正常的。
3、最后,检查ES集群
重启ES集群发现主节点报错如下
[2020-09-01T15:59:41,129][ERROR][o.e.x.s.a.e.ReservedRealm] [node-3] failed to retrieve password hash for reserved user [elastic]
org.elasticsearch.action.UnavailableShardsException: at least one primary shard for the index [.security-7] is unavailable
参考这篇文章: https://blog.csdn.net/qq_25934401/article/details/108344875
依旧没有。
4、最后重建索引发现是前几天有一次es集群离线,Kafka日志消息积压过多,导致数据恢复较慢。耐心等待1小时,恢复了。。。

es 无日志,logstash 报错

参考技术A 通过kibana看不到日志
看管道监控,发现日志写入速率为0

然后看logstash日志,发现报错

通过百度,查到的原因是:
是因为一次请求中批量插入的数据条数巨多,以及短时间内的请求次数巨多引起ES节点服务器内存超过限制,ES主动给索引上锁。

解决方案是:

以上是关于记一次日志采集问题:logstash没有向ES写入数据的主要内容,如果未能解决你的问题,请参考以下文章

当ES向logstash发出reject

Linux企业运维——ELK日志分析平台(中)ES节点优化logstash数据采集过滤插件

Linux企业运维——ELK日志分析平台(中)ES节点优化logstash数据采集过滤插件

记一次ES日志系统的接入

es 无日志,logstash 报错

记一次logback传输日志到logstash根据自定义设置动态创建ElasticSearch索引