計装の設定


Red Hat build of OpenTelemetry 3.8

アプリケーションのテレメトリーコレクションの自動インストルメンテーションの設定

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、アプリケーションに OpenTelemetry インストルメント化を設定する方法について説明します。コードを変更せずに Telemetry ライブラリーを挿入し、Instrumentation カスタムリソースを設定し、Go、Java、Node.js、Python、.NET、および Apache HTTP Server の言語固有のインストルメンテーションを設定する自動インストルメンテーション機能について説明します。TLS/mTLS サポート、SDK 環境変数、およびマルチコンテナー Pod のシナリオを含む エクスポーター 設定が含まれます。

第1章 計装の設定

Red Hat build of OpenTelemetry Operator は、計装の設定を定義する Instrumentation カスタムリソースを使用します。

1.1. Red Hat build of OpenTelemetry の自動計装

Red Hat build of OpenTelemetry の自動計装を使用すると、手動でコードを変更せずにアプリケーションを自動的に計装できます。開発者と管理者は、最小限の労力と既存のコードベースへの変更でアプリケーションを監視できます。

自動計装は次のように実行されます。

  1. Red Hat build of OpenTelemetry Operator が、init コンテナー、または Go のサイドカーコンテナーを注入して、計装されたアプリケーションのプログラミング言語用の計装ライブラリーを追加します。
  2. Red Hat build of OpenTelemetry Operator が、アプリケーションのランタイム環境に必要な環境変数を設定します。この変数は、トレース、メトリクス、およびログを収集し、適切な OpenTelemetry Collector または別のテレメトリーバックエンドに送信するように自動計装ライブラリーを設定するものです。
  3. 注入されたライブラリーが、テレメトリーデータを収集する既知のフレームワークやライブラリー (Web サーバーやデータベースクライアントなど) に接続することにより、アプリケーションを自動的に計装します。計装されるアプリケーションのソースコードは変更されません。
  4. 計装が注入されたアプリケーションが実行されると、アプリケーションは自動的にテレメトリーデータを生成します。このデータは、指定された OpenTelemetry Collector または外部 OTLP エンドポイントに送信されてさらに処理されます。

自動計装を使用すると、OpenTelemetry SDK をアプリケーションコードに手動で統合しなくても、テレメトリーデータをすぐに収集できるようになります。ただし、アプリケーションによっては、特定の設定やカスタムの手動計装が必要になる場合があります。

1.2. OpenTelemetry 計装設定オプション

OpenTelemetry の Red Hat ビルドは、OpenTelemetry 自動インストルメンテーションライブラリーをワークロードに挿入して設定します。現在、Red Hat build of OpenTelemetry は、Go、Java、Node.js、Python、.NET、および Apache HTTP Server (httpd)のインストルメンテーションライブラリーの挿入をサポートしています。

重要

Red Hat build of OpenTelemetry Operator は、計装ライブラリーの注入メカニズムのみをサポートしています。計装ライブラリーやアップストリームイメージはサポートしていません。お客様は独自の計装イメージをビルドすることも、コミュニティーイメージを使用することもできます。

1.2.1. 計装オプション

計装オプションは、Instrumentation カスタムリソース (CR) で指定されます。

サンプル Instrumentation CR

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: instrumentation
spec:
  env:
    - name: OTEL_EXPORTER_OTLP_TIMEOUT
      value: "20"
  exporter:
    endpoint: http://production-collector.observability.svc.cluster.local:4317
  propagators:
    - tracecontext
    - baggage
  sampler:
    type: parentbased_traceidratio
    argument: "1"
  python: 
1

    env: 
2

      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: http://production-collector.observability.svc.cluster.local:4318
  dotnet: 
3

    env: 
4

      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: http://production-collector.observability.svc.cluster.local:4318
  go: 
5

    env: 
6

      - name: OTEL_EXPORTER_OTLP_ENDPOINT
        value: http://production-collector.observability.svc.cluster.local:4318
Copy to Clipboard Toggle word wrap

1
Python の自動計装では、デフォルトで HTTP 経由のプロトコルバッファー (HTTP/proto または HTTP/protobuf) が使用されます。
2
エンドポイントが :4317 に設定されている場合は必須です。
3
.NET の自動計装では、デフォルトで HTTP 経由のプロトコルバッファー (HTTP/proto または HTTP/protobuf) が使用されます。
4
エンドポイントが :4317 に設定されている場合は必須です。
5
Go の自動計装では、デフォルトで HTTP (HTTP/proto または HTTP/protobuf) 経由のプロトコルバッファーが使用されます。
6
エンドポイントが :4317 に設定されている場合は必須です。

プロトコルバッファーの詳細は、Overview (Protocol Buffers ドキュメント) を参照してください。

Expand
表1.1 Operator が計装を定義するために使用するパラメーター
パラメーター説明

env

すべての計装タイプに共通する環境変数の定義。

 

exporter

エクスポーターの設定。

 

propagators

プロパゲーターは、プロセス間のコンテキスト伝播設定を定義します。

tracecontextbaggageb3b3multijaegerottracenone

resource

リソース属性の設定。

 

sampler

サンプリング設定。

 

apacheHttpd

Apache HTTP Server 計装の設定。

 

dotnet

.NET 計装の設定。

 

go

Go 計装の設定。

 

java

Java 計装の設定。

 

nodejs

Node.js 計装の設定。

 

python

Python 計装の設定。

プログラミング言語によっては、テレメトリーの設定に環境変数が機能しない場合があります。SDK が環境変数の設定をサポートしていない場合は、同様の設定をコードに直接追加する必要があります。詳細は、Environment Variable Specification (OpenTelemetry ドキュメント) を参照してください。

Expand
表1.2 自動計装のデフォルトプロトコル
自動計装デフォルトプロトコル

Java 1.x

otlp/grpc

Java 2.x

otlp/http

Python

otlp/http

.NET

otlp/http

Go

otlp/http

Apache HTTP サーバー

otlp/grpc

1.2.2. OpenTelemetry SDK 変数の設定

OpenTelemetry Collector カスタムリソースの instrumentation.opentelemetry.io/inject-sdk アノテーションを使用すると、Instrumentation CR に応じて、次の OpenTelemetry SDK 環境変数を Pod に注入するように Red Hat build of OpenTelemetry に指示できます。

  • OTEL_SERVICE_NAME
  • OTEL_TRACES_SAMPLER
  • OTEL_TRACES_SAMPLER_ARG
  • OTEL_PROPAGATORS
  • OTEL_RESOURCE_ATTRIBUTES
  • OTEL_EXPORTER_OTLP_ENDPOINT
  • OTEL_EXPORTER_OTLP_CERTIFICATE
  • OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE
  • OTEL_EXPORTER_OTLP_CLIENT_KEY
Expand
表1.3 instrumentation.opentelemetry.io/inject-sdk アノテーションの値
説明

"true"

現在の namespace からデフォルト名を使用して Instrumentation リソースを注入します。

"false"

Instrumentation リソースは注入されません。

"<instrumentation_name>"

現在の namespace から注入する Instrumentation リソースの名前。

"<namespace>/<instrumentation_name>"

別の namespace から注入する Instrumentation リソースの名前。

1.2.3. エクスポーターの設定

Instrumentation カスタムリソースは、シグナルごとに 1 つ以上のエクスポーターの設定をサポートしていますが、自動計装によって設定されるのは OTLP Exporter だけです。したがって、Collector 上の OTLP Receiver を参照するようにエンドポイントを設定する必要があります。

config map を使用したサンプルエクスポーターの TLS CA の設定

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
# ...
spec
# ...
  exporter:
    endpoint: https://production-collector.observability.svc.cluster.local:4317  
1

    tls:
      configMapName: ca-bundle  
2

      ca_file: service-ca.crt 
3

# ...
Copy to Clipboard Toggle word wrap

1
HTTPS スキームと TLS を使用して OTLP エンドポイントを指定します。
2
config map の名前を指定します。自動計装を注入する Pod の namespace に、config map がすでに存在している必要があります。
3
config map 内の CA 証明書を参照します。証明書がワークロードファイルシステムにすでに存在する場合は、証明書への絶対パスを参照します。

シークレットを使用したサンプルエクスポーターの mTLS の設定

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
# ...
spec
# ...
  exporter:
    endpoint: https://production-collector.observability.svc.cluster.local:4317  
1

    tls:
      secretName: serving-certs 
2

      ca_file: service-ca.crt 
3

      cert_file: tls.crt 
4

      key_file: tls.key 
5

# ...
Copy to Clipboard Toggle word wrap

1
HTTPS スキームと TLS を使用して OTLP エンドポイントを指定します。
2
ca_filecert_file、および key_file 値のシークレットの名前を指定します。自動計装を注入する Pod の namespace に、シークレットがすでに存在している必要があります。
3
シークレット内の CA 証明書を参照します。証明書がワークロードファイルシステムにすでに存在する場合は、証明書への絶対パスを参照します。
4
シークレット内のクライアント証明書を参照します。証明書がワークロードファイルシステムにすでに存在する場合は、証明書への絶対パスを参照します。
5
シークレット内のクライアント鍵を参照します。鍵がワークロードファイルシステムにすでに存在する場合は、鍵への絶対パスを参照します。
注記

CA 証明書は config map またはシークレットで提供できます。両方で指定した場合、config map がシークレットよりも優先されます。

config map と Instrumentation CR を使用した CA バンドル注入の設定例

apiVersion: v1
kind: ConfigMap
metadata:
  name: otelcol-cabundle
  namespace: tutorial-application
  annotations:
    service.beta.openshift.io/inject-cabundle: "true"
# ...
---
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: my-instrumentation
spec:
  exporter:
    endpoint: https://simplest-collector.tracing-system.svc.cluster.local:4317
    tls:
      configMapName: otelcol-cabundle
      ca: service-ca.crt
# ...
Copy to Clipboard Toggle word wrap

1.2.4. Apache HTTP Server の自動計装の設定

重要

Apache HTTP Server の自動計装はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

Expand
表1.4 .spec.apacheHttpd フィールドのパラメーター
名前説明デフォルト

attrs

Apache HTTP Server に固有の属性。

 

configPath

Apache HTTP Server 設定の場所。

/usr/local/apache2/conf

env

Apache HTTP Server に固有の環境変数。

 

image

Apache SDK と自動計装を含むコンテナーイメージ。

 

resourceRequirements

コンピュートリソースの要件。

 

version

Apache HTTP Server のバージョン。

2.4

注入を有効化するための PodSpec アノテーション

instrumentation.opentelemetry.io/inject-apache-httpd: "true"
Copy to Clipboard Toggle word wrap

1.2.5. .NET 自動計装の設定

重要

.NET 自動計装はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

重要

デフォルトでは、この機能はサポート対象外のアップストリームの計装ライブラリーを注入します。

Expand
名前説明

env

.NET に固有の環境変数。

image

.NET SDK と自動計装を含むコンテナーイメージ。

resourceRequirements

コンピュートリソースの要件。

.NET 自動計装では、エクスポーターのエンドポイントが 4317 に設定されている場合、必須の OTEL_EXPORTER_OTLP_ENDPOINT 環境変数を設定する必要があります。.NET 自動計装では、デフォルトで http/proto が使用され、テレメトリーデータを 4318 ポートに設定する必要があります。

注入を有効化するための PodSpec アノテーション

instrumentation.opentelemetry.io/inject-dotnet: "true"
Copy to Clipboard Toggle word wrap

1.2.6. Go 自動計装の設定

重要

Go 自動計装はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

重要

デフォルトでは、この機能はサポート対象外のアップストリームの計装ライブラリーを注入します。

Expand
名前説明

env

Go に固有の環境変数。

image

Go SDK と自動計装を含むコンテナーイメージ。

resourceRequirements

コンピュートリソースの要件。

注入を有効化するための PodSpec アノテーション

instrumentation.opentelemetry.io/inject-go: "true"
instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/<path>/<to>/<container>/<executable>" 
1
Copy to Clipboard Toggle word wrap

1
必要な OTEL_GO_AUTO_TARGET_EXE 環境変数の値を設定します。

OpenShift クラスターでの Go 自動計装に必要な権限

apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
  name: otel-go-instrumentation-scc
allowHostDirVolumePlugin: true
allowPrivilegeEscalation: true
allowPrivilegedContainer: true
allowedCapabilities:
- "SYS_PTRACE"
fsGroup:
  type: RunAsAny
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
seccompProfiles:
- '*'
supplementalGroups:
  type: RunAsAny
Copy to Clipboard Toggle word wrap

ヒント

OpenShift クラスターで Go 自動計装の権限を適用するための CLI コマンドは次のとおりです。

$ oc adm policy add-scc-to-user otel-go-instrumentation-scc -z <service_account>
Copy to Clipboard Toggle word wrap

1.2.7. Java 自動計装の設定

重要

Java 自動計装はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

重要

デフォルトでは、この機能はサポート対象外のアップストリームの計装ライブラリーを注入します。

Expand
名前説明

env

Java に固有の環境変数。

image

Java SDK と自動計装を含むコンテナーイメージ。

resourceRequirements

コンピュートリソースの要件。

注入を有効化するための PodSpec アノテーション

instrumentation.opentelemetry.io/inject-java: "true"
Copy to Clipboard Toggle word wrap

1.2.8. Node.js 自動計装の設定

重要

Node.js 自動計装はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

重要

デフォルトでは、この機能はサポート対象外のアップストリームの計装ライブラリーを注入します。

Expand
名前説明

env

Node.js に固有の環境変数。

image

Node.js SDK と自動計装を含むコンテナーイメージ。

resourceRequirements

コンピュートリソースの要件。

注入を有効化するための PodSpec アノテーション

instrumentation.opentelemetry.io/inject-nodejs: "true"
Copy to Clipboard Toggle word wrap

1.2.9. Python 自動計装の設定

重要

Python 自動計装はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

重要

デフォルトでは、この機能はサポート対象外のアップストリームの計装ライブラリーを注入します。

Expand
名前説明

env

Python に固有の環境変数。

image

Python SDK と自動計装を含むコンテナーイメージ。

resourceRequirements

コンピュートリソースの要件。

Python 自動計装では、エクスポーターのエンドポイントが 4317 に設定されている場合、OTEL_EXPORTER_OTLP_ENDPOINT 環境変数を設定する必要があります。Python 自動計装では、デフォルトで http/proto が使用され、テレメトリーデータを 4318 ポートに設定する必要があります。

注入を有効化するための PodSpec アノテーション

instrumentation.opentelemetry.io/inject-python: "true"
Copy to Clipboard Toggle word wrap

1.2.10. マルチコンテナー Pod

計装は、Pod 仕様に従ってデフォルトで利用可能な最初のコンテナーに注入されます。注入の対象とするコンテナー名を指定することもできます。

Pod のアノテーション

instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>" 
1
Copy to Clipboard Toggle word wrap

1
複数のコンテナーに単一の計装を注入する場合は、このアノテーションを使用します。
注記

Go 自動計装は、マルチコンテナーの自動計装注入をサポートしていません。

1.2.11. 複数の計装を使用するマルチコンテナー Pod

マルチコンテナー Pod 内の 1 つ以上のコンテナーにアプリケーション言語の計装を注入するには、次のアノテーションが必要です。

instrumentation.opentelemetry.io/<application_language>-container-names: "<container_1>,<container_2>" 
1
Copy to Clipboard Toggle word wrap
1
注入できる計装は、コンテナーごとに 1 つの言語の計装だけです。サポートされている <application_language> 値のリストについては、次の表を参照してください。
Expand
表1.5 <application_language> でサポートされている値
Language<application_language> の値

ApacheHTTPD

apache-httpd

DotNet

dotnet

Java

java

NGINX

inject-nginx

NodeJS

nodejs

Python

python

SDK

sdk

1.2.12. Service Mesh での Instrumentation CR の使用

Red Hat OpenShift Service Mesh で Instrumentation カスタムリソース(CR)を使用する場合は、b3multi プロプターを使用する必要があります。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る