第4章 インストルメンテーションの設定
Red Hat build of OpenTelemetry Operator は、インストルメンテーションの設定を定義するカスタムリソース定義 (CRD) ファイルを使用します。
4.1. OpenTelemetry インストルメンテーション設定オプション
Red Hat build of OpenTelemetry では、OpenTelemetry 自動インストルメンテーションライブラリーをワークロードに注入して設定できます。現在、プロジェクトは、Go、Java、Node.js、Python、.NET、および Apache HTTP Server (httpd
) からのインストルメンテーションライブラリーの注入をサポートしています。
OpenTelemetry の自動インストルメンテーションとは、コードを手動で変更することなく、フレームワークがアプリケーションを自動的にインストルメンテーションする機能を指します。これにより、開発者と管理者は、最小限の労力と既存のコードベースへの変更で、アプリケーションに可観測性を導入できるようになります。
Red Hat build of OpenTelemetry Operator は、インストルメンテーションライブラリーの注入メカニズムのみをサポートしますが、インストルメンテーションライブラリーやアップストリームイメージはサポートしません。お客様は独自のインストルメンテーションイメージをビルドすることも、コミュニティーイメージを使用することもできます。
4.1.1. インストルメンテーションオプション
計装オプションは、Instrumentation
カスタムリソース (CR) で指定されます。
サンプル Instrumentation
CR
apiVersion: opentelemetry.io/v1alpha1 kind: Instrumentation metadata: name: java-instrumentation spec: env: - name: OTEL_EXPORTER_OTLP_TIMEOUT value: "20" exporter: endpoint: http://production-collector.observability.svc.cluster.local:4317 propagators: - w3c sampler: type: parentbased_traceidratio argument: "0.25" java: env: - name: OTEL_JAVAAGENT_DEBUG value: "true"
パラメーター | 説明 | 値 |
---|---|---|
| すべてのインストルメンテーションにわたって定義する共通の環境変数。 | |
| エクスポーターの設定。 | |
| プロパゲーターは、プロセス間のコンテキスト伝播設定を定義します。 |
|
| リソース属性の設定。 | |
| サンプリング設定。 | |
| Apache HTTP Server インストルメンテーションの設定。 | |
| .NET インストルメンテーションの設定。 | |
| Go インストルメンテーションの設定。 | |
| Java インストルメンテーションの設定。 | |
| Node.js インストルメンテーションの設定。 | |
| Python インストルメンテーションの設定。 |
4.1.2. OpenTelemetry SDK 変数の設定
OpenTelemetry Collector カスタムリソースの instrumentation.opentelemetry.io/inject-sdk
アノテーションを使用して、Red Hat ビルドの OpenTelemetry Operator に対して、Instrumentation
CR に応じて次の OpenTelemetry SDK 環境変数の一部を挿入するように指示できます。
-
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
値 | 説明 |
---|---|
|
|
|
|
|
現在の namespace から挿入する |
|
別の namespace から挿入する |
4.1.3. Apache HTTP Server の自動インストルメンテーションの設定
Apache HTTP Server の自動インストルメンテーションは、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
名前 | 説明 | デフォルト |
---|---|---|
| Apache HTTP Server に固有の属性。 | |
| Apache HTTP Server 設定の場所。 |
|
| Apache HTTP Server に固有の環境変数。 | |
| Apache SDK と自動インストルメンテーションを備えたコンテナーイメージ。 | |
| コンピュートリソースの要件。 | |
| Apache HTTP Server のバージョン。 | 2.4 |
注入を有効化するための PodSpec
アノテーション
instrumentation.opentelemetry.io/inject-apache-httpd: "true"
4.1.4. .NET 自動インストルメンテーションの設定
.NET 自動インストルメンテーションはテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、この機能はサポート対象外のアップストリームインスツルメンテーションライブラリーを注入します。
名前 | 説明 |
---|---|
| .NET に固有の環境変数。 |
| .NET SDK と自動インストルメンテーションを備えたコンテナーイメージ。 |
| コンピュートリソースの要件。 |
.NET 自動インストルメンテーションの場合、エクスポータのエンドポイントが 4317
に設定されている場合は、必須の OTEL_EXPORTER_OTLP_ENDPOINT
環境変数を設定する必要があります。.NET 自動インストルメンテーションはデフォルトで http/proto
を使用し、テレメトリーデータは 4318
ポートに設定する必要があります。
注入を有効化するための PodSpec
アノテーション
instrumentation.opentelemetry.io/inject-dotnet: "true"
4.1.5. Go 自動インストルメンテーションの設定
Go の自動インストルメンテーションは、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、この機能はサポート対象外のアップストリームインスツルメンテーションライブラリーを注入します。
名前 | 説明 |
---|---|
| Go に固有の環境変数。 |
| Go SDK と自動インストルメンテーションを備えたコンテナーイメージ。 |
| コンピュートリソースの要件。 |
注入を有効化するための PodSpec
アノテーション
instrumentation.opentelemetry.io/inject-go: "true"
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
OpenShift クラスターで Go 自動インストルメンテーションの権限を適用するための CLI コマンドは次のとおりです。
$ oc adm policy add-scc-to-user otel-go-instrumentation-scc -z <service_account>
4.1.6. Java 自動インストルメンテーションの設定
Java の自動インストルメンテーションはテクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、この機能はサポート対象外のアップストリームインスツルメンテーションライブラリーを注入します。
名前 | 説明 |
---|---|
| Java に固有の環境変数。 |
| Java SDK と自動インストルメンテーションを備えたコンテナーイメージ。 |
| コンピュートリソースの要件。 |
注入を有効化するための PodSpec
アノテーション
instrumentation.opentelemetry.io/inject-java: "true"
4.1.7. Node.js 自動インストルメンテーションの設定
Node.js 自動インストルメンテーションはテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、この機能はサポート対象外のアップストリームインスツルメンテーションライブラリーを注入します。
名前 | 説明 |
---|---|
| Node.js に固有の環境変数。 |
| Node.js SDK と自動インストルメンテーションを備えたコンテナーイメージ。 |
| コンピュートリソースの要件。 |
注入を有効化するための PodSpec
アノテーション
instrumentation.opentelemetry.io/inject-nodejs: "true" instrumentation.opentelemetry.io/otel-go-auto-target-exe: "/path/to/container/executable"
instrumentation.opentelemetry.io/otel-go-auto-target-exe
アノテーションは、必要な OTEL_GO_AUTO_TARGET_EXE
環境変数の値を設定します。
4.1.8. Python 自動インストルメンテーションの設定
Python の自動インストルメンテーションは、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
デフォルトでは、この機能はサポート対象外のアップストリームインスツルメンテーションライブラリーを注入します。
名前 | 説明 |
---|---|
| Python に固有の環境変数。 |
| Python SDK と自動インストルメンテーションを備えたコンテナーイメージ。 |
| コンピュートリソースの要件。 |
Python 自動インストルメンテーションの場合、エクスポーターのエンドポイントが 4317
に設定されている場合は、OTEL_EXPORTER_OTLP_ENDPOINT
環境変数を設定する必要があります。Python 自動インストルメンテーションはデフォルトで http/proto
を使用し、テレメトリーデータは 4318
ポートに設定する必要があります。
注入を有効化するための PodSpec
アノテーション
instrumentation.opentelemetry.io/inject-python: "true"
4.1.9. マルチコンテナー Pod
インストルメンテーションは、Pod の仕様に従ってデフォルトで利用可能な最初のコンテナー上で実行されます。場合によっては、注入のターゲットコンテナーを指定することもできます。
Pod のアノテーション
instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>"
Go 自動インストルメンテーションは、複数コンテナーの自動インストルメンテーション注入をサポートしていません。
4.1.10. 複数のインストルメンテーションが含まれるマルチコンテナー Pod
アプリケーション言語のインストルメント化をマルチコンテナー Pod の 1 つ以上のコンテナーに挿入するには、以下のアノテーションが必要です。
instrumentation.opentelemetry.io/<application_language>-container-names: "<container_1>,<container_2>" 1
- 1
- インストルメント化は、コンテナーごとに 1 つの言語の場合にのみ挿入できます。サポートされている <
application_language> の値の
一覧は、次の表を参照してください。
言語 | < application_language> の値 |
---|---|
ApacheHTTPD |
|
dotnet |
|
Java |
|
NGINX |
|
NodeJS |
|
Python |
|
SDK |
|
4.1.11. Service Mesh でのインストルメンテーション CR の使用
Red Hat OpenShift Service Mesh でインストルメンテーションカスタムリソース (CR) を使用する場合は、b3multi
プロパゲーターを使用する必要があります。