fluentd を使用して、elasticsearch でログ メッセージを一元化し、kibana で表示しています。ログ メッセージを表示すると、同じ秒内に発生したメッセージの順序が正しくなく、@timestamp のミリ秒がすべてゼロです
2015-01-13T11:54:01.000-06:00 DEBUG my message
fluentd にミリ秒を保存させるにはどうすればよいですか?
fluentd を使用して、elasticsearch でログ メッセージを一元化し、kibana で表示しています。ログ メッセージを表示すると、同じ秒内に発生したメッセージの順序が正しくなく、@timestamp のミリ秒がすべてゼロです
2015-01-13T11:54:01.000-06:00 DEBUG my message
fluentd にミリ秒を保存させるにはどうすればよいですか?
fluentd は現在、1 秒未満の解像度をサポートしていません: 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>
次に、kibana ダッシュボードに time_nano フィールドを追加し、@timestamp の代わりにそれを使用してソートすると、すべてが整然とします。