テクノロジー ネットワーキング 非公開: OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

テレメトリ データを収集するベンダー中立の標準方法である OpenTelemetry について説明しましょう。

アプリケーションのテレメトリ データをキャプチャする必要があるため、アプリケーションに優れた可観測性を提供することは、開発者にとって大きな課題です。ケンブリッジ辞書は、テレメトリーを、遠く離れた物体に関する情報を収集し、その情報を電子的にどこかに送信する科学またはプロセスと定義しています。

たとえば、ユーザーが Web サイト上でシングルクリックまたはセッションを行うと、ネットワーク、マイクロサービス、データベースなどの間を流れる大量のリクエストとトレースが生成されます。

OpenTelemetry は可観測性プラットフォームであり、組み合わせて使用​​することも、個別に使用することもできる、十分に要素化されたコンポーネントのセットです。さらに、今日私たち全員が使用しているフレームワークやライブラリの開発者は、テレメトリ データをこれらのライブラリやフレームワークに組み込む標準的な方法を備えており、エンドユーザーはこれらのフレームワークが内部で何を行っているかについて、すぐに使用できる多くの洞察を得ることができます。 。

OpenTelemetry を理解するには、まず分散トレーシングとは何かを知る必要があります。

OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

分散トレーシングとは何ですか?

アプリケーションがより複雑になり、ユーザー トラフィックの処理やトランザクションの完了に関与するサービスが増えるにつれて、リクエストがどのようにサービスを通過するか、また各サービスが全体的なレイテンシーにどのように寄与するかを理解することがますます重要になります。これが分散トレースの機能です。ユーザーリクエストのレイテンシと、パス内の各マイクロサービスが応答を返すまでにかかる時間をキャプチャします。

ユーザー リクエストが受信されると、トレース、つまりシステムがユーザー リクエストにどのように応答するかを説明する合計情報を作成する必要があります。トレースはスパンで構成され、各スパンは、ユーザー要求の処理に関与する特定の要求と応答のペアを表します。親スパンは、エンドユーザーが観察する遅延を表します。また、子スパンは、分散システム内の特定のサービスがどのように呼び出され、遅延情報で応答されたかを理解するために使用されます。

OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

オープンテレメトリーとは何ですか?

OpenTelemetry は、CNCF がホストするオープンソース プロジェクトで、テレメトリ データを生成する標準的な方法を提供します。これは、トレース データを生成するための標準である OpenTracing と、メトリクス データを生成するための標準である OpenCensus の合併によって作成されました。

OpenTelemetry は、アプリケーションから分散トレースとメトリクスをキャプチャするための API、エージェント、コレクター サービス、およびライブラリの単一セットを提供します。 OpenTelemetry は、テレメトリ データを収集し、それを選択したバックエンドに送信する方法を標準化します。これにより、インストルメンテーションへのベンダー中立のパスが提供され、コードを再度インストルメントすることなくバックエンドを変更できる柔軟性が得られます。

そのため、ベンダーに依存しないエージェントを使用してアプリケーションを計測しながら、メトリクスとトレースを Datadog などの SaaS ベンダーに送信できます。その後、ベンダーを切り替えたい場合 (たとえば、Datadog から Dynatrace へ)、アプリケーション コードを変更せずに行うことができます。

OpenTelemetry プロジェクトは、アプリケーションからメトリクスと分散トレースをキャプチャするための API ライブラリとエージェントの単一セットを提供することを目的としています。これは多くの言語とプラットフォームに当てはまります。 OpenTelemetry プロジェクトにはオプションのコレクター サービスも含まれており、仕様専用のリポジトリがあります。明確にしておきますが、OpenTelemetry は監視可能なバックエンドである Jaeger や Prometheus ではありません。ただし、オープンソースや商用バックエンドにデータをエクスポートする場合には役立ちます。

OpenTelemetry が提供する機能は次のとおりです。

  • 組織が追跡できるテレメトリ データの収集に関する標準化により、ベンダー間の移動が容易になります。
  • データ収集プロセスのためのベンダーに依存しないオープンスタンダードの意味規則
  • エージェントまたはゲートウェイとして、あるいはさまざまな方法で導入できるコレクター
  • 移行のための複数のコンテキスト伝播形式をサポート
  • テレメトリ データを生成、送信、収集、処理、エクスポートするためのエンドツーエンドのソリューション
  • データを完全に制御しながらさまざまな宛先に並行してデータを送信する機能
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

OpenTelemetry コンポーネント

以下は OpenTelemetry のコア コンポーネントです。

  • Proto: このコンポーネントは、OpenTelemetry の言語に依存しないインターフェイス タイプであるコレクター、インスツルメンテーション ライブラリなどを定義するために使用されます。
  • コレクター: コレクターは、テレメトリ データの受信、処理、エクスポートに使用されます。このコレクターの実装はベンダーに依存しない必要があります。デフォルトでは、すべてのテレメトリ データは、計測ライブラリによってこの場所にエクスポートされます。
  • 仕様: このコンポーネントは、API、SDK、およびデータで構成されるさまざまな言語での実装の要件と期待事項を説明します。 API は、SDK によって提供される API を実装するためのテレメトリ データ、処理、およびエクスポート機能を生成します。データには、コードを変更せずにあらゆる種類のベンダーをサポートするためのセマンティック規則があります。
  • インストルメンテーション ライブラリ: これらは、OpenTelemetry プロジェクトの一部として複数の言語で利用できます。これらのライブラリは、他のライブラリに可観測性を提供し、OpenTelemetry API を呼び出すことですべてのアプリケーションを監視できるようにするために使用されます。
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

OpenTelemetry アーキテクチャ

New Relic からの画像
opentelemetry アーキテクチャ -
opentelemetry アーキテクチャ –

大まかに言うと、OpenTelemetry は 3 つの主要部分で構成されます。

  • アプリケーション、ライブラリ、およびフレームワークを計測するための API のセット。
  • SDK は API を実装します。
  • オプションのコレクターは、必要に応じてテレメトリ データを取り込み、集計し、エクスポートできます。

API の目的は、ライブラリとアプリケーション コードのインストルメンテーションの作成を可能にすることです。 API には、トレース、メーター、共有コンテキスト、セマンティック規約という 4 つの主要セクションがあります。

  • Tracer API は、スパンの作成、注釈付け、および完了をサポートします。
  • メーター API は複数の計量機器で構成されます。これらの機器の例としては、オブザーバー、値レコーダー、カウンターなどがあります。
  • コンテキスト API を有効にすることでスパン コンテキストを追跡および実行し、そのコンテキストをシステム内外の両方に伝播できます。
  • スパン、属性、ラベル、計量計器の命名など、主に命名に関するすべてのガイドラインとルールは、セマンティック規約に含まれています。これらの規則は、さまざまな言語実装間および外部計測の一貫性を確保するために実装されています。

共有コンテキストでは、コンテキスト実装はトレーサーとメーターの間にあり、すべての非オブザーバー メトリック記録が実行スパンのコンテキストで発生できるようにします。 SDK がメトリック値のサンプル スパンをキャプチャできるようにする機能。プロパゲータを使用してコンテキストをカスタマイズできます。プロパゲータを使用すると、システムの内外にスパン コンテキストを伝播できるようになり、真の分散トレースが可能になります。

コレクターは OpenTelemetry アーキテクチャの重要な部分です。これは、OpenCensus、Zipkin、Jaeger、OpenTelemetry プロトコルなどのさまざまなソースからテレメトリ データを受信、処理、エクスポートできるスタンドアロン サービスです。コレクターを使用すると、スパンとメトリックを複数のベンダーやオープンソース テレメトリ システムにエクスポートできます。

OpenTelemetry アーキテクチャは、すぐに使用できる完全なテレメトリ ソリューションを提供します。必要に応じて複数の拡張ポイントを使用してカスタマイズすることもできます。

OpenTelemetry はどのように機能するのでしょうか?

デプロイメント内のすべてのサービス内に、OpenTelemetry クライアントをインストールします。クライアントは SDK です。 SDK には API があります。アプリケーションのフレームワークとライブラリは、このインストルメンテーション API を使用して、実行している作業を記述します。次に、SDK は収集した観測結果を、コレクターと呼ばれるデータ パイプライン サービスにエクスポートします。

OpenTelemetry には独自のデータ プロトコル OTLP がありますが、コレクターは OTLP を Zipkin Jaeger Prometheus などのさまざまな形式に変換できます。特に、OpenTelemetry は独自のバックエンドや分析ツールを提供しません。これは、OpenTelemetry の中心となる標準化の取り組みであるためです。目標は、クラウド環境でのコンピューターの動作を記述するための普遍的な言語を考え出すことです。目標は、データの分析方法を標準化することではありません。その代わりに、OpenTelemetry が、テレメトリ ソフトウェアのエコシステム全体を再構築することなく、新しい分析ツールを迅速に開始できるようにすることで、可観測性の世界を前進させるのに役立つことを期待しています。

システム全体に大量のデータを送信する場合、考慮すべきことがたくさんあります。幸いなことに、OpenTelemetry はあらゆることを検討しており、それぞれの疑問に対する解決策を持っています。何よりもまず、OpenTelemetry は柔軟性があり、複数のコンテキスト伝播形式を処理します。これは、基準があっても、その基準内で選択の選択肢が存在することを意味します。したがって、w3c トレース コンテキスト フォーマットや b3 伝播などを使用している場合、これらは標準内の異なる標準であり、サービスが点と点を結び付けることができます。

結論

OpenTelemetry はさまざまな観察結果を収集しますが、最も重要なのは分散トレース メトリクスとシステム リソースです。 OpenTelemetry は、これらを個別の信号として扱うのではなく、それらを統合し、バックエンドでこれらすべての信号を集約してクロスインデックスできるようにするインデックスとコンテキストを提供します。

データ収集に加えて、OpenTelemetry は、データ形式の変更、データの操作、および最新のシステムで堅牢なテレメトリ パイプラインを構築するために必要なすべてのツールを可能にするデータ処理およびパイプライン機能を提供します。

以上、OpenTelemetry についての説明でした。このツールを試してみてください。

「 OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか」についてわかりやすく解説!絶対に観るべきベスト2動画

OpenTelemetry Pluginでトレースを分析し性能をテストしよう
https://www.youtube.com/watch?v=xSaQKrgkHus&pp=ygVyIE9wZW5UZWxlbWV0cnkg44Go44Gv5L2V44GL44CB44Ki44OX44Oq44Kx44O844K344On44Oz44Gr5a6f55So55qE44Gq5rSe5a-f44KS44Gp44Gu44KI44GG44Gr5o-Q5L6b44GZ44KL44GLJmhsPUpB
第二十三回 ちょっぴりDD – OpenTelemetry で始める Observability

テレメトリ データを収集するベンダー中立の標準方法である OpenTelemetry について説明しましょう。

アプリケーションのテレメトリ データをキャプチャする必要があるため、アプリケーションに優れた可観測性を提供することは、開発者にとって大きな課題です。ケンブリッジ辞書は、テレメトリーを、遠く離れた物体に関する情報を収集し、その情報を電子的にどこかに送信する科学またはプロセスと定義しています。

たとえば、ユーザーが Web サイト上でシングルクリックまたはセッションを行うと、ネットワーク、マイクロサービス、データベースなどの間を流れる大量のリクエストとトレースが生成されます。

OpenTelemetry は可観測性プラットフォームであり、組み合わせて使用​​することも、個別に使用することもできる、十分に要素化されたコンポーネントのセットです。さらに、今日私たち全員が使用しているフレームワークやライブラリの開発者は、テレメトリ データをこれらのライブラリやフレームワークに組み込む標準的な方法を備えており、エンドユーザーはこれらのフレームワークが内部で何を行っているかについて、すぐに使用できる多くの洞察を得ることができます。 。

OpenTelemetry を理解するには、まず分散トレーシングとは何かを知る必要があります。

OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

分散トレーシングとは何ですか?

アプリケーションがより複雑になり、ユーザー トラフィックの処理やトランザクションの完了に関与するサービスが増えるにつれて、リクエストがどのようにサービスを通過するか、また各サービスが全体的なレイテンシーにどのように寄与するかを理解することがますます重要になります。これが分散トレースの機能です。ユーザーリクエストのレイテンシと、パス内の各マイクロサービスが応答を返すまでにかかる時間をキャプチャします。

ユーザー リクエストが受信されると、トレース、つまりシステムがユーザー リクエストにどのように応答するかを説明する合計情報を作成する必要があります。トレースはスパンで構成され、各スパンは、ユーザー要求の処理に関与する特定の要求と応答のペアを表します。親スパンは、エンドユーザーが観察する遅延を表します。また、子スパンは、分散システム内の特定のサービスがどのように呼び出され、遅延情報で応答されたかを理解するために使用されます。

OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

オープンテレメトリーとは何ですか?

OpenTelemetry は、CNCF がホストするオープンソース プロジェクトで、テレメトリ データを生成する標準的な方法を提供します。これは、トレース データを生成するための標準である OpenTracing と、メトリクス データを生成するための標準である OpenCensus の合併によって作成されました。

OpenTelemetry は、アプリケーションから分散トレースとメトリクスをキャプチャするための API、エージェント、コレクター サービス、およびライブラリの単一セットを提供します。 OpenTelemetry は、テレメトリ データを収集し、それを選択したバックエンドに送信する方法を標準化します。これにより、インストルメンテーションへのベンダー中立のパスが提供され、コードを再度インストルメントすることなくバックエンドを変更できる柔軟性が得られます。

そのため、ベンダーに依存しないエージェントを使用してアプリケーションを計測しながら、メトリクスとトレースを Datadog などの SaaS ベンダーに送信できます。その後、ベンダーを切り替えたい場合 (たとえば、Datadog から Dynatrace へ)、アプリケーション コードを変更せずに行うことができます。

OpenTelemetry プロジェクトは、アプリケーションからメトリクスと分散トレースをキャプチャするための API ライブラリとエージェントの単一セットを提供することを目的としています。これは多くの言語とプラットフォームに当てはまります。 OpenTelemetry プロジェクトにはオプションのコレクター サービスも含まれており、仕様専用のリポジトリがあります。明確にしておきますが、OpenTelemetry は監視可能なバックエンドである Jaeger や Prometheus ではありません。ただし、オープンソースや商用バックエンドにデータをエクスポートする場合には役立ちます。

OpenTelemetry が提供する機能は次のとおりです。

  • 組織が追跡できるテレメトリ データの収集に関する標準化により、ベンダー間の移動が容易になります。
  • データ収集プロセスのためのベンダーに依存しないオープンスタンダードの意味規則
  • エージェントまたはゲートウェイとして、あるいはさまざまな方法で導入できるコレクター
  • 移行のための複数のコンテキスト伝播形式をサポート
  • テレメトリ データを生成、送信、収集、処理、エクスポートするためのエンドツーエンドのソリューション
  • データを完全に制御しながらさまざまな宛先に並行してデータを送信する機能
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

OpenTelemetry コンポーネント

以下は OpenTelemetry のコア コンポーネントです。

  • Proto: このコンポーネントは、OpenTelemetry の言語に依存しないインターフェイス タイプであるコレクター、インスツルメンテーション ライブラリなどを定義するために使用されます。
  • コレクター: コレクターは、テレメトリ データの受信、処理、エクスポートに使用されます。このコレクターの実装はベンダーに依存しない必要があります。デフォルトでは、すべてのテレメトリ データは、計測ライブラリによってこの場所にエクスポートされます。
  • 仕様: このコンポーネントは、API、SDK、およびデータで構成されるさまざまな言語での実装の要件と期待事項を説明します。 API は、SDK によって提供される API を実装するためのテレメトリ データ、処理、およびエクスポート機能を生成します。データには、コードを変更せずにあらゆる種類のベンダーをサポートするためのセマンティック規則があります。
  • インストルメンテーション ライブラリ: これらは、OpenTelemetry プロジェクトの一部として複数の言語で利用できます。これらのライブラリは、他のライブラリに可観測性を提供し、OpenTelemetry API を呼び出すことですべてのアプリケーションを監視できるようにするために使用されます。
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか
OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか

OpenTelemetry アーキテクチャ

New Relic からの画像
opentelemetry アーキテクチャ -
opentelemetry アーキテクチャ –

大まかに言うと、OpenTelemetry は 3 つの主要部分で構成されます。

  • アプリケーション、ライブラリ、およびフレームワークを計測するための API のセット。
  • SDK は API を実装します。
  • オプションのコレクターは、必要に応じてテレメトリ データを取り込み、集計し、エクスポートできます。

API の目的は、ライブラリとアプリケーション コードのインストルメンテーションの作成を可能にすることです。 API には、トレース、メーター、共有コンテキスト、セマンティック規約という 4 つの主要セクションがあります。

  • Tracer API は、スパンの作成、注釈付け、および完了をサポートします。
  • メーター API は複数の計量機器で構成されます。これらの機器の例としては、オブザーバー、値レコーダー、カウンターなどがあります。
  • コンテキスト API を有効にすることでスパン コンテキストを追跡および実行し、そのコンテキストをシステム内外の両方に伝播できます。
  • スパン、属性、ラベル、計量計器の命名など、主に命名に関するすべてのガイドラインとルールは、セマンティック規約に含まれています。これらの規則は、さまざまな言語実装間および外部計測の一貫性を確保するために実装されています。

共有コンテキストでは、コンテキスト実装はトレーサーとメーターの間にあり、すべての非オブザーバー メトリック記録が実行スパンのコンテキストで発生できるようにします。 SDK がメトリック値のサンプル スパンをキャプチャできるようにする機能。プロパゲータを使用してコンテキストをカスタマイズできます。プロパゲータを使用すると、システムの内外にスパン コンテキストを伝播できるようになり、真の分散トレースが可能になります。

コレクターは OpenTelemetry アーキテクチャの重要な部分です。これは、OpenCensus、Zipkin、Jaeger、OpenTelemetry プロトコルなどのさまざまなソースからテレメトリ データを受信、処理、エクスポートできるスタンドアロン サービスです。コレクターを使用すると、スパンとメトリックを複数のベンダーやオープンソース テレメトリ システムにエクスポートできます。

OpenTelemetry アーキテクチャは、すぐに使用できる完全なテレメトリ ソリューションを提供します。必要に応じて複数の拡張ポイントを使用してカスタマイズすることもできます。

OpenTelemetry はどのように機能するのでしょうか?

デプロイメント内のすべてのサービス内に、OpenTelemetry クライアントをインストールします。クライアントは SDK です。 SDK には API があります。アプリケーションのフレームワークとライブラリは、このインストルメンテーション API を使用して、実行している作業を記述します。次に、SDK は収集した観測結果を、コレクターと呼ばれるデータ パイプライン サービスにエクスポートします。

OpenTelemetry には独自のデータ プロトコル OTLP がありますが、コレクターは OTLP を Zipkin Jaeger Prometheus などのさまざまな形式に変換できます。特に、OpenTelemetry は独自のバックエンドや分析ツールを提供しません。これは、OpenTelemetry の中心となる標準化の取り組みであるためです。目標は、クラウド環境でのコンピューターの動作を記述するための普遍的な言語を考え出すことです。目標は、データの分析方法を標準化することではありません。その代わりに、OpenTelemetry が、テレメトリ ソフトウェアのエコシステム全体を再構築することなく、新しい分析ツールを迅速に開始できるようにすることで、可観測性の世界を前進させるのに役立つことを期待しています。

システム全体に大量のデータを送信する場合、考慮すべきことがたくさんあります。幸いなことに、OpenTelemetry はあらゆることを検討しており、それぞれの疑問に対する解決策を持っています。何よりもまず、OpenTelemetry は柔軟性があり、複数のコンテキスト伝播形式を処理します。これは、基準があっても、その基準内で選択の選択肢が存在することを意味します。したがって、w3c トレース コンテキスト フォーマットや b3 伝播などを使用している場合、これらは標準内の異なる標準であり、サービスが点と点を結び付けることができます。

結論

OpenTelemetry はさまざまな観察結果を収集しますが、最も重要なのは分散トレース メトリクスとシステム リソースです。 OpenTelemetry は、これらを個別の信号として扱うのではなく、それらを統合し、バックエンドでこれらすべての信号を集約してクロスインデックスできるようにするインデックスとコンテキストを提供します。

データ収集に加えて、OpenTelemetry は、データ形式の変更、データの操作、および最新のシステムで堅牢なテレメトリ パイプラインを構築するために必要なすべてのツールを可能にするデータ処理およびパイプライン機能を提供します。

以上、OpenTelemetry についての説明でした。このツールを試してみてください。

「 OpenTelemetry とは何か、アプリケーションに実用的な洞察をどのように提供するか」についてわかりやすく解説!絶対に観るべきベスト2動画

OpenTelemetry Pluginでトレースを分析し性能をテストしよう
https://www.youtube.com/watch?v=xSaQKrgkHus&pp=ygVyIE9wZW5UZWxlbWV0cnkg44Go44Gv5L2V44GL44CB44Ki44OX44Oq44Kx44O844K344On44Oz44Gr5a6f55So55qE44Gq5rSe5a-f44KS44Gp44Gu44KI44GG44Gr5o-Q5L6b44GZ44KL44GLJmhsPUpB
第二十三回 ちょっぴりDD – OpenTelemetry で始める Observability