メトリクスAPIのNo-Op実装

この記事は英語の原文を日本語に翻訳したものです。原文: https://opentelemetry.io/docs/specs/otel/metrics/noop/

翻訳元: open-telemetry/opentelemetry-specification v1.60.0(コミット 29ae8c7

ステータス: Stable

OpenTelemetryの利用者には、実際にはいかなる操作も実行しないようにAPIを無効化する手段が必要です。No-Op OpenTelemetry API実装(以下No-Opと呼びます)は、この機能を利用者に提供します。No-OpはOpenTelemetry APIを実装し、テレメトリーが生成されず、計算リソースの使用が最小化されるようにします。

OpenTelemetryのすべての言語実装は、No-Opを提供しなければなりません(MUST)。

MeterProvider

No-Opは、複数のMeterProviderの作成を許可しなければなりません(MUST)。

No-Opによって作成されるMeterProviderは、メモリのフットプリントを可能な限り小さく保つ必要があります。したがって、作成されるすべてのMeterProviderは、設定や動作状態を保持してはなりません(MUST NOT)。

すべてのMeterProviderが同じ空の状態を保持するため、No-Opはすべての作成リクエストに対して同じMeterProviderのインスタンスを提供してもよい(MAY)。

No-Opは、OpenTelemetryの利用者がOpenTelemetryの計算オーバーヘッドを無効化し、OpenTelemetry関連の出力を排除するために使われます。このため、MeterProviderは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

MeterProviderが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

Meterの作成

新しいMeterインスタンスは、常にMeterProviderから作成されます。したがって、MeterProviderはMeterの作成を許可しなければなりません(MUST)。作成されるすべてのMeterは、No-Op Meterのインスタンスでなければなりません(MUST)。

すべてのMeterが同じ空の状態を保持するため、MeterProviderはすべての作成リクエストに対して同じMeterのインスタンスを返してもよい(MAY)。

このAPIは、作成操作が受け付けるべき複数のパラメータを規定しています。MeterProviderはこれらのパラメータを受け付けなければなりません(MUST)。ただし、MeterProviderは受け取った引数を検証してはなりません(MUST NOT)。

Meter

No-Opによって作成されるMeterは、メモリのフットプリントを可能な限り小さく保つ必要があります。したがって、作成されるすべてのMeterは、設定や動作状態を保持してはなりません(MUST NOT)。

Meterは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

Meterが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

Counter作成

No-Opのメーターは、Counter Instrumentの作成を許可しなければなりません(MUST)。

すべてのCounterが同じ空の状態を保持するため、Meterはすべての作成リクエストに対して同じCounterのインスタンスを返してもよい(MAY)。

このAPIは、作成操作が受け付けるべき複数のパラメータを規定しています。Meterはこれらのパラメータを受け付けなければなりません(MUST)。ただし、Meterは受け取った引数を検証してはなりません(MUST NOT)。

UpDownCounter作成

No-Opのメーターは、UpDownCounter Instrumentの作成を許可しなければなりません(MUST)。

すべてのUpDownCounterが同じ空の状態を保持するため、Meterはすべての作成リクエストに対して同じUpDownCounterのインスタンスを返してもよい(MAY)。

このAPIは、作成操作が受け付けるべき複数のパラメータを規定しています。Meterはこれらのパラメータを受け付けなければなりません(MUST)。ただし、Meterは受け取った引数を検証してはなりません(MUST NOT)。

Histogram作成

No-Opのメーターは、Histogram Instrumentの作成を許可しなければなりません(MUST)。

すべてのHistogramが同じ空の状態を保持するため、Meterはすべての作成リクエストに対して同じHistogramのインスタンスを返してもよい(MAY)。

このAPIは、作成操作が受け付けるべき複数のパラメータを規定しています。Meterはこれらのパラメータを受け付けなければなりません(MUST)。ただし、Meterは受け取った引数を検証してはなりません(MUST NOT)。

非同期Counter作成

No-Opのメーターは、非同期Counter Instrumentの作成を許可しなければなりません(MUST)。

すべての非同期Counterが同じ空の状態を保持するため、Meterはすべての作成リクエストに対して同じ非同期Counterのインスタンスを返してもよい(MAY)。

このAPIは、作成操作が受け付けるべき複数のパラメータを規定しています。Meterはこれらのパラメータを受け付けなければなりません(MUST)。ただし、Meterは受け取った引数を検証してはならず(MUST NOT)、渡されたコールバックへの参照を保持してはなりません(MUST NOT)。

非同期UpDownCounter作成

No-Opのメーターは、非同期UpDownCounter Instrumentの作成を許可しなければなりません(MUST)。

すべての非同期UpDownCounterが同じ空の状態を保持するため、Meterはすべての作成リクエストに対して同じ非同期UpDownCounterのインスタンスを返してもよい(MAY)。

このAPIは、作成操作が受け付けるべき複数のパラメータを規定しています。Meterはこれらのパラメータを受け付けなければなりません(MUST)。ただし、Meterは受け取った引数を検証してはならず(MUST NOT)、渡されたコールバックへの参照を保持してはなりません(MUST NOT)。

非同期Gauge作成

No-Opのメーターは、非同期Gauge Instrumentの作成を許可しなければなりません(MUST)。

すべての非同期Gaugeが同じ空の状態を保持するため、Meterはすべての作成リクエストに対して同じ非同期UpDownCounterのインスタンスを返してもよい(MAY)。

このAPIは、作成操作が受け付けるべき複数のパラメータを規定しています。Meterはこれらのパラメータを受け付けなければなりません(MUST)。ただし、Meterは受け取った引数を検証してはならず(MUST NOT)、渡されたコールバックへの参照を保持してはなりません(MUST NOT)。

Instruments

Instrumentは、システムに関する測定を行い、テレメトリーを報告するために使われます。しかし、No-Opはこのテレメトリーの生成を無効化するために使われます。このため、No-Opが提供するすべてのInstrumentは、テレメトリーの集約を含む設定や動作状態を保持してはなりません(MUST NOT)。

Counter

Counterは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

Counterが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

Counter Add

No-OpのCounterは、APIを実装したAddインターフェースを利用者に提供しなければなりません(MUST)。受け取った引数について、検証も状態の保持も行ってはなりません(MUST NOT)。

UpDownCounter

UpDownCounterは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

UpDownCounterが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

UpDownCounter Add

No-OpのUpDownCounterは、APIを実装したAddインターフェースを利用者に提供しなければなりません(MUST)。受け取った引数について、検証も状態の保持も行ってはなりません(MUST NOT)。

Histogram

Histogramは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

Histogramが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

Histogram Record

No-OpのHistogramは、APIを実装したRecordインターフェースを利用者に提供しなければなりません(MUST)。受け取った引数について、検証も状態の保持も行ってはなりません(MUST NOT)。

非同期Counter

非同期Counterは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

非同期Counterが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

非同期Counter Observations

No-Opの非同期Counterは、そのInstrumentのために行われた観測について、検証も状態の保持も行ってはなりません(MUST NOT)。

非同期UpDownCounter

非同期UpDownCounterは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

非同期UpDownCounterが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

非同期UpDownCounter Observations

No-Opの非同期UpDownCounterは、そのInstrumentのために行われた観測について、検証も状態の保持も行ってはなりません(MUST NOT)。

非同期Gauge

非同期Gaugeは、実行するいかなる操作についても、空でないエラーを返したりメッセージをログに記録したりしてはなりません(MUST NOT)。

非同期Gaugeが提供するすべての操作は、並行して実行しても安全でなければなりません(MUST)。

非同期Gauge Observations

No-Opの非同期Gaugeは、そのInstrumentのために行われた観測について、検証も状態の保持も行ってはなりません(MUST NOT)。

参考文献