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:
type: telemetry.sdk
Description: 計装ライブラリが記録したデータを取得するために使われる、テレメトリーSDK。
Attributes:
| Role | Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|---|
| Identity | telemetry.sdk.language | Required | string | テレメトリーSDKの言語。 | cpp; dotnet; erlang | |
| Identity | telemetry.sdk.name | Required | string | 上記で定義されたテレメトリーSDKの名前。[1] | opentelemetry | |
| Description | telemetry.sdk.version | Required | string | テレメトリー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)。
| Value | Description | Stability |
|---|---|---|
cpp | C++ | |
dotnet | .NET | |
erlang | Erlang/Elixir | |
go | Go | |
java | Java | |
kotlin | Kotlin | |
nodejs | Node.js | |
php | PHP | |
python | Python | |
ruby | Ruby | |
rust | Rust | |
swift | Swift | |
webjs | Browser |
Telemetry distro
Status:
type: telemetry.distro
Description: 計装ライブラリが記録したデータを取得するために使われる、テレメトリーSDKのディストリビューション。
Attributes:
| Role | Key | Stability | Requirement Level | Value Type | Description | Example Values |
|---|---|---|---|---|---|---|
| Identity | telemetry.distro.name | Recommended | string | 使用している場合、自動計装エージェントまたはディストリビューションの名前。[1] | parts-unlimited-java | |
| Description | telemetry.distro.version | Recommended | string | 使用している場合、自動計装エージェントまたはディストリビューションのバージョン文字列。 | 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ディレクトリに置かれます。
有効なクラウドプロバイダーは次のとおりです。
- Alibaba Cloud (
alibaba_cloud) - Amazon Web Services (
aws) - Google Cloud Platform (
gcp) - Microsoft Azure (
azure) - Tencent Cloud (
tencent_cloud) - Heroku dyno