# Resourceのセマンティック規約

> Source: https://www.ymotongpoo.com/works/otel-specs-ja/semconv/resource/


# Resourceのセマンティック規約

**ステータス**: [Mixed][DocumentStatus]

この文書では、リソースに対する標準的な属性を定義します。これらの属性は通常[Resource](/works/otel-specs-ja/spec/resource/sdk/)で使われますが、一貫した方法でリソースを記述する必要があるあらゆる場所でも使用が推奨されます。これらの属性の大部分は、[OpenCensus Resource標準](https://github.com/census-instrumentation/opencensus-specs/blob/master/resource/StandardResources.md)から引き継がれたものです。

## TODO

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

## 文書の規約

**ステータス**: [Stable][DocumentStatus]

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

属性をいつ含めるべきかの詳細については、[属性の要求レベル](/works/otel-specs-ja/semconv/general/attribute-requirement-level/)を参照してください。

## 特別な扱いを受ける属性

**ステータス**: [Stable][DocumentStatus]

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

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

これらは、[OpenTelemetry環境変数仕様書](/works/otel-specs-ja/spec/configuration/sdk-environment-variables/)で規定されているとおり、専用の環境変数を通じて設定できる場合がある属性です（MAY）。

- [`service.name`](#service)

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

これらは、[Resource SDK仕様書](/works/otel-specs-ja/spec/resource/sdk/#sdkが提供するリソース属性)で規定されているとおり、SDKによって提供されなければならない属性です（MUST）。

- [`service.name`](#service)
- [`telemetry.sdk`グループ](#telemetry-sdk)

## Service

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

- [Service](/works/otel-specs-ja/semconv/resource/service/)。

## Telemetry SDK

<!-- semconv entity.telemetry.sdk -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->

**Status:** ![Stable](https://img.shields.io/badge/-stable-lightgreen)

**type:** `telemetry.sdk`

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

**Attributes:**

| Role | Key | Stability | [Requirement Level](/works/otel-specs-ja/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
| --- | --- | --- | --- | --- | --- | --- |
| Identity | [`telemetry.sdk.language`](https://opentelemetry.io/docs/specs/semconv/registry/attributes/telemetry/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Required` | string | テレメトリーSDKの言語。 | `cpp`; `dotnet`; `erlang` |
| Identity | [`telemetry.sdk.name`](https://opentelemetry.io/docs/specs/semconv/registry/attributes/telemetry/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Required` | string | 上記で定義されたテレメトリーSDKの名前。[1] | `opentelemetry` |
| Description | [`telemetry.sdk.version`](https://opentelemetry.io/docs/specs/semconv/registry/attributes/telemetry/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `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++](https://opentelemetry.io/docs/languages/cpp/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `dotnet` | [.NET](https://opentelemetry.io/docs/languages/dotnet/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `erlang` | [Erlang/Elixir](https://opentelemetry.io/docs/languages/erlang/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `go` | [Go](https://opentelemetry.io/docs/languages/go/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `java` | [Java](https://opentelemetry.io/docs/languages/java/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `kotlin` | [Kotlin](https://opentelemetry.io/docs/languages/kotlin/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `nodejs` | [Node.js](https://opentelemetry.io/docs/languages/js/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `php` | [PHP](https://opentelemetry.io/docs/languages/php/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `python` | [Python](https://opentelemetry.io/docs/languages/python/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `ruby` | [Ruby](https://opentelemetry.io/docs/languages/ruby/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `rust` | [Rust](https://opentelemetry.io/docs/languages/rust/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `swift` | [Swift](https://opentelemetry.io/docs/languages/swift/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
| `webjs` | [Browser](https://opentelemetry.io/docs/languages/js/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) |
<!-- prettier-ignore-end -->
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->

## Telemetry distro

<!-- semconv entity.telemetry.distro -->
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/snippet.md.j2 -->
<!-- prettier-ignore-start -->

**Status:** ![Stable](https://img.shields.io/badge/-stable-lightgreen)

**type:** `telemetry.distro`

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

**Attributes:**

| Role | Key | Stability | [Requirement Level](/works/otel-specs-ja/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
| --- | --- | --- | --- | --- | --- | --- |
| Identity | [`telemetry.distro.name`](https://opentelemetry.io/docs/specs/semconv/registry/attributes/telemetry/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Recommended` | string | 使用している場合、自動計装エージェントまたはディストリビューションの名前。[1] | `parts-unlimited-java` |
| Description | [`telemetry.distro.version`](https://opentelemetry.io/docs/specs/semconv/registry/attributes/telemetry/) | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | `Recommended` | string | 使用している場合、自動計装エージェントまたはディストリビューションのバージョン文字列。 | `1.2.3` |

**[1] `telemetry.distro.name`:** 公式の自動計装エージェントとディストリビューションは、`telemetry.distro.name`属性を`opentelemetry-`で始まる文字列（例えば`opentelemetry-java-instrumentation`）に設定すべきです（SHOULD）。
<!-- prettier-ignore-end -->
<!-- END AUTOGENERATED TEXT -->
<!-- endsemconv -->

## コンピュートユニット

**ステータス**: [Development][DocumentStatus]

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

- [コンテナ](./container/)
- [Function as a Service](./faas/)
- [Process](/works/otel-specs-ja/semconv/resource/process/)
- [Web engine](/works/otel-specs-ja/semconv/resource/webengine/)

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

**ステータス**: [Development][DocumentStatus]

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

- [Host](./host/)

## 環境

**ステータス**: [Development][DocumentStatus]

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

- [Operating System](/works/otel-specs-ja/semconv/resource/os/)
- [デバイス](./device/)
- [クラウド](./cloud/)
- [CI/CD](./cicd/)
- デプロイメント:
  - [デプロイメント環境](./deployment-environment/)
  - [Kubernetes](https://opentelemetry.io/docs/specs/semconv/resource/k8s/)
  - [Openshift](https://opentelemetry.io/docs/specs/semconv/resource/k8s/openshift/)
  - [CloudFoundry](./cloudfoundry/)
- [ブラウザー](./browser/)

## バージョン属性

**ステータス**: [Stable][DocumentStatus]

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

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

**ステータス**: [Development][DocumentStatus]

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

- [Alibaba Cloud](https://www.alibabacloud.com/) (`alibaba_cloud`)
- [Amazon Web Services](https://aws.amazon.com/) ([`aws`](/works/otel-specs-ja/semconv/resource/cloud-provider/aws/))
- [Google Cloud Platform](https://cloud.google.com/) ([`gcp`](/works/otel-specs-ja/semconv/resource/cloud-provider/gcp/))
- [Microsoft Azure](https://azure.microsoft.com/) (`azure`)
- [Tencent Cloud](https://www.tencentcloud.com/) (`tencent_cloud`)
- [Heroku dyno](/works/otel-specs-ja/semconv/resource/cloud-provider/heroku/)

[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status

- [Kubernetes](/works/otel-specs-ja/semconv/resource/k8s/)
- [クラウドプロバイダー](/works/otel-specs-ja/semconv/resource/cloud-provider/)
- [Android](/works/otel-specs-ja/semconv/resource/android/)
- [AWS ECS](/works/otel-specs-ja/semconv/resource/cloud-provider/aws/ecs/)
- [AWS EKS](/works/otel-specs-ja/semconv/resource/cloud-provider/aws/eks/)
- [AWSログ](/works/otel-specs-ja/semconv/resource/cloud-provider/aws/logs/)
- [Browser](/works/otel-specs-ja/semconv/resource/browser/)
- [CI/CD](/works/otel-specs-ja/semconv/resource/cicd/)
- [Cloud](/works/otel-specs-ja/semconv/resource/cloud/)
- [CloudFoundry](/works/otel-specs-ja/semconv/resource/cloudfoundry/)
- [Container](/works/otel-specs-ja/semconv/resource/container/)
- [Deployment](/works/otel-specs-ja/semconv/resource/deployment-environment/)
- [Device](/works/otel-specs-ja/semconv/resource/device/)
- [Function as a Service](/works/otel-specs-ja/semconv/resource/faas/)
- [Google Cloud AppHub](/works/otel-specs-ja/semconv/resource/cloud-provider/gcp/apphub/)
- [Google Cloud Run](/works/otel-specs-ja/semconv/resource/cloud-provider/gcp/cloud-run/)
- [Google Compute Engine](/works/otel-specs-ja/semconv/resource/cloud-provider/gcp/gce/)
- [Heroku](/works/otel-specs-ja/semconv/resource/cloud-provider/heroku/)
- [Host](/works/otel-specs-ja/semconv/resource/host/)
- [Openshift](/works/otel-specs-ja/semconv/resource/k8s/openshift/)
- [Processおよびプロセスランタイムリソース](/works/otel-specs-ja/semconv/resource/process/)
- [Webengine](/works/otel-specs-ja/semconv/resource/webengine/)
- [z/OSソフトウェア](/works/otel-specs-ja/semconv/resource/zos/)
- [オペレーティングシステム](/works/otel-specs-ja/semconv/resource/os/)
- [サービスに関するセマンティック規約](/works/otel-specs-ja/semconv/resource/service/)
