OTEP-0007: APIから帯域外テレメトリーをレポートする機能を削除する

OTEP-0007: APIから帯域外テレメトリーをレポートする機能を削除する #

TL;DR #

この節では、このRFCで提案されているすべての変更点を要約します。

  1. 帯域外テレメトリーを報告するためのAPI要件を削除します。
  2. ResourceをSDKに移動します。APIは常に現在のアプリケーションのテレメトリーをレポートするので、計装でResourceを設定する必要はありません。
  3. 新しい API はこの要件なしで設計されるべきです。

動機 #

現在、APIパッケージは帯域外テレメトリーのレポートをサポートすることを目標に設計されていますが、この要件は多くのトレードオフと不必要な複雑なAPIを強います(たとえば、テレメトリーをテレメトリーのソースと関連付けることを可能にするために、APIパッケージで Resource を公開しなければならない)。

帯域外テレメトリーの報告は、OpenTelemetryエコシステムには必須ですが、これはAPIパッケージを使用する必要のない、いくつかの他のオプションで行うことができます。

  • OpenTelemetryサービスを使えば、OpenTelemetryデータを解析して生成するシンプルなレシーバーを書くことができます。
  • SDK のエクスポーターフレームワークを使えば、ユーザーは OpenTelemetryデータを直接書くことができます。

内部の詳細 #

以下は、帯域外レポートのサポートに関する決定事項とトレードオフのリストです。

  1. APIに Resource の概念を追加します。

    • メトリクスを作成する例で、ユーザーがリソースを指定できるようにする必要があります。ここを参照してください。 計装を書く開発者は、監視対象のリソースがどこに配置されているか知らないので、適切なリソースを設定する方法がありません。
  2. RFCは SpanData を報告するサポートを削除しました。

    • これは、トレースAPIがAPI経由で設定可能なすべてのフィールドをサポートしなければならないことを要求します。 たとえば、帯域外レポートをサポートしない場合、ユーザーが事前に生成した SpanId を設定できるようにする必要があります。
  3. 帯域外スパンのサンプリングロジックは非常に複雑になります。

  4. テレメトリーのソースとテレメトリーデータの関連付けは非常に簡単になります。 API実装の1つのインスタンスによって生成されたすべてのデータは、ただ1つのアプリケーションに属します。

これは、「1つのAPI実装インスタンス」が、現在のアプリケーションのみに関するテレメトリーをレポートできると言い換えることができます。

リソース(Resource)の変更 #

このRFCは Resource の概念を削除したり、このインターフェースのAPIを変更することを提案しているのではなく、この概念をSDKレベルに移動することを提案しているだけです。

API(OpenTelemetryの場合はSDK)の各インスタンスは、実行中のアプリケーションを記述する1つの Resource を持ちます。 同じバイナリ内で複数のアプリケーションが動作している場合(Java アプリケーションサーバーなど)、それぞれのアプリケーションは独自の Resource で構成された SDK インスタンスを持つことになります。

関連する問題 #