流利的没有捕捉毫秒的时间

Posted

技术标签:

【中文标题】流利的没有捕捉毫秒的时间【英文标题】:fluentd not capturing milliseconds for time 【发布时间】:2016-09-27 20:44:46 【问题描述】:

我使用的是 fluentd 版本 0.14.6。我想让 fluentd 捕获毫秒(或更好),然后传递给 ElasticSearch,以便条目以正确的顺序显示。这是我的 fluentd.conf:

<source>
  @type tail
  path /home/app/rails/current/log/development.log
  pos_file /home/app/fluentd/rails.pos
  tag rails.access

  format /^\[(?<time>\S10T\S8.\d3)\] \[(?<remoteIP>\d1,3.\d1,3.\d1,3.\d1,3)\] \[(?<requestUUID>\w+)\] \[AWSELB=(?<awselb>\w+)\] (?<message>.*)/
   time_format %Y-%m-%dT%H:%M:%S.%L
 </source>

<match rails.access>
  @type stdout
  time_as_integer false
</match>

这是来自 Rails 的示例日志条目

[2016-09-27T19:10:05.732] [xxx.xxx.xxx.46] [46171c9870ab2d06bc3a9a0bb02] [AWSELB=97B1C1B51866B68887CF7F5B8C352C45CA31592743CF389F006C541D59ED5E01852E7EF67C807B1CFC8BC145D569BCB9859AFCA73D10A87920CF2269DE5A47D16536B33873DEEF4A24967661232B38E564] Completed 200 OK in 39.8ms (Views: 0.5ms | ActiveRecord: 14.9ms)

这一切都很好解析,除了毫秒被丢弃。这是来自 STDOUT 的结果

2016-09-27 19:43:56 +0000 rails.access: "remoteIP":"xxx.xxx.xxx.46","requestUUID":"0238cb3d812534487181b2c54bd20","awselb":"97B1C1B51866B68887CF7F5B8C352C43CA21592743CF389F006C541D59ED5E01852E7EF67C807B1CFC8BC145D569BCB9859AFCA73D10A87920CF2269DE5A47D16536B33873DEEF4A24967661232B38E564","message":""

我有searched SO,但列出的两个帖子来自this PR 之前的时间,应该以毫秒为单位。它被合并了。 PR 提到添加一个time_as_integer 选项,我已经这样做了。我尝试将其设置为 true 和 false,因为 PR 中存在一些混淆,但没有任何区别。我也尝试将其放入源代码中,但这引发了错误。

我还查看了this post,它试图达到纳秒,我不需要。这对我来说也不是一个好的解决方案,因为时间将来自 fluentd,而不是 Rails。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您的source 已正确配置,毫秒可用于输出插件。 stdout 输出插件不输出毫秒code。

您可以使用文件输出插件测试毫秒可用性。

<match rails.access>
  @type file
  path example.out.log
  time_format %Y-%m-%dT%H:%M:%S.%L
</match>

ElasticSearch 输出插件需要考虑毫秒source。

【讨论】:

以上是关于流利的没有捕捉毫秒的时间的主要内容,如果未能解决你的问题,请参考以下文章

流利的断言 - 元组

流利的断言:大约比较两个数字集合

蒸汽 3,流利模型不会在 DB 中创建原始模型

使用 EKS 中的流利位在 AWS cloudwatch 中自动创建日志组

英语流利说 Level5 Unit3 Part 4 Learning Magnetic Field Reversal

CSS 滚动捕捉延迟多长时间?