Resourceのセマンティック規約

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

翻訳元: open-telemetry/semantic-conventions v1.44.0(コミット e10a930

Resourceのセマンティック規約

ステータス: Mixed

この文書では、リソースに対する標準的な属性を定義します。これらの属性は通常Resourceで使われますが、一貫した方法でリソースを記述する必要があるあらゆる場所でも使用が推奨されます。これらの属性の大部分は、OpenCensus Resource標準から引き継がれたものです。

TODO

  • AppEngineユニットなど、さらにいくつかのコンピュートユニットを追加する。
  • Webブラウザーを追加する。
  • 小文字の文字列のみとするかどうかを決める。
  • 属性ごと、および属性の組み合わせごとに、オプションか必須かを追加することを検討する(例えばK8sリソースを提供する場合、すべてのK8s属性が必須になるかもしれない)。

文書の規約

ステータス: Stable

属性は、それが記述する概念の種類によって論理的にグループ化されます。同じグループの属性は、末尾がドットで終わる共通のプレフィックスを持ちます。例えばKubernetesのプロパティを記述するすべての属性はk8s.で始まります。

属性をいつ含めるべきかの詳細については、属性の要求レベルを参照してください。

特別な扱いを受ける属性

ステータス: Stable

その重要性から、一部のリソース属性は以下に述べるように特別に扱われます。

専用の環境変数を持つセマンティック属性

これらは、OpenTelemetry環境変数仕様書で規定されているとおり、専用の環境変数を通じて設定できる場合がある属性です(MAY)。

SDKが提供する既定値を持つセマンティック属性

これらは、Resource SDK仕様書で規定されているとおり、SDKによって提供されなければならない属性です(MUST)。

Service

コンポーネントの論理的なグルーピング。

Telemetry SDK

Status: Stable

type: telemetry.sdk

Description: 計装ライブラリが記録したデータを取得するために使われる、テレメトリーSDK。

Attributes:

RoleKeyStabilityRequirement LevelValue TypeDescriptionExample Values
Identitytelemetry.sdk.languageStableRequiredstringテレメトリーSDKの言語。cpp; dotnet; erlang
Identitytelemetry.sdk.nameStableRequiredstring上記で定義されたテレメトリーSDKの名前。[1]opentelemetry
Descriptiontelemetry.sdk.versionStableRequiredstringテレメトリーSDKのバージョン文字列。1.2.3

[1] telemetry.sdk.name: OpenTelemetry SDKは、telemetry.sdk.name属性をopentelemetryに設定しなければなりません(MUST)。 フォークやベンダー提供の実装など、別のSDKを使う場合、そのSDKはtelemetry.sdk.name属性を、そのSDKのメインエントリーポイントの完全修飾クラス名・モジュール名、または言語によって適切な他の識別子に設定しなければなりません(MUST)。 opentelemetryという識別子は予約されており、この場合には使用してはなりません(MUST NOT)。 すべてのカスタム識別子は、実装の異なるバージョン間で安定しているべきです(SHOULD)。


telemetry.sdk.languageには、次のよく知られた値の一覧があります。いずれかが該当する場合はその値を使用しなければならず(MUST)、それ以外の場合は独自の値を使ってもかまいません(MAY)。

ValueDescriptionStability
cppC++Stable
dotnet.NETStable
erlangErlang/ElixirStable
goGoStable
javaJavaStable
kotlinKotlinStable
nodejsNode.jsStable
phpPHPStable
pythonPythonStable
rubyRubyStable
rustRustStable
swiftSwiftStable
webjsBrowserStable

Telemetry distro

Status: Stable

type: telemetry.distro

Description: 計装ライブラリが記録したデータを取得するために使われる、テレメトリーSDKのディストリビューション。

Attributes:

RoleKeyStabilityRequirement LevelValue TypeDescriptionExample Values
Identitytelemetry.distro.nameStableRecommendedstring使用している場合、自動計装エージェントまたはディストリビューションの名前。[1]parts-unlimited-java
Descriptiontelemetry.distro.versionStableRecommendedstring使用している場合、自動計装エージェントまたはディストリビューションのバージョン文字列。1.2.3

[1] telemetry.distro.name: 公式の自動計装エージェントとディストリビューションは、telemetry.distro.name属性をopentelemetry-で始まる文字列(例えばopentelemetry-java-instrumentation)に設定すべきです(SHOULD)。

コンピュートユニット

ステータス: Development

コンピュートユニット(コンテナ、Function as a Serviceなど)を定義する属性。

コンピュートインスタンス

ステータス: Development

コンピュートインスタンス(ホストなど)を定義する属性。

環境

ステータス: Development

実行環境(オペレーティングシステム、クラウド、データセンター、デプロイメントサービスなど)を定義する属性。

バージョン属性

ステータス: Stable

service.versionのようなバージョン属性は、string型の値です。これらは、アーティファクトを識別するために使われる正確なバージョンです。セマンティックバージョン(例えば1.2.3)、Gitハッシュ(例えば8ae73a)、あるいは任意のバージョン文字列(例えば0.1.2.20210101)など、そのアーティファクトのビルド時に使われたものです。

クラウドプロバイダー固有の属性

ステータス: Development

特定のクラウドプロバイダーからのリソースにのみ適用可能な属性です。現在、これらのリソースは、Cloud以下で有効なcloud.providerとして列挙されているプロバイダーに対してのみ定義できます。プロバイダー固有の属性はすべてcloud-providerディレクトリに置かれます。 有効なクラウドプロバイダーは次のとおりです。