第4章 インストルメンテーションの設定


重要

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

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

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"

表4.1 Operator がインストルメンテーションを定義するために使用するパラメーター
パラメーター説明

env

すべてのインストルメンテーションにわたって定義する共通の環境変数。

 

exporter

エクスポーターの設定。

 

propagators

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

tracecontextbaggageb3b3multijaegerottracenone

resource

リソース属性の設定。

 

sampler

サンプリング設定。

 

apacheHttpd

Apache HTTP Server インストルメンテーションの設定。

 

dotnet

.NET インストルメンテーションの設定。

 

Go

Go インストルメンテーションの設定。

 

java

Java インストルメンテーションの設定。

 

nodejs

Node.js インストルメンテーションの設定。

 

python

Python インストルメンテーションの設定。

 

4.1.2. Apache HTTP Server の自動インストルメンテーションの設定

表4.2 .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"

4.1.3. .NET 自動インストルメンテーションの設定

名前説明

env

.NET に固有の環境変数。

image

.NET SDK と自動インストルメンテーションを備えたコンテナーイメージ。

resourceRequirements

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

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

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

instrumentation.opentelemetry.io/inject-dotnet: "true"

4.1.4. Go 自動インストルメンテーションの設定

名前説明

env

Go に固有の環境変数。

image

Go SDK と自動インストルメンテーションを備えたコンテナーイメージ。

resourceRequirements

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

注入を有効化するための 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.5. Java 自動インストルメンテーションの設定

名前説明

env

Java に固有の環境変数。

image

Java SDK と自動インストルメンテーションを備えたコンテナーイメージ。

resourceRequirements

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

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

instrumentation.opentelemetry.io/inject-java: "true"

4.1.6. Node.js 自動インストルメンテーションの設定

名前説明

env

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

image

Node.js SDK と自動インストルメンテーションを備えたコンテナーイメージ。

resourceRequirements

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

注入を有効化するための 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.7. Python 自動インストルメンテーションの設定

名前説明

env

Python に固有の環境変数。

image

Python SDK と自動インストルメンテーションを備えたコンテナーイメージ。

resourceRequirements

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

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

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

instrumentation.opentelemetry.io/inject-python: "true"

4.1.8. OpenTelemetry SDK 変数の設定

Pod 内の OpenTelemetry SDK 変数は、次のアノテーションを使用して設定できます。

instrumentation.opentelemetry.io/inject-sdk: "true"

すべてのアノテーションは、以下の値を受け入れることに注意してください。

true
namespace から Instrumentation リソースを注入します。
false
インストルメンテーションはいっさい注入しません。
instrumentation-name
現在の namespace から注入するインストルメンテーションリソースの名前。
other-namespace/instrumentation-name
別の namespace から注入するインストルメンテーションリソースの名前。

4.1.9. マルチコンテナー Pod

インストルメンテーションは、Pod の仕様に従ってデフォルトで利用可能な最初のコンテナー上で実行されます。場合によっては、注入のターゲットコンテナーを指定することもできます。

Pod のアノテーション

instrumentation.opentelemetry.io/container-names: "<container_1>,<container_2>"

注記

Go 自動インストルメンテーションは、複数コンテナーの自動インストルメンテーション注入をサポートしていません。

4.1.10. Service Mesh でのインストルメンテーション CR の使用

Red Hat OpenShift Service Mesh でインストルメンテーションカスタムリソース (CR) を使用する場合は、b3multi プロパゲーターを使用する必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.