12

docker 環境で fluentd を使用して集中ログ システムを作成しようとしています。現在、fluentd docker logging driver を使用して fluentd に docker ログを送信できます。これは、in_tail メソッドを使用して docker ログ ファイルを読み取るよりもはるかにクリーンなソリューションです。ただし、現在、複数行のログの問題に直面しています。

ここに画像の説明を入力

上の図からわかるように、複数行のログは順不同で、ユーザーにとって非常に混乱しています。これを解決する方法はありますか?

ありがとう。

CW

4

3 に答える 3

1

multilineドキュメントで解析を見てみましょう: http://docs.fluentd.org/articles/parser-plugin-overview#

基本的に、新しいログ メッセージの先頭に一致し、fluentd が複数行のログ イベントを 1 つのメッセージに集約できるようにする正規表現を指定する必要があります。

ドキュメントからの通常の Java スタックトレースの例:

format multiline format_firstline /\d{4}-\d{1,2}-\d{1,2}/ format1 /^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<message>.*)/

于 2015-11-10T12:43:43.613 に答える
0

これは、fluentd の質問に対する「答え」ではないことを知っています。しかし、このガイドはlogstashの問題を解決します: http://www.labouisse.com/how-to/2015/09/14/elk-and-docker-1-8

追加による JSON サポート

    json {
        source => "log_message"
        target => "json"
    }

ログ行を解析した後、彼のフィルターに

fluentd の解決策が見つからなかったので、代わりにこの解決策を使用しました

更新されたリンク

于 2016-02-09T09:28:37.257 に答える