我有一个 Fluentd 客户端,它将日志转发到 Logstash,并最终通过 Kibana 查看。我尝试了几种配置来将时间戳更新为日志文件中的时间条目。然而,这样做并不幸运。
这是我的 Fluentd 配置文件的解析部分:
<parse>
# @type none
@type multiline
format_firstline /^\[([\w]+)\s*\]\s*(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/
format1 /\[(?<loglevel>[\w]+)\s*\]\s*(?<logtime>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\s*\[(?<thread>[^\]]*)\]\s*(?<class>[^ ]*)\s+-\s*(?<message>.*)/
time_key logtime
time_type string
time_format %Y-%m-%d %H:%M:%S
keep_time_key true
</parse>
为什么这个配置不起作用? kibana 中的时间戳仍然是
fluent_time
而不是我的 logtime
。
我还尝试在“匹配”内的“注入”部分添加
time_key
,如下所示,这也不起作用。参考 - 如何使用 Fluent 为 Elasticsearch 添加时间戳和密钥
<inject>
time_key @logtime
time_type string
time_format %Y-%m-%d %H:%M:%S
</inject>
除此之外,我还尝试了如下所示的
record_transformer
,但这也不起作用。参考 - https://docs. Fluentd.org/v0.12/articles/filter_record_transformer#renew_time_key-(可选,-string-type)
<filter pattern>
@type record_transformer
<record>
renew_time_key ${record["logtime"]}
</record>
</filter>
我还在每次尝试中尝试过使用和不使用“@”来表示
logtime
。我还尝试在“源”部分中添加 time_key
组件,但这也不起作用。
Fluentd 和 ruby 版本 - Fluentd-1.0.2 ruby="2.4.2"
此时,我陷入了困境。我缺少什么?任何建议表示赞赏!
老实说,不确定这是如何解决问题的,但是,在解析中添加以下注入标签以及我的 time_key 配置似乎已经成功了。 Kibana 中的时间戳现在基于 logtime。
<inject>
time_key @timestamp
</inject>