リソース

はじめに

リソースは、リソース属性としてテレメトリーを生成するエンティティを表します。 たとえば、Kubernetes上のコンテナで実行されているテレメトリーを生成するプロセスは、プロセス名、ポッド名、ネームスペース、および場合によってはデプロイメント名を持ちます。 これらの4つの属性すべてをリソースに含まれることができます。

オブザーバビリティバックエンドでは、リソース情報を使用して興味深い動作をより詳細に調査できます。 たとえば、トレースまたはメトリクスデータがシステムのレイテンシーを示している場合、それを特定のコンテナ、ポッド、またはKubernetesデプロイメントに絞り込むことができます。

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

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

リソースは TracerProvider または 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.name を使用して、デプロイ環境 の名前を指定できます。

env OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=production yourApp