Fluent-Plugin-Concatプラグインを使用すると、上記の問題を解決するのに役立ちました。流暢-confの中
2017-09-21T15:03:27Z tag {"container_id":"11b0d89723b9c812be65233adbc51a71507bee04e494134258b7af13f089087f","container_name":"/bel_osc.1.bc1k2z6lke1d7djeq5s28xjyl","source":"stdout","log":"2017-09-21 15:03:27.289 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.6"}
2017-09-21T15:03:28Z tag {"container_id":"11b0d89723b9c812be65233adbc51a71507bee04e494134258b7af13f089087f","container_name":"/bel_osc.1.bc1k2z6lke1d7djeq5s28xjyl","source":"stdout","log":"2017-09-21 15:03:28.191 INFO 1 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext"}
以下の私の正規表現は、各行がで始まり、日付とタイムスタンプログにDateTimeStampをチェックして
<filter **>
@type concat
key log
stream_identity_key container_id
multiline_start_regexp /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}
multiline_end_regexp /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}
</filter>
を("log":"2017-09-21 15:03:27.289
に注意を払う)これらの行を追加
また、以下の行をDockerfileに追加してプラグインをインストールする必要がありました。
例外が発生した場合でもこの正規表現はうまく動作しませんが、これまでよりもはるかに優れています。 Fluentd Link, for reference。
私はいくつかのさらなる研究を行った後、このトピックに関するいくつかのコメントを追加するだけです。 Out of Orderの問題は、Fluentdの時間分解能によるものです(現在、サブ秒のサポートはありません)。この返答[リンク](http://stackoverflow.com/questions/27928479/fluentd-loses-milliseconds-and-now-log-messages-are-stored-out-of-order-in-elast)のおかげで、私はレコードを順番に表示することができ、少なくともこのユーザーがこのログを読むと混乱することはありません。 –
milisecondの問題を解決する別の方法については、このブログ記事を参照してください。http://work.haufegroup.io/log-aggregation/#timestamp-fix – dutzu
解決策はありますか? fluentdに送信する前にこのリンクhttps://www.fluentd.org/guides/recipes/docker-loggingをdockerにマージすることについて知っていましたが、実装はログフォーマットに特有です。 – Nextlink