流利的没有捕捉毫秒的时间
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。
【讨论】:
以上是关于流利的没有捕捉毫秒的时间的主要内容,如果未能解决你的问题,请参考以下文章
使用 EKS 中的流利位在 AWS cloudwatch 中自动创建日志组