Fluentd(td-agent)输出文件名时间字段始终显示为00问题求助
问题原因
输出文件名时间固定为00是配置不兼容、参数缺失导致的:
- 你使用的Fluentd 1.14版本中,
time_slice_format是v0.12版本的废弃参数,不会生效 - buffer块中使用
time作为分片维度时,没有配置必填的timekey参数指定时间切分窗口,Fluentd无法按实际日志时间生成对应时间戳,会默认取初始时间的0点值填充 - 未指定时间取值字段,默认会用Fluentd接收日志的时间,而非日志本身携带的
@timestamp字段时间
修复方案
替换原有file输出配置为以下内容:
<match **> @type file path /logs/test-${$.kubernetes.host} <buffer $.kubernetes.host, time> path /logs/buffer/w1 flush_mode interval flush_interval 1s # 按1小时为单位切分时间分片,匹配文件名小时维度需求 timekey 1h # 指定使用日志内的@timestamp字段作为时间计算依据 time_key @timestamp # 文件名时间部分格式,替代废弃的time_slice_format timekey_format %Y%m%dT%H # 时间窗口到期后等待5秒刷盘,避免边缘日志错分到下一时间窗口 timekey_wait 5s </buffer> append true <format> @type single_value message_key message </format> </match>
配置调整后注意事项:
- 删除buffer路径下旧配置生成的残留缓冲文件,避免旧缓冲数据导致文件名异常
- 重启td-agent服务使配置生效
- 生效后输出文件格式会符合预期,示例:
/logs/test-w1.test.local.20220710T13.log
内容的提问来源于stack exchange,提问作者ddakker
相关产品推荐
相关产品推荐

