使用 fluentd JSON 解析器的多种时间格式

Multiple time formats using fluentd JSON parser

我目前正在阅读容器日志作为我在 fluentd 中的来源,并且我正在解析我们所有的 JSON 格式的日志文件。 JSON 解析器根据我们的配置按预期工作,但问题是时间格式。根据日志文件,有多种时间格式。

例如,一个日志文件可能将时间存储为 2020-05-28T21:00:07Z,而另一个将其存储为 2020-04-28T20:07:52.013557931Z。在所有情况下,时间都存储在名为 "time" 的密钥中,因此默认情况下 fluentd 会尝试解析此密钥。

是否可以使用同一个过滤器来解析所有 JSON 数据,但它可以处理多种时间格式?我们是否需要为每种不同的时间格式创建不同的过滤器?

这更像是一个 'fluentd' 问题,而不是直接的 'Ruby' 问题。

但是,对于您关于过滤器的具体问题,一般来说,仅根据值是不可能分辨出具体的日期格式的。例如,“2020-03-04”是指 3 月 4 日 (yyyy-MM-dd) 还是 4 月 3 日 (yyyy-dd-MM)?不幸的是,无法仅从值来判断。

最好的做法通常是验证每个来源的格式(通过阅读该来源的文档或其他方式),并确保识别信息可用于将日期值与来源联系起来。否则,无论是 fluentd 还是任何其他程序都无法确定现在几点(尽管在某些情况下你可以做一些技巧来确定它 不是 的时间。)