事件背景:
早上的時候elk都是正常的,結果下午發現從10點之后很多索引的日志都收不到了,只有極個別索引有日志刷新.
日志有三種接入方式:
1. filebeat-->logstash-->es
2. rsyslog-->logstash-->es
3. filebeat-->kafka-->logstash-->es
第一種方式接入的日志量不大,能正常更新;第二種方式接入的是安全類日志,日志接收異常;第三種應用日志,也接收異常
- 查看kibana中的es監控,發現es正常,負載也正常
通過接口查看es健康狀況也沒什么問題
- 於是懷疑是不是kafka掛了
ps -ef | grep kafka
#查看kafka進程也都沒問題
kafka-console-consumer.sh --bootstrap-server xxx:9092 --topic xxx
#控制台消費者查看kafka數據,發現數據是有的
- 看來也不是kafka的問題,再查看logstash的狀態
ps -ef | grep logstash
於是查看了logstash的日志:
tail -100f logstash-plain.log
#發現有大量警告信息,如下圖
從報錯上來看,就是es的最大打開分片數達到上限,於是在kibana界面,查看es配置
發現沒有分片相關配置,說明使用了默認值
參考這篇博客: https://blog.csdn.net/knight_zhou/article/details/105707342
於是設置了參數:"max_shards_per_node":12000
PUT /_cluster/settings
{
"persistent": {
"cluster": {
"max_shards_per_node":12000
}
}
}
再次查看配置:
然后logstash日志中的警告日志就沒有了,查看日志發現日志也都接收到了.