Fluent Bit输出至ES时基于时间戳创建动态索引的配置问题
故障原因
配置存在两处错误,直接导致ES拒绝日志写入:
- 时间占位符不符合strftime规范:
%M对应分钟字段,%D对应月/日/年格式的短日期,直接拼接在索引名中会生成带/的非法索引名,ES不支持索引名包含斜杠字符。 - 参数使用逻辑错误:开启
Logstash_Format后,时间后缀不需要写在Logstash_Prefix字段中,需单独通过Logstash_DateFormat参数指定后缀格式,Logstash_Prefix仅需填写固定前缀部分。
修复配置
将ES输出段配置替换为以下内容:
[OUTPUT] Name es Match * Host ${FLUENT_ELASTICSEARCH_HOST} Port ${FLUENT_ELASTICSEARCH_PORT} HTTP_User ${FLUENT_ELASTICSEARCH_USER} HTTP_Passwd ${FLUENT_ELASTICSEARCH_PASSWD} Logstash_Format On Logstash_Prefix dev Logstash_DateFormat %Y-%m-%d Time_Key @timestamp Generate_ID On Include_Tag_Key On Replace_Dots On Retry_Limit False Buffer_Size False tls On tls.verify Off
参数说明
- 固定前缀通过
Logstash_Prefix指定为dev - 日期后缀通过
Logstash_DateFormat指定为%Y-%m-%d(年-月-日),插件会自动拼接为dev-2022-07-14格式的动态索引 - 保留
Time_Key @timestamp配置,插件会优先取日志本身携带的时间戳计算索引归属,避免因日志采集延迟导致索引写入错误的日期分区。
重载Fluent Bit配置后即可正常写入日志,自动按日期生成对应索引。
内容的提问来源于stack exchange,提问作者Naveen
相关产品推荐
相关产品推荐

