OpenTelemrationトレーシング—実装前に知っておくべきこと😎

11866 ワード

分散システムのための可観測性とロバスト監視の設定は困難な課題である.エンジニアリングチームは、彼らのアプリケーションで起こっていることを理解するために、異なる情報にアクセスする必要があります.OpenTelemrationは分散追跡のための正しい方向のステップか?見つけましょう.
何もあなたのシステムが生産に振る舞うことを保証できません.物事はうまくいかないでしょう、そして、トラブルシューティングを必要とするどんな徴候のためにでもあなたのアプリケーションをモニターすることは重要です.ロバストな監視および可観測性フレームワークは遠隔測定データを必要とする—ログ,メトリックおよびトレース

OpenTelemrationはテレメトリデータの作成と管理を標準化することを目的としている.これは、任意のアプリケーションのアーキテクチャ内で収まることができますし、オーバーヘッドに少しテレメトリデータを生成します.
OpenentElementArchitecture -クライアントライブラリのインストーラアプリケーションコードは、その後、バックエンド解析ツールにデータをエクスポートするコレクタエージェントにテレメトリデータを送信します.

分散追跡はなぜ必要か?
MicroServiceアーキテクチャでは、しばしばエンジニアリングチームが1つのサービスに対して責任があります.ログとメトリクスを関連付けることは、多くの手動努力に挑戦しています.
それは分散追跡が画像に入っているところです.ユーザー要求はスパンに分割されます.

What are spans?

Spans represent a single operation within a trace.
It represents work done by a single service which can be broken down further depending on the use case.


リクエストがサービス間で移動するときにトレースコンテキストが渡され、サービス間でユーザーリクエストを追跡します.ユーザーリクエストがサービス全体でどのように実行され、どのように正確に複数のダッシュボードを手動でシフトすることなく注意を必要とするかを確認できます.
ユーザー要求があるサービスから別のサービスに渡されるときにトレースコンテキストが渡されます
OpentElemrationを使用すると、スパンで情報のいくつかの部分をカプセル化できます.一般的な情報には、オペレーションの名前、開始時刻、終了時刻のタイムスタンプ、スパンの間に発生するイベントが含まれます.また、必要に応じてより多くの洞察を有効にするキー/値のペアでカスタム属性を追加することができます.
下の写真では、選択されたスパンの詳細を見ることができます.畝SigNoz は、分析ツールとして使用することができますOpenTelemMetricに基づいて軽量オープンソースのAPMツールです.
SignozはOpenPelemrationに基づいて軽量APMツールです.これは、トレースやメトリックのボックスの可視化を提供します.
ユーザ要求がサービスのうちの1つの操作を終えて、もう一方に移動するとき、あらゆる要求に対してユニークなトレースIDが流れます.この方法では、簡単に全体のアーキテクチャ全体であなたの要求に関する情報を関連付けることができます.

OpenTelemrationは何ですか?
OpenTelemMetricは、API、SDK、ライブラリ、およびテレメトリデータ(ログ、メトリック、およびトレース)の生成、収集、および管理を標準化することを目的とした一連のAPIです.OpenTelemstryはOpenPensusの合併後に作成されたクラウドネイティブコンピューティング財団プロジェクトであり、OpenTracking(UTCから)です.

オプトメントメトリーについて知っている5つのもの
OpentElementと分散トレースの両方について少し理解しているので、OpenTelemrationトレースについて知っておくべきことのリストを見てみましょう.
  • 主要なクラウドベンダーに支えられている
    OpenTelemstryは、クラウドとネイティブのコンピューティング基盤の下でオープンソースプロジェクトです.このように、それは広いコミュニティサポートだけでなく、ほとんどのAPMと観測能力ベンダーによるサポートしています.
  • 遠隔測定データのためのオーバヘッドの低減
    OpenTelemRemoteは、テレメトリデータを作成し、管理するアプリケーションからのオーバーヘッドを低減します.OpentElementは、対話するAPIを提供するようにあなたのアプリケーションはOpenTelemration実装から分離されます.テレメトリは、複数のデータ形式でデータを受信し、処理し、エクスポートすることができるOtelコレクターによって収集されます.
  • OpenTelemration追跡APIは安定です
    OpenTelemrationはJavaで安定したトレースAPIリリースを持っています.NET、JavaScript、Python、およびErlang.
  • ベンダー不可知データ形式
    OpenTelemMetricは、複数の形式でトレースデータを受信するために使用できるOtelコレクタを提供します.また、あなたの必須の形式で集められたデータを輸出するのを選ぶことができるプロセッサと輸出業者を、Otel Collectorは提供します.
  • 簡単なセットアップと実装
    OpenTementRenderingライブラリはトレースの既定のサポートが付属しています.あなただけの設定ファイルを介してOpentElementalコレクターを設定する必要がある形式でトレースデータを収集する必要があります.

  • OpenTelemration追跡の実行に関与するステップ
    OpenTelemMetricは、複数の言語で自動計装ライブラリを提供します.自動計器を使用すると、コードを変更せずに追跡を開始することができます.
    例えばOpenTelemetry Java JAR agent 人気のライブラリとフレームワークの数を検出することができますし、テレメトリデータを生成するための箱の右からそれを計器.
    また、手動でコードを手動でより特定のコンテキストを持つことができます.OpenTelemration APIを使用したコードのトレースに関連する手順を見てみましょう.

  • ゲットするTracer
    第一歩は、Aを得ることですTracer . The Tracer スパンの作成に責任があります.
  •    Tracer tracer =
        openTelemetry.getTracer("instrumentation-library-name", "1.0.0");
    

  • スパンを作る
    スパンを作るのは、命名するだけです.開始時刻と終了時刻はOpenTelemration SDKによって管理されます.
  •    Span span = tracer.spanBuilder("my span").startSpan();
       // put the span into the current Context
       try (Scope scope = span.makeCurrent()) {
        // your use case
        ...
       } catch (Throwable t) {
        span.setStatus(StatusCode.ERROR, "Change it to your error message");
       } finally {
        span.end(); // closing the scope does not end the span, this has to be done manually
       }
    

  • ネストネストの作成
    あなたが期間またはカスタム属性のようなものを測定したいかもしれないサービスの中に、複数の論理演算があるかもしれません.OpenTelemMetricプロセス内のトレースをサポートします.方法の例A 呼び出し方法B スパンが手動でリンクされている場合:
  •    void parentOne() {
       Span parentSpan = tracer.spanBuilder("parent").startSpan();
       try {
        childOne(parentSpan);
       } finally {
        parentSpan.end();
         }
       }
    
       void childOne(Span parentSpan) {
       Span childSpan = tracer.spanBuilder("child")
            .setParent(Context.current().with(parentSpan))
            .startSpan();
       // do stuff
       childSpan.end();
       }
    

  • スパン属性の追加
    OpentElementalを使用すると、追加のコンテキストを取得するためにスパンに属性を追加することができます.属性は、それが追跡する特定の操作に関する追加文脈を提供します.
  •    Span span = tracer.spanBuilder("/resource/path").setSpanKind(SpanKind.CLIENT).startSpan();
       span.setAttribute("http.method", "GET");
       span.setAttribute("http.url", url.toString());
    

  • 文脈伝播
    OpenTelemrationコンテキストの伝播に基づいてW3C Trace Context HTTPヘッダ.W 3 Cトレースコンテキスト仕様は、標準のHTTPヘッダーを分散追跡を可能にするコンテキスト情報を伝播するように定義します.

  • どのようにOpenTelemration追跡を開始するには?
    OpenTelemrationは、そのマルチ言語のサポートと使いやすさのためにアプリケーションコードを計装するための世界標準になっている.しかし、OpenTelemMetricは、テレメトリデータを生成し、収集するだけです.あなたのチームは、クエリを格納することができますし、収集したデータを可視化するようにバックエンド解析ツールにテレメトリデータをエクスポートする必要があります.
    そしてそれはどこSigNoz 写真にはノーが入る.Signozは楽器アプリケーションコードにopentelemmetryをネイティブに使用します.OpenTelemrationコレクタは、Signozバックエンドにデータを送信します.ユーザーは、テレメーターデータとしてClickhouseまたはKafka + Druidのどちらかを選択するオプションがあります.
    Signozは、赤いメトリックのようなものの箱の可視化で来ます.プロメテウスとは異なり、簡単に問題の根本的な原因をあなたのアプリケーションの遅延のような原因を特定することができますメトリックとトレースの統一UIがあります.
    アプリケーションのレイテンシー、リクエストあたりのリクエスト、エラーパーセンテージ、トップエンドポイントを参照してください
    あなたはここでSignozのgithubレポをチェックアウトすることができます👇