2016-09-27 103 views
0

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

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

    format /^\[(?<time>\S{10}T\S{8}.\d{3})\] \[(?<remoteIP>\d{1,3}.\d{1,3}.\d{1,3}.\d{1,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之前的时间,这是应该以毫秒为单位增加。它被合并。公关提到增加一个time_as_integer选项,我已经完成。我试图将它设置为真假,因为公关中存在一些混淆,但它没有任何区别。我也尝试将它放入源代码中,但是却抛出了一个错误。

我也看着this post,这是试图达到纳秒,我不需要。这对我来说也不是一个好的解决方案,因为时间会来自流利的,而不是Rails。

感谢您的帮助!

回答

0

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

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

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

ElasticSearch输出插件需要几十毫秒进入帐户source