Filebeat日志无法发布,Elasticsearch提示无写入索引如何解决?
Filebeat日志无法发布问题解决方案
问题现象
Filebeat无法推送日志,出现如下警告:
2023-08-07T12:06:32.359Z WARN [elasticsearch] elasticsearch/client.go:414 Cannot index event publisher.Event... . . . {"type":"illegal_argument_exception","reason":"no write index is defined for alias [filebeat-7.17.1]. The write index may be explicitly disabled using is_write_index=false or the alias points to multiple indices without one being designated as a write index"}, dropping event!
核心原因
Elasticsearch中的filebeat-7.17.1别名未指定写入索引:要么是别名关联多个索引但未设置默认写入目标,要么是明确禁用了该别名的写入权限。
解决方案
1. 先查看别名关联的索引详情
执行Elasticsearch API命令,确认别名绑定的索引及当前写入配置:
# 查看别名关联的索引及写入设置(简洁格式) GET /_cat/aliases/filebeat-7.17.1?v # 查看别名关联的详细JSON结构 GET /_alias/filebeat-7.17.1
2. 根据场景修复写入索引设置
场景A:别名仅关联单个索引
将该索引设为别名的写入索引:
PUT /_alias/filebeat-7.17.1 { "is_write_index": true }
或指定具体索引名(替换{你的索引名}为实际索引):
PUT /{你的索引名}/_alias/filebeat-7.17.1 { "is_write_index": true }
场景B:别名关联多个索引
需指定其中一个索引作为写入目标,先移除已有写入索引设置,再添加新的写入索引:
PUT /_aliases { "actions": [ # 移除所有关联索引的写入标记 {"remove": {"index": "*", "alias": "filebeat-7.17.1", "is_write_index": true}}, # 将目标索引设为写入索引(替换为实际要指定的索引名) {"add": {"index": "filebeat-7.17.1-2023.08.07", "alias": "filebeat-7.17.1", "is_write_index": true}} ] }
3. 可选:调整Filebeat配置
如果不需要通过别名写入,可直接在Filebeat的elasticsearch.output配置中指定具体索引名,而非别名:
output.elasticsearch: hosts: ["your-es-host:9200"] index: "filebeat-7.17.1-%{+yyyy.MM.dd}" # 替换为实际索引模式
内容的提问来源于stack exchange,提问作者JeewanaSL
相关产品推荐
相关产品推荐

