fluentd 丢失毫秒,现在日志消息在 elasticsearch 中的存储顺序乱序
fluentd loses milliseconds and now log messages are stored out of order in elasticsearch
我正在使用 fluentd 将日志消息集中在 elasticsearch 中并使用 kibana 查看它们。当我查看日志消息时,同一秒内发生的消息乱序并且@timestamp 中的毫秒数全为零
2015-01-13T11:54:01.000-06:00 DEBUG my message
如何熟练地存储毫秒数?
fluentd 目前不支持亚秒分辨率:
https://github.com/fluent/fluentd/issues/461
我通过在所有日志消息中添加一个新字段 record_reformer 来解决这个问题,以存储自纪元
以来的纳秒数
例如,如果您的 fluentd 有这样的输入:
#
# Syslog
#
<source>
type syslog
port 5140
bind localhost
tag syslog
</source>
#
# Tomcat log4j json output
#
<source>
type tail
path /home/foo/logs/catalina-json.out
pos_file /home/foo/logs/fluentd.pos
tag tomcat
format json
time_key @timestamp
time_format "%Y-%m-%dT%H:%M:%S.%L%Z"
</source>
然后将它们更改为如下所示并添加一个 record_reformer 以添加一个纳秒字段
#
# Syslog
#
<source>
type syslog
port 5140
bind localhost
tag cleanup.syslog
</source>
#
# Tomcat log4j json output
#
<source>
type tail
path /home/foo/logs/catalina-json.out
pos_file /home/foo/logs/fluentd.pos
tag cleanup.tomcat
format json
time_key @timestamp
time_format "%Y-%m-%dT%H:%M:%S.%L%Z"
</source>
<match cleanup.**>
type record_reformer
time_nano ${t = Time.now; ((t.to_i * 1000000000) + t.nsec).to_s}
tag ${tag_suffix[1]}
</match>
然后将 time_nano 字段添加到您的 kibana 仪表板并使用它代替 @timestamp 进行排序,一切都会井井有条。
我正在使用 fluentd 将日志消息集中在 elasticsearch 中并使用 kibana 查看它们。当我查看日志消息时,同一秒内发生的消息乱序并且@timestamp 中的毫秒数全为零
2015-01-13T11:54:01.000-06:00 DEBUG my message
如何熟练地存储毫秒数?
fluentd 目前不支持亚秒分辨率: https://github.com/fluent/fluentd/issues/461
我通过在所有日志消息中添加一个新字段 record_reformer 来解决这个问题,以存储自纪元
以来的纳秒数例如,如果您的 fluentd 有这样的输入:
#
# Syslog
#
<source>
type syslog
port 5140
bind localhost
tag syslog
</source>
#
# Tomcat log4j json output
#
<source>
type tail
path /home/foo/logs/catalina-json.out
pos_file /home/foo/logs/fluentd.pos
tag tomcat
format json
time_key @timestamp
time_format "%Y-%m-%dT%H:%M:%S.%L%Z"
</source>
然后将它们更改为如下所示并添加一个 record_reformer 以添加一个纳秒字段
#
# Syslog
#
<source>
type syslog
port 5140
bind localhost
tag cleanup.syslog
</source>
#
# Tomcat log4j json output
#
<source>
type tail
path /home/foo/logs/catalina-json.out
pos_file /home/foo/logs/fluentd.pos
tag cleanup.tomcat
format json
time_key @timestamp
time_format "%Y-%m-%dT%H:%M:%S.%L%Z"
</source>
<match cleanup.**>
type record_reformer
time_nano ${t = Time.now; ((t.to_i * 1000000000) + t.nsec).to_s}
tag ${tag_suffix[1]}
</match>
然后将 time_nano 字段添加到您的 kibana 仪表板并使用它代替 @timestamp 进行排序,一切都会井井有条。