Kibana索引模式仅显示filebeat,缺失logstash、apache-access的问题咨询
索引缺失问题排查与解决步骤
第一步:排查Logstash数据采集与输出链路
当前Elasticsearch实例内未存储目标索引,说明数据未实际写入,优先从数据产生端排查:
- 确认Logstash进程实际运行状态,执行
systemctl status logstash检查是否存在启动异常、崩溃退出的情况,同时拉取最新运行日志(默认路径/var/log/logstash/logstash-plain.log),重点定位三类错误:- Input段配置的Apache访问日志路径是否存在权限不足、路径写错,导致根本读不到日志内容
- Filter段是否存在grok解析失败、字段格式不兼容的报错,导致采集到的事件被直接丢弃
- Output段是否存在Elasticsearch连接失败、账号权限不足、索引写入拒绝的报错
- 校验Logstash配置文件语法合法性,执行自带的配置校验命令
bin/logstash -f /etc/logstash/conf.d/ --config.test_and_exit,如果存在语法错误,修正后再重启服务加载配置 - 核对Output段配置的索引命名规则:Elasticsearch不会预先创建空索引,只有第一条匹配规则的文档成功写入时,才会生成对应的索引条目。如果配置的索引规则是
apache-access-%{+YYYY.MM.dd}、logstash-%{+YYYY.MM.dd},在没有实际数据写入的情况下,不会凭空出现索引条目,需要先模拟一条测试日志写入,验证能否正常生成对应索引
第二步:排查Elasticsearch端的索引可见性
如果Logstash侧已经确认有数据成功写入,再核对ES端的查询结果是否准确:
- 不要在无认证的情况下执行默认的索引查询命令,如果你开启了Elasticsearch安全认证,匿名查询会受到权限限制,仅能返回少量公开索引。正确的全量索引查询命令为
curl -u <ES用户名>:<ES密码> http://localhost:9200/_cat/indices?v,确认返回的列表是否包含目标索引 - 检查目标索引是否被设置为隐藏属性,如果索引的
index.hidden配置为true,默认的索引列表查询不会展示该条目,执行curl -u <ES用户名>:<ES密码> http://localhost:9200/_cat/indices/*?h=index,status即可列出全量含隐藏属性的索引
第三步:排查Kibana端的索引模式加载问题
如果Elasticsearch内已经存在目标索引,但Kibana的索引模式列表依然不展示,按以下顺序排查:
- 核对Kibana的集群连接配置,打开
kibana.yml确认elasticsearch.hosts指向的是你本地查询的Elasticsearch实例,同时确认Kibana使用的连接账号拥有访问目标索引的权限,避免因为Kibana错连其他集群导致看不到本地索引 - 确认已创建的索引模式匹配规则和实际索引名完全一致:比如实际ES中的索引命名使用横杠
apache-access-*,而你创建索引模式时错写成下划线apache_access*,会因为匹配规则不生效导致索引模式无法关联到对应索引 - 清理浏览器本地缓存后重新加载Kibana页面,或通过Dev Tools执行
GET /api/saved_objects/_find?type=index-pattern接口,确认后端是否正常返回已配置的索引模式列表,排除前端缓存导致的展示异常
内容的提问来源于stack exchange,提问作者harris9050
相关产品推荐
相关产品推荐

