2017-12-12 3 views
0

私は多くのアプリケーションを持っていますが、それぞれに独自のログがあります。私は通常、分散ログに問題があります。効率的な分散シーケンス

は、私が使用しているこの問題の解決には:

  • ブレイブ/春スルース一元化し、私のログで検索する
  • 弾性/ Logstash/KibanaトレースおよびスパンIDを生成するために

このようにして、すべてのアプリケーションログを(タイムスタンプで)書かれた順に見ることができます。 しかし、事実はログに書き込まれたタイムスタンプを信じることができません。すべてのサーバーの時計は同期していません。

だから、すべてのログを並べ替えるのに役立つものが必要です。

私は、各スパンで数を生成する時に考えた:

この順でログを注文します何かを期待
app1 : sequenceId = {} 
    app2 : sequenceId = {} 
    app3 : sequenceId = {} 
      app4 : sequenceId = {} 
app5 : sequenceId = {} 
    app6 : sequenceId = {} 
    app7 : sequenceId = {} 
      app8 : sequenceId = {} 

: APP1、APP2、APP3、APP4、APP5、APP6、app7 、app8

誰かがこの問題を解決する技術を知っていますか?

答えて

1

Sleuth(https://github.com/spring-cloud/spring-cloud-sleuth/issues/275)に問題があります。最も簡単なのは、ログ内に各子スパンごとに増加するタグ/エントリを追加することです。 Sleuthの内部を再利用して、DefaultTracer'sの動作を上書きして、子スパン作成時に追加のタグを追加することができます。その後、Slf4jLoggerでは、そのタグを再利用してMDCコンテキストの追加要素を設定します。

+0

ありがとうございます。はい、私は既に他のニーズのために追加タグを渡しています(user-auth-idなど)。しかし、app2とapp6は異なる値を持つ必要があり、app5> app2などが必要です。私は一貫性を保証する方法を見つけるのが難しいです(数字のリストを生成する以外に、それぞれのスパンで成長します)。 – Akah

+0

それは私たちの最初のアプローチでしたが、私たちはそれに多くの考えを与えませんでした –

関連する問題