ELK Stack(含X-Pack)日志在Kibana Discover中消失问题求助
排查ELK Stack日志时有时无的问题
这种时有时无的日志显示问题我在日常运维中碰到过好多次,大概率是下面这几个环节出了问题,咱们一步步来排查:
1. 索引生命周期管理(ILM)规则误触发了自动删除
因为你用了带X-Pack的ELK,默认可能已经开启了索引生命周期管理。如果你的Filebeat索引是按日期命名的(比如filebeat-2024.05.20),ILM策略可能被误配置成了短时间后自动删除索引——比如你提到的“1小时后消失”,很可能是策略里的Delete阶段设置了“索引创建后1小时删除”。
排查步骤:
- 登录Kibana,进入Stack Management > Index Lifecycle Policies,找到对应Filebeat的默认策略(一般叫
filebeat) - 查看策略的各个阶段(Hot/Warm/Cold/Delete),重点看Delete阶段的触发条件,是不是设置了过短的时间阈值
- 也可以到Stack Management > Index Management里,找到你的Filebeat索引,查看它的生命周期状态,确认是不是已经进入了Delete阶段
2. 索引配置不匹配或索引被误删除
有可能Filebeat的输出索引配置变了,导致日志写到了你的索引模式没覆盖的新索引里;或者有人误删了正在使用的索引。
排查步骤:
- 打开Filebeat的配置文件(通常是
/etc/filebeat/filebeat.yml),检查output.elasticsearch.index的配置,比如是不是filebeat-%{[agent.version]}-%{+yyyy.MM.dd},这个格式要和你Kibana里的索引模式(比如filebeat-*)匹配 - 用Elasticsearch的命令查看所有索引:
curl -XGET 'http://<你的ES地址>:9200/_cat/indices?v',看看有没有新生成的Filebeat索引,是否在你的索引模式范围内 - 查看Elasticsearch的日志(一般在
/var/log/elasticsearch/目录下),搜索delete index关键词,确认有没有索引被删除的记录
3. Kibana的时间范围或索引模式缓存问题
有时候只是不小心选错了时间范围,或者Kibana的索引模式缓存没更新,导致看不到日志。
排查步骤:
- 在Kibana Discover页面,确认右上角的时间范围是不是选对了——比如是不是误选了“Last 15 minutes”,而你要找的是1小时前的日志;或者是不是选了“Yesterday”,但新日志在“Today”的时间范围里
- 刷新索引模式:进入Stack Management > Index Patterns,找到你的目标索引模式,点击Refresh field list,之后回到Discover页面重新加载
4. Elasticsearch磁盘水位线触发了保护机制
如果Elasticsearch所在服务器的磁盘空间不足,会触发磁盘水位线告警。当达到critical水位时,ES会自动把索引设为只读,甚至删除旧索引来释放空间,这也会导致日志消失。
排查步骤:
- 用命令查看磁盘使用情况:
curl -XGET 'http://<你的ES地址>:9200/_cat/disk?v',看看磁盘使用率是不是接近或超过了ES设置的水位线(默认是85%触发high,90%触发critical) - 查看Elasticsearch日志,搜索
disk watermark关键词,确认有没有相关的告警记录
5. Ingest Pipeline过滤或丢弃了日志
虽然你说日志曾经显示过,但也有可能ingest pipeline里的处理器被误配置,导致日志被过滤或者丢弃了——比如不小心加了drop处理器,满足条件就丢弃日志。
排查步骤:
- 进入Kibana的Stack Management > Ingest Pipelines,找到Filebeat对应的pipeline(比如名字包含
filebeat的),查看里面的处理器,确认有没有drop或者remove这类会丢弃日志的配置 - 查看Filebeat的日志(一般在
/var/log/filebeat/目录下),确认有没有日志发送失败的报错,比如连接ES超时、权限不足等问题
内容的提问来源于stack exchange,提问作者Ashok Reddy
相关产品推荐
相关产品推荐

