Fluent对接Elasticsearch配置ILM后日志未写入新滚动索引问题
问题根因
你的配置存在两个核心错误,导致rollover后日志无法自动写入新索引:
- Fluentd配置中
index_name写死为固定初始索引名fluentd-log-000001,无论ES端是否生成新索引,Fluentd都会强制向这个旧索引写入数据 - Elasticsearch ILM rollover机制依赖可写别名实现索引自动切换,你没有配置Fluentd向rollover别名写入,也没有完成初始索引和别名的绑定
修复步骤
- 修改
fluent.conf配置,将index_name替换为你索引模板中设置的rollover别名fluentd:
<match *.**> @type copy <store> @type elasticsearch host elasticsearch port 9200 logstash_format false index_name fluentd # 这里改为rollover别名,不要写死具体索引名 type_name access_log tag_key @log_name flush_interval 5s </store> <store> @type stdout </store> </match>
修改后重启Fluentd生效。
- 完成初始索引与rollover别名的绑定,执行以下ES请求将初始索引设置为别名的可写索引:
PUT fluentd-log-000001 { "aliases": { "fluentd": { "is_write_index": true } } }
生效逻辑
修复完成后,当ILM触发rollover生成新的滚动索引时,Elasticsearch会自动将fluentd别名的写权限切换到新索引上,Fluentd始终向别名写入数据,就会自动路由到最新的索引中,无需手动修改配置。
内容的提问来源于stack exchange,提问作者redvertigo
相关产品推荐
相关产品推荐

