OTEP-0007: APIから帯域外テレメトリーをレポートする機能を削除する #
TL;DR #
この節では、このRFCで提案されているすべての変更点を要約します。
- 帯域外テレメトリーを報告するためのAPI要件を削除します。
- ResourceをSDKに移動します。APIは常に現在のアプリケーションのテレメトリーをレポートするので、計装でResourceを設定する必要はありません。
- 新しい API はこの要件なしで設計されるべきです。
動機 #
現在、APIパッケージは帯域外テレメトリーのレポートをサポートすることを目標に設計されていますが、この要件は多くのトレードオフと不必要な複雑なAPIを強います(たとえば、テレメトリーをテレメトリーのソースと関連付けることを可能にするために、APIパッケージで Resource
を公開しなければならない)。
帯域外テレメトリーの報告は、OpenTelemetryエコシステムには必須ですが、これはAPIパッケージを使用する必要のない、いくつかの他のオプションで行うことができます。
- OpenTelemetryサービスを使えば、OpenTelemetryデータを解析して生成するシンプルなレシーバーを書くことができます。
- SDK のエクスポーターフレームワークを使えば、ユーザーは OpenTelemetryデータを直接書くことができます。
内部の詳細 #
以下は、帯域外レポートのサポートに関する決定事項とトレードオフのリストです。
-
APIに
Resource
の概念を追加します。- メトリクスを作成する例で、ユーザーがリソースを指定できるようにする必要があります。ここを参照してください。 計装を書く開発者は、監視対象のリソースがどこに配置されているか知らないので、適切なリソースを設定する方法がありません。
-
RFCは SpanData を報告するサポートを削除しました。
- これは、トレースAPIがAPI経由で設定可能なすべてのフィールドをサポートしなければならないことを要求します。
たとえば、帯域外レポートをサポートしない場合、ユーザーが事前に生成した
SpanId
を設定できるようにする必要があります。
- これは、トレースAPIがAPI経由で設定可能なすべてのフィールドをサポートしなければならないことを要求します。
たとえば、帯域外レポートをサポートしない場合、ユーザーが事前に生成した
-
帯域外スパンのサンプリングロジックは非常に複雑になります。
-
テレメトリーのソースとテレメトリーデータの関連付けは非常に簡単になります。 API実装の1つのインスタンスによって生成されたすべてのデータは、ただ1つのアプリケーションに属します。
これは、「1つのAPI実装インスタンス」が、現在のアプリケーションのみに関するテレメトリーをレポートできると言い換えることができます。
リソース(Resource
)の変更
#
このRFCは Resource
の概念を削除したり、このインターフェースのAPIを変更することを提案しているのではなく、この概念をSDKレベルに移動することを提案しているだけです。
API(OpenTelemetryの場合はSDK)の各インスタンスは、実行中のアプリケーションを記述する1つの Resource
を持ちます。
同じバイナリ内で複数のアプリケーションが動作している場合(Java アプリケーションサーバーなど)、それぞれのアプリケーションは独自の Resource
で構成された SDK インスタンスを持つことになります。