リソース

はじめに

A resource represents the entity producing telemetry as resource attributes. For example, a process producing telemetry that is running in a container on Kubernetes has a process name, a pod name, a namespace, and possibly a deployment name. All four of these attributes can be included in the resource.

In your observability backend, you can use resource information to better investigate interesting behavior. For example, if your trace or metrics data indicate latency in your system, you can narrow it down to a specific container, pod, or Kubernetes deployment.

オブザーバビリティバックエンドにJaegerを使用している場合、リソース属性はProcessタブの下にグループ化されます。

トレースに関連するリソース属性の出力例を示すJaegerのスクリーンショット

リソースは TraceProvider または MetricProvider の初期化時に追加されます。 この関連付けは後で変更することはできません。 リソースが追加されると、そのプロバイダーに紐づいた Tracer または Meter から生成されるすべてのスパンとメトリクスに、そのリソースが関連付けられます。

SDKが提供するデフォルト値を持つセマンティック属性

OpenTelemetry SDK が提供する属性があります。 そのうちの1つが service.name で、これはサービスの論理名を表します。 デフォルトでは、SDKはこの値に unknown_service を代入するので、コードの中で明示的に設定するか、環境変数 OTEL_SERVICE_NAME を設定することを推奨します。

さらに、SDKは自身を識別するために、telemetry.sdk.nametelemetry.sdk.languagetelemetry.sdk.version といったリソース属性も提供します。

リソース検出器

ほとんどの言語固有のSDKは、環境からリソース情報を自動的に検出できるリソース検出器のセットを提供しています。 一般的なリソース検出器には次のようなものがあります。

カスタムリソース

独自のリソース属性を指定することもできます。 リソース属性はコードで指定することも、環境変数 OTEL_RESOURCE_ATTRIBUTES に設定することもできます。 該当する場合は、リソース属性のセマンティック規約 を使用してください。 たとえば、deployment.environment を使用して、デプロイ環境 の名前を指定できます。

env OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production yourApp