8.2. Distributed Tracing Platform (Jaeger) の設定
非推奨の Red Hat OpenShift Distributed Tracing Platform (Jaeger) 3.5 は、Red Hat がサポートする Red Hat OpenShift Distributed Tracing Platform (Jaeger)の最後のリリースです。
非推奨の Red Hat OpenShift Distributed Tracing Platform (Jaeger)のサポートは 2025 年 11 月 3 日に終了します。
Red Hat OpenShift Distributed Tracing Platform Operator (Jaeger) は、2025 年 11 月 3 日に redhat-operators
カタログから削除されます。詳細は、Red Hat ナレッジベースソリューション Jaeger Deprecation and Removal in OpenShift を参照してください。
分散トレーシングの収集と保存を行うには、Red Hat build of OpenTelemetry Operator と Tempo Operator に移行する必要があります。詳細は、Red Hat build of OpenTelemetry ドキュメントの「移行」、Red Hat build of OpenTelemetry ドキュメントの「インストール」、および Distributed Tracing Platform ドキュメントの「インストール」を参照してください。
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、アーキテクチャーおよび設定を定義したカスタムリソース定義 (CRD) ファイルを使用します。このファイルは、Distributed Tracing Platform (Jaeger) のリソースの作成およびデプロイ時に使用されます。デフォルト設定をインストールすることも、ファイルを変更することもできます。
Red Hat OpenShift Service Mesh の一部として Distributed Tracing Platform をインストールした場合は、ServiceMeshControlPlane の一部として基本的な設定を実行できます。ただし、完全な制御を行うには、Jaeger CR を設定してから ServiceMeshControlPlane で分散トレーシング設定ファイルを参照 する必要があります。
Red Hat OpenShift Distributed Tracing Platform (Jaeger) には、事前定義されたデプロイメントストラテジーがあります。デプロイメントストラテジーはカスタムリソースファイルで指定します。Distributed Tracing Platform (Jaeger) インスタンスを作成すると、この設定ファイルが Operator によって使用され、デプロイメントに必要なオブジェクトが作成されます。
デプロイメントストラテジーを表示する Jaeger カスタムリソースファイル
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: MyConfigFile spec: strategy: production
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: MyConfigFile
spec:
strategy: production
- 1
- デプロイメントストラテジー
8.2.1. サポート対象のデプロイメントストラテジー
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、現在、次のデプロイメントストラテジーをサポートしています。
allInOne
- このストラテジーは、開発、テストおよびデモの目的で使用されることが意図されています。主なバックエンドコンポーネントである Agent、Collector、および Query サービスはすべて、デフォルトでインメモリーストレージを使用するように設定された単一の実行可能ファイルにパッケージ化されます。
注記インメモリーストレージには永続性がありません。つまり、Distributed Tracing Platform (Jaeger) インスタンスがシャットダウンまたは再起動するか、置き換えられると、トレースデータが失われます。各 Pod には独自のメモリーがあるため、インメモリーストレージはスケーリングできません。永続ストレージの場合は、デフォルトのストレージとして Elasticsearch を使用する
production
またはstreaming
ストラテジーを使用する必要があります。production
- production ストラテジーは実稼働環境向けのストラテジーです。実稼働環境では、トレースデータの長期保存が重要であり、よりスケーラブルで可用性の高いアーキテクチャーが求められます。そのため、バックエンドコンポーネントはそれぞれ別々にデプロイされます。エージェントは、計装されたアプリケーションのサイドカーとして注入できます。Query および Collector サービスは、サポートされているストレージタイプ (現時点では Elasticsearch) で設定されます。これらの各コンポーネントの複数のインスタンスは、パフォーマンスと回復性を確保するために、必要に応じてプロビジョニングできます。
streaming
streaming ストラテジーは、Collector と Elasticsearch バックエンドストレージ間に効果的に配置されるストリーミング機能を提供することで、production ストラテジーを増強する目的で設計されています。これにより、負荷の高い状況でバックエンドストレージに加わる圧力を軽減し、他のトレース処理後の機能がストリーミングプラットフォーム (AMQ Streams/ Kafka) から直接リアルタイムのスパンデータを利用できるようにします。
注記- streaming ストラテジーには、AMQ Streams 用の追加の Red Hat サブスクリプションが必要です。
- 現在、IBM Z® ではストリーミングデプロイメントストラテジーはサポートされていません。
8.2.2. Web コンソールから Distributed Tracing Platform のデフォルトストラテジーをデプロイする
Red Hat OpenShift Distributed Tracing Platform インスタンスのデプロイ時に使用される設定は、カスタムリソース定義 (CRD) で定義されます。デフォルトの CR は、jaeger-all-in-one-inmemory
という名前で、デフォルトの OpenShift Container Platform インストールに正常にインストールできるように最小限のリソースで設定されています。このデフォルト設定を使用して、AllInOne
デプロイメントストラテジーを使用する Red Hat OpenShift Distributed Tracing Platform (Jaeger) インスタンスを作成することも、独自のカスタムリソースファイルを定義することもできます。
インメモリーストレージには永続性がありません。Jaeger Pod がシャットダウンするか、再起動するか、置き換えられると、トレースデータが失われます。永続ストレージの場合は、デフォルトのストレージとして Elasticsearch を使用する production
または streaming
ストラテジーを使用する必要があります。
前提条件
- Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認した。
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 新規プロジェクト (例:
tracing-system
) を作成します。注記サービスメッシュの一部としてインストールする場合、Distributed Tracing Platform リソースは、
ServiceMeshControlPlane
リソースと同じ namespace (例:istio-system
) にインストールする必要があります。-
Home
Projects に移動します。 - Create Project をクリックします。
-
Name フィールドに
tracing-system
を入力します。 - Create をクリックします。
-
Home
-
Operators
Installed Operators に移動します。 -
必要な場合は、Project メニューから
tracing-system
を選択します。Operator が新規プロジェクトにコピーされるまでに数分待機が必要な場合があります。 - Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator をクリックします。Details タブの Provided APIs で、Operator は単一リンクを提供します。
- Jaeger で、Create Instance をクリックします。
- Create Jaeger ページで、デフォルトを使用してインストールするには、Create をクリックして Distributed Tracing Platform (Jaeger) インスタンスを作成します。
-
Jaegers ページで、Distributed Tracing Platform (Jaeger) インスタンスの名前 (例:
jaeger-all-in-one-inmemory
) をクリックします。 - Jaeger Details ページで、Resources タブをクリックします。Pod のステータスが "Running" になるまで待機してから続行します。
8.2.2.1. CLI から Distributed Tracing Platform のデフォルトストラテジーをデプロイする
コマンドラインから Distributed Tracing Platform (Jaeger) のインスタンスを作成するには、次の手順に従います。
前提条件
- Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator がインストールされ、検証されている。
- デプロイメントのカスタマイズ手順を確認した。
-
OpenShift Container Platform バージョンに一致する OpenShift CLI (
oc
) にアクセスできる。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下のコマンドを実行して、
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform CLI にログインしてください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
以下のコマンドを実行して、
tracing-system
という名前の新規プロジェクトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-project tracing-system
$ oc new-project tracing-system
以下のテキストが含まれる
jaeger.yaml
という名前のカスタムリソースファイルを作成します。例: jaeger-all-in-one.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-all-in-one-inmemory
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-all-in-one-inmemory
次のコマンドを実行して、Distributed Tracing Platform (Jaeger) をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -n tracing-system -f jaeger.yaml
$ oc create -n tracing-system -f jaeger.yaml
次のコマンドを実行して、インストールプロセス中の Pod の進行状況を監視します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n tracing-system -w
$ oc get pods -n tracing-system -w
インストールプロセスが完了すると、出力は次の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE jaeger-all-in-one-inmemory-cdff7897b-qhfdx 2/2 Running 0 24s
NAME READY STATUS RESTARTS AGE jaeger-all-in-one-inmemory-cdff7897b-qhfdx 2/2 Running 0 24s
8.2.3. Web コンソールから Distributed Tracing Platform の production ストラテジーをデプロイする
production
デプロイメントストラテジーは、よりスケーラブルで高可用性のあるアーキテクチャーを必要とし、トレースデータの長期保存が重要となる実稼働環境向けのものです。
前提条件
- OpenShift Elasticsearch Operator がインストールされている。
- Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認した。
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 新規プロジェクト (例:
tracing-system
) を作成します。注記サービスメッシュの一部としてインストールする場合、Distributed Tracing Platform リソースは、
ServiceMeshControlPlane
リソースと同じ namespace (例:istio-system
) にインストールする必要があります。-
Home
Projects に移動します。 - Create Project をクリックします。
-
Name フィールドに
tracing-system
を入力します。 - Create をクリックします。
-
Home
-
Operators
Installed Operators に移動します。 -
必要な場合は、Project メニューから
tracing-system
を選択します。Operator が新規プロジェクトにコピーされるまでに数分待機が必要な場合があります。 - Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator をクリックします。Overview タブの Provided APIs で、Operator は単一リンクを提供します。
- Jaeger で、Create Instance をクリックします。
Create Jaeger ページで、デフォルトの
all-in-one
YAML テキストを実稼働用の YAML 設定に置き換えます。以下は例になります。Elasticsearch を含む jaeger-production.yaml ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-production namespace: spec: strategy: production ingress: security: oauth-proxy storage: type: elasticsearch elasticsearch: nodeCount: 3 redundancyPolicy: SingleRedundancy esIndexCleaner: enabled: true numberOfDays: 7 schedule: 55 23 * * * esRollover: schedule: '*/30 * * * *'
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-production namespace: spec: strategy: production ingress: security: oauth-proxy storage: type: elasticsearch elasticsearch: nodeCount: 3 redundancyPolicy: SingleRedundancy esIndexCleaner: enabled: true numberOfDays: 7 schedule: 55 23 * * * esRollover: schedule: '*/30 * * * *'
- Create をクリックして Distributed Tracing Platform (Jaeger) インスタンスを作成します。
-
Jaegers ページで、Distributed Tracing Platform (Jaeger) インスタンスの名前 (例:
jaeger-prod-elasticsearch
) をクリックします。 - Jaeger Details ページで、Resources タブをクリックします。すべての Pod のステータスが "Running" になるまで待機してから続行します。
8.2.3.1. CLI から Distributed Tracing Platform の production ストラテジーをデプロイする
コマンドラインから Distributed Tracing Platform (Jaeger) のインスタンスを作成するには、次の手順に従います。
前提条件
- OpenShift Elasticsearch Operator がインストールされている。
- Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認した。
-
OpenShift Container Platform バージョンに一致する OpenShift CLI (
oc
) にアクセスできる。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下のコマンドを実行して、
cluster-admin
ロールが割り当てられたユーザーとして OpenShift CLI (oc
) にログインします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
以下のコマンドを実行して、
tracing-system
という名前の新規プロジェクトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-project tracing-system
$ oc new-project tracing-system
-
直前の手順のサンプルファイルのテキストが含まれる
jaeger-production.yaml
という名前のカスタムリソースファイルを作成します。 次のコマンドを実行して、Distributed Tracing Platform (Jaeger) をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -n tracing-system -f jaeger-production.yaml
$ oc create -n tracing-system -f jaeger-production.yaml
次のコマンドを実行して、インストールプロセス中の Pod の進行状況を監視します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n tracing-system -w
$ oc get pods -n tracing-system -w
インストールプロセスが完了すると、以下の例ような出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE elasticsearch-cdm-jaegersystemjaegerproduction-1-6676cf568gwhlw 2/2 Running 0 10m elasticsearch-cdm-jaegersystemjaegerproduction-2-bcd4c8bf5l6g6w 2/2 Running 0 10m elasticsearch-cdm-jaegersystemjaegerproduction-3-844d6d9694hhst 2/2 Running 0 10m jaeger-production-collector-94cd847d-jwjlj 1/1 Running 3 8m32s jaeger-production-query-5cbfbd499d-tv8zf 3/3 Running 3 8m32s
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-jaegersystemjaegerproduction-1-6676cf568gwhlw 2/2 Running 0 10m elasticsearch-cdm-jaegersystemjaegerproduction-2-bcd4c8bf5l6g6w 2/2 Running 0 10m elasticsearch-cdm-jaegersystemjaegerproduction-3-844d6d9694hhst 2/2 Running 0 10m jaeger-production-collector-94cd847d-jwjlj 1/1 Running 3 8m32s jaeger-production-query-5cbfbd499d-tv8zf 3/3 Running 3 8m32s
8.2.4. Web コンソールから Distributed Tracing Platform の streaming ストラテジーをデプロイする
streaming
デプロイメントストラテジーは、よりスケーラブルで高可用性のあるアーキテクチャーを必要とし、トレースデータの長期保存が重要となる実稼働環境向けのものです。
streaming
ストラテジーは、Collector と Elasticsearch ストレージ間に配置されるストリーミング機能を提供します。これにより、負荷の高い状況でストレージに加わる圧力を軽減し、他のトレースの後処理機能が Kafka ストリーミングプラットフォームから直接リアルタイムのスパンデータを利用できるようにします。
streaming ストラテジーには、AMQ Streams 用の追加の Red Hat サブスクリプションが必要です。AMQ Streams サブスクリプションをお持ちでない場合は、営業担当者にお問い合わせください。
現在、IBM Z® ではストリーミングデプロイメントストラテジーはサポートされていません。
前提条件
- AMQ Streams Operator がインストールされている。バージョン 1.4.0 以降を使用している場合は、セルフプロビジョニングを使用できます。それ以外の場合は、Kafka インスタンスを作成する必要があります。
- Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認した。
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 新規プロジェクト (例:
tracing-system
) を作成します。注記サービスメッシュの一部としてインストールする場合、Distributed Tracing Platform リソースは、
ServiceMeshControlPlane
リソースと同じ namespace (例:istio-system
) にインストールする必要があります。-
Home
Projects に移動します。 - Create Project をクリックします。
-
Name フィールドに
tracing-system
を入力します。 - Create をクリックします。
-
Home
-
Operators
Installed Operators に移動します。 -
必要な場合は、Project メニューから
tracing-system
を選択します。Operator が新規プロジェクトにコピーされるまでに数分待機が必要な場合があります。 - Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator をクリックします。Overview タブの Provided APIs で、Operator は単一リンクを提供します。
- Jaeger で、Create Instance をクリックします。
Create Jaeger ページで、デフォルトの
all-in-one
YAML テキストをストリーミング用の YAML 設定に置き換えます。以下は例になります。例: jaeger-streaming.yaml ファイル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-streaming spec: strategy: streaming collector: options: kafka: producer: topic: jaeger-spans brokers: my-cluster-kafka-brokers.kafka:9092 storage: type: elasticsearch ingester: options: kafka: consumer: topic: jaeger-spans brokers: my-cluster-kafka-brokers.kafka:9092
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-streaming spec: strategy: streaming collector: options: kafka: producer: topic: jaeger-spans brokers: my-cluster-kafka-brokers.kafka:9092
1 storage: type: elasticsearch ingester: options: kafka: consumer: topic: jaeger-spans brokers: my-cluster-kafka-brokers.kafka:9092
- 1
- ブローカーが定義されていない場合、AMQStreams 1.4.0 以降は Kafka をセルフプロビジョニングします。
- Create をクリックして Distributed Tracing Platform (Jaeger) インスタンスを作成します。
-
Jaegers ページで、Distributed Tracing Platform (Jaeger) インスタンスの名前 (例:
jaeger-streaming
) をクリックします。 - Jaeger Details ページで、Resources タブをクリックします。すべての Pod のステータスが "Running" になるまで待機してから続行します。
8.2.4.1. CLI から Distributed Tracing Platform の streaming ストラテジーをデプロイする
コマンドラインから Distributed Tracing Platform (Jaeger) のインスタンスを作成するには、次の手順に従います。
前提条件
- AMQ Streams Operator がインストールされている。バージョン 1.4.0 以降を使用している場合は、セルフプロビジョニングを使用できます。それ以外の場合は、Kafka インスタンスを作成する必要があります。
- Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認した。
-
OpenShift Container Platform バージョンに一致する OpenShift CLI (
oc
) にアクセスできる。 -
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
以下のコマンドを実行して、
cluster-admin
ロールが割り当てられたユーザーとして OpenShift CLI (oc
) にログインします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
以下のコマンドを実行して、
tracing-system
という名前の新規プロジェクトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-project tracing-system
$ oc new-project tracing-system
-
直前の手順のサンプルファイルのテキストが含まれる
jaeger-streaming.yaml
という名前のカスタムリソースファイルを作成します。 以下のコマンドを実行して Jaeger をデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -n tracing-system -f jaeger-streaming.yaml
$ oc create -n tracing-system -f jaeger-streaming.yaml
次のコマンドを実行して、インストールプロセス中の Pod の進行状況を監視します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n tracing-system -w
$ oc get pods -n tracing-system -w
インストールプロセスが完了すると、以下の例ような出力が表示されるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME READY STATUS RESTARTS AGE elasticsearch-cdm-jaegersystemjaegerstreaming-1-697b66d6fcztcnn 2/2 Running 0 5m40s elasticsearch-cdm-jaegersystemjaegerstreaming-2-5f4b95c78b9gckz 2/2 Running 0 5m37s elasticsearch-cdm-jaegersystemjaegerstreaming-3-7b6d964576nnz97 2/2 Running 0 5m5s jaeger-streaming-collector-6f6db7f99f-rtcfm 1/1 Running 0 80s jaeger-streaming-entity-operator-6b6d67cc99-4lm9q 3/3 Running 2 2m18s jaeger-streaming-ingester-7d479847f8-5h8kc 1/1 Running 0 80s jaeger-streaming-kafka-0 2/2 Running 0 3m1s jaeger-streaming-query-65bf5bb854-ncnc7 3/3 Running 0 80s jaeger-streaming-zookeeper-0 2/2 Running 0 3m39s
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-jaegersystemjaegerstreaming-1-697b66d6fcztcnn 2/2 Running 0 5m40s elasticsearch-cdm-jaegersystemjaegerstreaming-2-5f4b95c78b9gckz 2/2 Running 0 5m37s elasticsearch-cdm-jaegersystemjaegerstreaming-3-7b6d964576nnz97 2/2 Running 0 5m5s jaeger-streaming-collector-6f6db7f99f-rtcfm 1/1 Running 0 80s jaeger-streaming-entity-operator-6b6d67cc99-4lm9q 3/3 Running 2 2m18s jaeger-streaming-ingester-7d479847f8-5h8kc 1/1 Running 0 80s jaeger-streaming-kafka-0 2/2 Running 0 3m1s jaeger-streaming-query-65bf5bb854-ncnc7 3/3 Running 0 80s jaeger-streaming-zookeeper-0 2/2 Running 0 3m39s
8.2.5. デプロイメントの検証
8.2.5.1. Jaeger コンソールへのアクセス
Jaeger コンソールにアクセスするには、Red Hat OpenShift Service Mesh または Red Hat OpenShift Distributed Tracing Platform がインストールされ、Red Hat OpenShift Distributed Tracing Platform (Jaeger) がインストール、設定、およびデプロイされている必要があります。
インストールプロセスにより、Jaeger コンソールにアクセスするためのルートが作成されます。
Jaeger コンソールの URL が分かっている場合は、これに直接アクセスできます。URL が分からない場合は、以下の指示を使用します。
Web コンソールからの手順
-
cluster-admin 権限を持つユーザーとして OpenShift Container Platform Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合)
dedicated-admin
ロールがあるアカウント。 -
Networking
Routes に移動します。 Routes ページで、Namespace メニューからコントロールプレーンプロジェクトを選択します (例:
tracing-system
)。Location 列には、各ルートのリンク先アドレスが表示されます。
-
必要な場合は、フィルターを使用して
jaeger
ルートを検索します。ルートの Location をクリックしてコンソールを起動します。 - Log In With OpenShift をクリックします。
CLI からの手順
以下のコマンドを実行して、
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform CLI にログインしてください。(Red Hat OpenShift Dedicated を使用する場合)dedicated-admin
ロールがあるアカウント。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
コマンドラインを使用してルートの詳細をクエリーするには、以下のコマンドを入力します。この例では、
tracing-system
がコントロールプレーン namespace です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow export JAEGER_URL=$(oc get route -n tracing-system jaeger -o jsonpath='{.spec.host}')
$ export JAEGER_URL=$(oc get route -n tracing-system jaeger -o jsonpath='{.spec.host}')
-
ブラウザーを起動し、
https://<JAEGER_URL>
に移動します。ここで、<JAEGER_URL>
は直前の手順で検出されたルートです。 - OpenShift Container Platform コンソールへアクセスするときに使用するものと同じユーザー名とパスワードを使用してログインします。
サービスメッシュにサービスを追加し、トレースを生成している場合は、フィルターと Find Traces ボタンを使用してトレースデータを検索します。
コンソールインストールを検証すると、表示するトレースデータはありません。
8.2.6. デプロイメントのカスタマイズ
8.2.6.1. デプロイメントのベストプラクティス
- Red Hat OpenShift Distributed Tracing Platform インスタンスの名前は一意である必要があります。複数の Red Hat OpenShift Distributed Tracing Platform (Jaeger) インスタンスがあり、サイドカーが注入されたエージェントを使用している場合、Red Hat OpenShift Distributed Tracing Platform (Jaeger) インスタンスに一意の名前を付け、トレースデータの報告先となる Red Hat OpenShift Distributed Tracing Platform インスタンスの名前を、注入のアノテーションで明示的に指定する必要があります。
- マルチテナントの実装があり、テナントが namespace によって分離されている場合は、各テナントの namespace に Red Hat OpenShift Distributed Tracing Platform (Jaeger) インスタンスをデプロイしてください。
永続ストレージの設定に関する詳細は、永続ストレージについて と、選択したストレージオプションに適した設定トピックを参照してください。
8.2.6.2. 分散トレーシングのデフォルト設定オプション
Distributed Tracing Platform (Jaeger) のリソースの作成時に使用されるアーキテクチャーと設定は、Jaeger カスタムリソース (CR) で定義されます。以下のパラメーターを変更すると、Distributed Tracing Platform (Jaeger) の実装をビジネスニーズに合わせてカスタマイズできます。
Jaeger CR の汎用 YAML の例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: name spec: strategy: <deployment_strategy> allInOne: options: {} resources: {} agent: options: {} resources: {} collector: options: {} resources: {} sampling: options: {} storage: type: options: {} query: options: {} resources: {} ingester: options: {} resources: {} options: {}
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: name
spec:
strategy: <deployment_strategy>
allInOne:
options: {}
resources: {}
agent:
options: {}
resources: {}
collector:
options: {}
resources: {}
sampling:
options: {}
storage:
type:
options: {}
query:
options: {}
resources: {}
ingester:
options: {}
resources: {}
options: {}
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
| オブジェクトの作成時に使用する API バージョン。 |
|
|
| 作成する Kubernetes オブジェクトの種類を定義します。 |
| |
|
|
OpenShift Container Platform は | |
| オブジェクトの名前。 | Distributed Tracing Platform (Jaeger) インスタンスの名前。 |
|
| 作成するオブジェクトの仕様。 |
Distributed Tracing Platform (Jaeger) インスタンスのすべての設定パラメーターが含まれます。すべての Jaeger コンポーネントの共通定義が必要な場合、これは | 該当なし |
| Jaeger デプロイメントストラテジー |
|
|
|
| ||
| Agent を定義する設定オプション。 | ||
| Jaeger Collector を定義する設定オプション。 | ||
| トレース用のサンプリングストラテジーを定義する設定オプション。 | ||
|
ストレージを定義する設定オプション。すべてのストレージ関連のオプションは、 | ||
| Query サービスを定義する設定オプション。 | ||
| Ingester サービスを定義する設定オプション。 |
次の YAML の例は、デフォルト設定を使用して Red Hat OpenShift Distributed Tracing Platform (Jaeger) デプロイメントを作成するために必要な最小限のものです。
最小限必要な dist-tracing-all-in-one.yaml の例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-all-in-one-inmemory
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger-all-in-one-inmemory
8.2.6.3. taint および toleration の使用
専用ノードで Jaeger Pod および Elasticsearch Pod をスケジュールするには、OpenShift 4 で nodeSelector と toleration を使用してインフラノードにさまざまな Jaeger コンポーネントをデプロイする方法 を参照してください。
8.2.6.4. Jaeger Collector 設定オプション
Jaeger Collector は、トレーサーによってキャプチャーされたスパンを受信し、production
ストラテジーを使用する場合はそれらを永続 Elasticsearch ストレージに書き込み、streaming
ストラテジーを使用する場合は AMQ Streams に書き込むコンポーネントです。
Collector はステートレスであるため、Jaeger Collector のインスタンスの多くは並行して実行できます。Elasticsearch クラスターの場所を除き、Collector では設定がほとんど必要ありません。
パラメーター | 説明 | 値 |
---|---|---|
collector: replicas:
| 作成する Collector レプリカの数を指定します。 |
整数 (例: |
パラメーター | 説明 | 値 |
---|---|---|
spec: collector: options: {}
| Jaeger Collector を定義する設定オプション。 | |
options: collector: num-workers:
| キューからプルするワーカーの数。 |
整数 (例: |
options: collector: queue-size:
| Collector キューのサイズ。 |
整数 (例: |
options: kafka: producer: topic: jaeger-spans
|
| プロデューサーのラベル。 |
options: kafka: producer: brokers: my-cluster-kafka-brokers.kafka:9092
| メッセージを生成するために Collector によって使用される Kafka 設定を特定します。ブローカーが指定されておらず、AMQ Streams 1.4.0 以降がインストールされている場合、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator が Kafka をセルフプロビジョニングします。 | |
options: log-level:
| Collector のロギングレベル。 |
使用できる値は、 |
options: otlp: enabled: true grpc: host-port: 4317 max-connection-age: 0s max-connection-age-grace: 0s max-message-size: 4194304 tls: enabled: false cert: /path/to/cert.crt cipher-suites: "TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256" client-ca: /path/to/cert.ca reload-interval: 0s min-version: 1.2 max-version: 1.3
|
OTLP/gRPC を受け入れるには、 | |
options: otlp: enabled: true http: cors: allowed-headers: [<header-name>[, <header-name>]*] allowed-origins: * host-port: 4318 max-connection-age: 0s max-connection-age-grace: 0s max-message-size: 4194304 read-timeout: 0s read-header-timeout: 2s idle-timeout: 0s tls: enabled: false cert: /path/to/cert.crt cipher-suites: "TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256" client-ca: /path/to/cert.ca reload-interval: 0s min-version: 1.2 max-version: 1.3
|
OTLP/HTTP を受け入れるには、 |
8.2.6.5. 分散トレーシングのサンプリング設定オプション
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator を使用すると、リモートサンプラーを使用するように設定されたトレーサーに提供されるサンプリングストラテジーを定義できます。
すべてのトレースが生成される間に、それらの一部のみがサンプリングされます。トレースをサンプリングすると、追加の処理や保存のためにトレースにマークが付けられます。
これは、トレースがサンプリングの意思決定が行われる際に Envoy プロキシーによって開始されている場合に関連がありません。Jaeger サンプリングの意思決定は、トレースがクライアントを使用してアプリケーションによって開始される場合にのみ関連します。
サービスがトレースコンテキストが含まれていない要求を受信すると、クライアントは新しいトレースを開始し、これにランダムなトレース ID を割り当て、現在インストールされているサンプリングストラテジーに基づいてサンプリングの意思決定を行います。サンプリングの意思決定はトレース内の後続のすべての要求に伝播され、他のサービスが再度サンプリングの意思決定を行わないようにします。
Distributed Tracing Platform (Jaeger) のライブラリーでは、次のサンプラーがサポートされています。
-
Probabilistic: サンプラーは、
sampling.param
プロパティーの値と等しいサンプリングの確率で、ランダムなサンプリングの意思決定を行います。たとえば、sampling.param=0.1
を使用した場合は、約 10 のうち 1 トレースがサンプリングされます。 -
Rate Limiting: サンプラーは、リーキーバケット (leaky bucket) レートリミッターを使用して、トレースが一定のレートでサンプリングされるようにします。たとえば、
sampling.param=2.0
を使用した場合は、1 秒あたり 2 トレースの割合で要求がサンプリングされます。
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
spec: sampling: options: {} default_strategy: service_strategy:
| トレース用のサンプリングストラテジーを定義する設定オプション。 | 設定を指定しない場合、Collector はすべてのサービスの確率 0.001 (0.1%) のデフォルトの確率的なサンプリングポリシーを返します。 | |
default_strategy: type: service_strategy: type:
| 使用するサンプリングストラテジー。上記の説明を参照してください。 |
有効な値は |
|
default_strategy: param: service_strategy: param:
| 選択したサンプリングストラテジーのパラメーター | 10 進値および整数値 (0、.1、1、10) | 1 |
この例では、トレースインスタンスをサンプリングする確率が 50% の確率的なデフォルトサンプリングストラテジーを定義します。
確率的なサンプリングの例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: with-sampling spec: sampling: options: default_strategy: type: probabilistic param: 0.5 service_strategies: - service: alpha type: probabilistic param: 0.8 operation_strategies: - operation: op1 type: probabilistic param: 0.2 - operation: op2 type: probabilistic param: 0.4 - service: beta type: ratelimiting param: 5
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: with-sampling
spec:
sampling:
options:
default_strategy:
type: probabilistic
param: 0.5
service_strategies:
- service: alpha
type: probabilistic
param: 0.8
operation_strategies:
- operation: op1
type: probabilistic
param: 0.2
- operation: op2
type: probabilistic
param: 0.4
- service: beta
type: ratelimiting
param: 5
ユーザーによって指定された設定がない場合、Distributed Tracing Platform (Jaeger) は次の設定を使用します。
デフォルトのサンプリング
spec: sampling: options: default_strategy: type: probabilistic param: 1
spec:
sampling:
options:
default_strategy:
type: probabilistic
param: 1
8.2.6.6. 分散トレーシングのストレージ設定オプション
spec.storage
の下で Collector、Ingester、および Query サービスのストレージを設定します。これらの各コンポーネントの複数のインスタンスは、パフォーマンスと回復性を確保するために、必要に応じてプロビジョニングできます。
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
spec: storage: type:
| デプロイメントに使用するストレージのタイプ。 |
|
|
storage: secretname:
|
シークレットの名前 (例: | 該当なし | |
storage: options: {}
| ストレージを定義する設定オプション。 |
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
storage: esIndexCleaner: enabled:
| Elasticsearch ストレージを使用する場合は、デフォルトでジョブが作成され、古いトレースをインデックスからクリーンアップします。このパラメーターは、インデックスクリーナージョブを有効または無効にします。 |
|
|
storage: esIndexCleaner: numberOfDays:
| インデックスの削除を待機する日数。 | 整数値 |
|
storage: esIndexCleaner: schedule:
| Elasticsearch インデックスを消去する頻度に関するスケジュールを定義します。 | cron 式 | "55 23 * * *" |
8.2.6.6.1. Elasticsearch インスタンスの自動プロビジョニング
Jaeger カスタムリソースをデプロイすると、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、OpenShift Elasticsearch Operator を使用して、カスタムリソースファイルの storage
セクションで指定された設定に基づいて Elasticsearch クラスターを作成します。Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、次の設定が指定されている場合、Elasticsearch をプロビジョニングします。
-
spec.storage:type
はelasticsearch
に設定されている -
spec.storage.elasticsearch.doNotProvision
はfalse
に設定されている -
spec.storage.options.es.server-urls
が定義されていない。つまり、OpenShift Elasticsearch Operator によってプロビジョニングされていない Elasticsearch インスタンスへの接続がない。
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、Elasticsearch をプロビジョニングするときに、Elasticsearch カスタムリソースの name
を Jaeger カスタムリソースの spec.storage.elasticsearch.name
の値に設定します。spec.storage.elasticsearch.name
に値が指定されていない場合、Operator は elasticsearch
を使用します。
制約
- セルフプロビジョニングされた Elasticsearch インスタンスを備えた Distributed Tracing Platform (Jaeger) は、namespace ごとに 1 つだけ使用できます。Elasticsearch クラスターは、1 つの Distributed Tracing Platform (Jaeger) インスタンス専用のクラスターになります。
- namespace ごとに 1 つの Elasticsearch のみを使用できます。
OpenShift Logging の一部として Elasticsearch がすでにインストールされている場合、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、インストール済みの OpenShift Elasticsearch Operator を使用してストレージをプロビジョニングできます。
以下の設定パラメーターは、セルフプロビジョニングされた Elasticsearch インスタンス用です。セルフプロビジョニングされた Elasticsearch インスタンスとは、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator によって OpenShift Elasticsearch Operator を使用して作成されたインスタンスです。セルフプロビジョニングされた Elasticsearch の設定オプションは、設定ファイルの spec:storage:elasticsearch
の下で指定します。
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
elasticsearch: properties: doNotProvision:
| Elasticsearch インスタンスを Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator によってプロビジョニングするかどうかを指定するために使用します。 |
|
|
elasticsearch: properties: name:
| Elasticsearch インスタンスの名前。Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、このパラメーターで指定された Elasticsearch インスタンスを使用して Elasticsearch に接続します。 | string |
|
elasticsearch: nodeCount:
| Elasticsearch ノードの数。高可用性を確保するには、少なくとも 3 つのノードを使用します。“スプリットブレイン“ の問題が生じる可能性があるため、2 つのノードを使用しないでください。 | 整数値。例: 概念実証用 = 1、最小デプロイメント = 3 | 3 |
elasticsearch: resources: requests: cpu:
| ご使用の環境設定に基づく、要求に対する中央処理単位の数。 | コアまたはミリコアで指定されます (例: 200m、0.5、1)。例: 概念実証用 = 500m、最小デプロイメント = 1 | 1 |
elasticsearch: resources: requests: memory:
| ご使用の環境設定に基づく、要求に使用できるメモリー。 | バイト単位で指定します (例:200Ki、50Mi、5Gi)。例: 概念実証用 = 1Gi、最小デプロイメント = 16Gi* | 16Gi |
elasticsearch: resources: limits: cpu:
| ご使用の環境設定に基づく、中央処理単位数の制限。 | コアまたはミリコアで指定されます (例: 200m、0.5、1)。例: 概念実証用 = 500m、最小デプロイメント = 1 | |
elasticsearch: resources: limits: memory:
| ご使用の環境設定に基づく、利用可能なメモリー制限。 | バイト単位で指定します (例:200Ki、50Mi、5Gi)。例: 概念実証用 = 1Gi、最小デプロイメント = 16Gi* | |
elasticsearch: redundancyPolicy:
| データレプリケーションポリシーは、Elasticsearch シャードをクラスター内のデータノードにレプリケートする方法を定義します。指定されていない場合は、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator がノード数に基づいて最適なレプリケーションを自動的に決定します。 |
| |
elasticsearch: useCertManagement:
| Distributed Tracing Platform (Jaeger) が OpenShift Elasticsearch Operator の証明書管理機能を使用するかどうかを指定するために使用します。この機能は、OpenShift Container Platform 4.7 の {logging-title} 5.2 に追加されたもので、新しい Jaeger デプロイメントに推奨される設定です。 |
|
|
各 Elasticsearch ノードはこれより低い値のメモリー設定でも動作しますが、これは実稼働環境でのデプロイメントには推奨されません。実稼働環境で使用する場合は、デフォルトで各 Pod に割り当てる設定を 16 Gi 未満にすることはできず、Pod ごとに最大 64 Gi を割り当てる必要があります。
実稼働ストレージの例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: simple-prod spec: strategy: production storage: type: elasticsearch elasticsearch: nodeCount: 3 resources: requests: cpu: 1 memory: 16Gi limits: memory: 16Gi
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
elasticsearch:
nodeCount: 3
resources:
requests:
cpu: 1
memory: 16Gi
limits:
memory: 16Gi
永続ストレージを含むストレージの例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: simple-prod spec: strategy: production storage: type: elasticsearch elasticsearch: nodeCount: 1 storage: storageClassName: gp2 size: 5Gi resources: requests: cpu: 200m memory: 4Gi limits: memory: 4Gi redundancyPolicy: ZeroRedundancy
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
elasticsearch:
nodeCount: 1
storage:
storageClassName: gp2
size: 5Gi
resources:
requests:
cpu: 200m
memory: 4Gi
limits:
memory: 4Gi
redundancyPolicy: ZeroRedundancy
- 1
- 永続ストレージの設定。この場合、AWS
gp2
のサイズは5Gi
です。値が指定されていない場合、Distributed Tracing Platform (Jaeger) はemptyDir
を使用します。OpenShift Elasticsearch Operator は、Distributed Tracing Platform (Jaeger) インスタンスとともに削除されないPersistentVolumeClaim
とPersistentVolume
をプロビジョニングします。同じ名前と namespace を使用して Distributed Tracing Platform (Jaeger) インスタンスを作成すると、同じボリュームをマウントできます。
8.2.6.6.2. 既存の Elasticsearch インスタンスへの接続
Distributed Tracing Platform では、既存の Elasticsearch クラスターをストレージとして使用できます。既存の Elasticsearch クラスター (外部 Elasticsearch インスタンスとも呼ばれます) とは、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator または OpenShift Elasticsearch Operator によってインストールされなかったインスタンスです。
Jaeger カスタムリソースをデプロイするときに、次の設定が指定されている場合、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は Elasticsearch をプロビジョニングしません。
-
spec.storage.elasticsearch.doNotProvision
がtrue
に設定されている -
spec.storage.options.es.server-urls
に値がある -
spec.storage.elasticsearch.name
に値がある場合、または Elasticsearch インスタンス名がelasticsearch
の場合。
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、spec.storage.elasticsearch.name
で指定された Elasticsearch インスタンスを使用して Elasticsearch に接続します。
制約
- OpenShift Container Platform ロギングの Elasticsearch インスタンスを、Distributed Tracing Platform (Jaeger) で共有または再利用することはできません。Elasticsearch クラスターは、1 つの Distributed Tracing Platform (Jaeger) インスタンス専用のクラスターになります。
以下の設定パラメーターは、外部 Elasticsearch インスタンスとして知られる、既存の Elasticsearch インスタンス向けです。この場合は、カスタムリソースファイルの spec:storage:options:es
で、Elasticsearch の設定オプションを指定します。
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
es: server-urls:
| Elasticsearch インスタンスの URL。 | Elasticsearch サーバーの完全修飾ドメイン名。 | |
es: max-doc-count:
|
Elasticsearch クエリーから返す最大ドキュメント数。これは集約にも適用されます。 | 10000 | |
es: max-num-spans:
|
[非推奨: 今後のリリースで削除されます。代わりに | 10000 | |
es: max-span-age:
| Elasticsearch のスパンの最大ルックバック。 | 72h0m0s | |
es: sniffer:
| Elasticsearch のスニファー設定。クライアントはスニッフィングプロセスを使用してすべてのノードを自動的に検索します。デフォルトでは無効になっています。 |
|
|
es: sniffer-tls-enabled:
| Elasticsearch クラスターに対してスニッフィングする際に TLS を有効にするためのオプション。クライアントはスニッフィングプロセスを使用してすべてのノードを自動的に検索します。デフォルトでは無効になっています。 |
|
|
es: timeout:
| クエリーに使用されるタイムアウト。ゼロに設定するとタイムアウトはありません。 | 0s | |
es: username:
|
Elasticsearch で必要なユーザー名。Basic 認証は、指定されている場合に CA も読み込みます。 | ||
es: password:
|
Elasticsearch で必要なパスワード。 | ||
es: version:
| 主要な Elasticsearch バージョン。指定されていない場合、値は Elasticsearch から自動検出されます。 | 0 |
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
es: num-replicas:
| Elasticsearch のインデックスごとのレプリカ数。 | 1 | |
es: num-shards:
| Elasticsearch のインデックスごとのシャード数。 | 5 |
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
es: create-index-templates:
|
|
|
|
es: index-prefix:
| Distributed Tracing Platform (Jaeger) のインデックスの接頭辞 (省略可能)。たとえば、これを “production“ に設定すると、“production-tracing-*“ という名前のインデックスが作成されます。 |
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
es: bulk: actions:
| バルクプロセッサーがディスクへの更新のコミットを決定する前にキューに追加できる要求の数。 | 1000 | |
es: bulk: flush-interval:
|
| 200ms | |
es: bulk: size:
| バルクプロセッサーがディスクへの更新をコミットするまでに一括要求が発生する可能性のあるバイト数。 | 5000000 | |
es: bulk: workers:
| 一括要求を受信し、Elasticsearch にコミットできるワーカーの数。 | 1 |
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
es: tls: ca:
| リモートサーバーの検証に使用される TLS 認証局 (CA) ファイルへのパス。 | デフォルトではシステムトラストストアを使用します。 | |
es: tls: cert:
| リモートサーバーに対するこのプロセスの特定に使用される TLS 証明書ファイルへのパス。 | ||
es: tls: enabled:
| リモートサーバーと通信する際に、トランスポート層セキュリティー (TLS) を有効にします。デフォルトでは無効になっています。 |
|
|
es: tls: key:
| リモートサーバーに対するこのプロセスの特定に使用される TLS 秘密鍵ファイルへのパス。 | ||
es: tls: server-name:
| リモートサーバーの証明書の予想される TLS サーバー名を上書きします。 | ||
es: token-file:
| ベアラートークンが含まれるファイルへのパス。このフラグは、指定されている場合は認証局 (CA) ファイルも読み込みます。 |
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
es-archive: bulk: actions:
| バルクプロセッサーがディスクへの更新のコミットを決定する前にキューに追加できる要求の数。 | 0 | |
es-archive: bulk: flush-interval:
|
| 0s | |
es-archive: bulk: size:
| バルクプロセッサーがディスクへの更新をコミットするまでに一括要求が発生する可能性のあるバイト数。 | 0 | |
es-archive: bulk: workers:
| 一括要求を受信し、Elasticsearch にコミットできるワーカーの数。 | 0 | |
es-archive: create-index-templates:
|
|
|
|
es-archive: enabled:
| 追加ストレージを有効にします。 |
|
|
es-archive: index-prefix:
| Distributed Tracing Platform (Jaeger) のインデックスの接頭辞 (省略可能)。たとえば、これを “production“ に設定すると、“production-tracing-*“ という名前のインデックスが作成されます。 | ||
es-archive: max-doc-count:
| Elasticsearch クエリーから返す最大ドキュメント数。これは集約にも適用されます。 | 0 | |
es-archive: max-num-spans:
|
[非推奨: 今後のリリースで削除されます。代わりに | 0 | |
es-archive: max-span-age:
| Elasticsearch のスパンの最大ルックバック。 | 0s | |
es-archive: num-replicas:
| Elasticsearch のインデックスごとのレプリカ数。 | 0 | |
es-archive: num-shards:
| Elasticsearch のインデックスごとのシャード数。 | 0 | |
es-archive: password:
|
Elasticsearch で必要なパスワード。 | ||
es-archive: server-urls:
|
Elasticsearch サーバーのコンマ区切りの一覧。完全修飾 URL(例: | ||
es-archive: sniffer:
| Elasticsearch のスニファー設定。クライアントはスニッフィングプロセスを使用してすべてのノードを自動的に検索します。デフォルトでは無効になっています。 |
|
|
es-archive: sniffer-tls-enabled:
| Elasticsearch クラスターに対してスニッフィングする際に TLS を有効にするためのオプション。クライアントはスニッフィングプロセスを使用してすべてのノードを自動的に検索します。デフォルトでは無効になっています。 |
|
|
es-archive: timeout:
| クエリーに使用されるタイムアウト。ゼロに設定するとタイムアウトはありません。 | 0s | |
es-archive: tls: ca:
| リモートサーバーの検証に使用される TLS 認証局 (CA) ファイルへのパス。 | デフォルトではシステムトラストストアを使用します。 | |
es-archive: tls: cert:
| リモートサーバーに対するこのプロセスの特定に使用される TLS 証明書ファイルへのパス。 | ||
es-archive: tls: enabled:
| リモートサーバーと通信する際に、トランスポート層セキュリティー (TLS) を有効にします。デフォルトでは無効になっています。 |
|
|
es-archive: tls: key:
| リモートサーバーに対するこのプロセスの特定に使用される TLS 秘密鍵ファイルへのパス。 | ||
es-archive: tls: server-name:
| リモートサーバーの証明書の予想される TLS サーバー名を上書きします。 | ||
es-archive: token-file:
| ベアラートークンが含まれるファイルへのパス。このフラグは、指定されている場合は認証局 (CA) ファイルも読み込みます。 | ||
es-archive: username:
|
Elasticsearch で必要なユーザー名。Basic 認証は、指定されている場合に CA も読み込みます。 | ||
es-archive: version:
| 主要な Elasticsearch バージョン。指定されていない場合、値は Elasticsearch から自動検出されます。 | 0 |
ボリュームマウントを含むストレージの例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: simple-prod spec: strategy: production storage: type: elasticsearch options: es: server-urls: https://quickstart-es-http.default.svc:9200 index-prefix: my-prefix tls: ca: /es/certificates/ca.crt secretName: tracing-secret volumeMounts: - name: certificates mountPath: /es/certificates/ readOnly: true volumes: - name: certificates secret: secretName: quickstart-es-http-certs-public
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: https://quickstart-es-http.default.svc:9200
index-prefix: my-prefix
tls:
ca: /es/certificates/ca.crt
secretName: tracing-secret
volumeMounts:
- name: certificates
mountPath: /es/certificates/
readOnly: true
volumes:
- name: certificates
secret:
secretName: quickstart-es-http-certs-public
以下の例は、ボリュームからマウントされる TLS CA 証明書およびシークレットに保存されるユーザー/パスワードを使用して外部 Elasticsearch クラスターを使用する Jaeger CR を示しています。
外部 Elasticsearch の例:
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: simple-prod spec: strategy: production storage: type: elasticsearch options: es: server-urls: https://quickstart-es-http.default.svc:9200 index-prefix: my-prefix tls: ca: /es/certificates/ca.crt secretName: tracing-secret volumeMounts: - name: certificates mountPath: /es/certificates/ readOnly: true volumes: - name: certificates secret: secretName: quickstart-es-http-certs-public
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-prod
spec:
strategy: production
storage:
type: elasticsearch
options:
es:
server-urls: https://quickstart-es-http.default.svc:9200
index-prefix: my-prefix
tls:
ca: /es/certificates/ca.crt
secretName: tracing-secret
volumeMounts:
- name: certificates
mountPath: /es/certificates/
readOnly: true
volumes:
- name: certificates
secret:
secretName: quickstart-es-http-certs-public
- 1
- デフォルト namespace で実行されている Elasticsearch サービスへの URL。
- 2
- TLS 設定。この場合は、CA 証明書のみを使用できますが、相互 TLS を使用する場合に es.tls.key および es.tls.cert を含めることもできます。
- 3
- 環境変数 ES_PASSWORD および ES_USERNAME を定義するシークレット。kubectl create secret generic tracing-secret --from-literal=ES_PASSWORD=changeme --from-literal=ES_USERNAME=elastic により作成されます
- 4
- すべてのストレージコンポーネントにマウントされるボリュームのマウントとボリューム。
8.2.6.7. Elasticsearch を使用した証明書の管理
OpenShift Elasticsearch Operator を使用して、証明書を作成および管理できます。OpenShift Elasticsearch Operator を使用して証明書を管理すると、複数の Jaeger Collector で単一の Elasticsearch クラスターを使用することもできます。
Elasticsearch を使用した証明書の管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
バージョン 2.4 以降、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、Elasticsearch カスタムリソースで次のアノテーションを使用して、証明書の作成を OpenShift Elasticsearch Operator に委譲します。
-
logging.openshift.io/elasticsearch-cert-management: "true"
-
logging.openshift.io/elasticsearch-cert.jaeger-<shared-es-node-name>: "user.jaeger"
-
logging.openshift.io/elasticsearch-cert.curator- <shared-es-node-name>: "system.logging.curator"
ここで、<shared-es-node-name>
は Elasticsearch ノードの名前です。たとえば、custom-es
という名前の Elasticsearch ノードを作成する場合に、カスタムリソースは次の例のようになります。
アノテーションを表示する Elasticsearch CR の例
apiVersion: logging.openshift.io/v1 kind: Elasticsearch metadata: annotations: logging.openshift.io/elasticsearch-cert-management: "true" logging.openshift.io/elasticsearch-cert.jaeger-custom-es: "user.jaeger" logging.openshift.io/elasticsearch-cert.curator-custom-es: "system.logging.curator" name: custom-es spec: managementState: Managed nodeSpec: resources: limits: memory: 16Gi requests: cpu: 1 memory: 16Gi nodes: - nodeCount: 3 proxyResources: {} resources: {} roles: - master - client - data storage: {} redundancyPolicy: ZeroRedundancy
apiVersion: logging.openshift.io/v1
kind: Elasticsearch
metadata:
annotations:
logging.openshift.io/elasticsearch-cert-management: "true"
logging.openshift.io/elasticsearch-cert.jaeger-custom-es: "user.jaeger"
logging.openshift.io/elasticsearch-cert.curator-custom-es: "system.logging.curator"
name: custom-es
spec:
managementState: Managed
nodeSpec:
resources:
limits:
memory: 16Gi
requests:
cpu: 1
memory: 16Gi
nodes:
- nodeCount: 3
proxyResources: {}
resources: {}
roles:
- master
- client
- data
storage: {}
redundancyPolicy: ZeroRedundancy
前提条件
- Red Hat OpenShift Service Mesh Operator がインストールされている。
- {logging-title} がデフォルト設定でクラスターにインストールされている。
-
Elasticsearch ノードと Jaeger インスタンスが同じ namespace にデプロイされている。(例:
tracing-system
)。
Jaeger カスタムリソースで spec.storage.elasticsearch.useCertManagement
を true
に設定して、証明書管理を有効にします。
useCertManagement
を示す例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-prod spec: strategy: production storage: type: elasticsearch elasticsearch: name: custom-es doNotProvision: true useCertManagement: true
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger-prod
spec:
strategy: production
storage:
type: elasticsearch
elasticsearch:
name: custom-es
doNotProvision: true
useCertManagement: true
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、Elasticsearch をプロビジョニングするときに、Elasticsearch カスタムリソースの name
を Jaeger カスタムリソースの spec.storage.elasticsearch.name
の値に設定します。
証明書は OpenShift Elasticsearch Operator によってプロビジョニングされ、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator によって注入されます。
8.2.6.8. クエリー設定オプション
Query とは、ストレージからトレースを取得し、ユーザーインターフェイスをホストしてそれらを表示するサービスです。
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
spec: query: replicas:
| 作成する Query レプリカの数を指定します。 |
整数 (例: |
パラメーター | 説明 | 値 | デフォルト値 |
---|---|---|---|
spec: query: options: {}
| Query サービスを定義する設定オプション。 | ||
options: log-level:
| Query のロギングレベル。 |
使用できる値は、 | |
options: query: base-path:
|
すべての jaeger-query HTTP ルートのベースパスは、root 以外の値に設定できます。たとえば、 | /<path> |
Query 設定の例
apiVersion: jaegertracing.io/v1 kind: "Jaeger" metadata: name: "my-jaeger" spec: strategy: allInOne allInOne: options: log-level: debug query: base-path: /jaeger
apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
name: "my-jaeger"
spec:
strategy: allInOne
allInOne:
options:
log-level: debug
query:
base-path: /jaeger
8.2.6.9. Ingester 設定オプション
Ingester は、Kafka トピックから読み取り、Elasticsearch ストレージバックエンドに書き込むサービスです。allInOne
または production
デプロイメントストラテジーを使用している場合は、Ingester サービスを設定する必要はありません。
パラメーター | 説明 | 値 |
---|---|---|
spec: ingester: options: {}
| Ingester サービスを定義する設定オプション。 | |
options: deadlockInterval:
|
Ingester が終了するまでメッセージを待機する間隔 (秒単位または分単位) を指定します。システムの初期化中にメッセージが到着しない場合に Ingester が終了しないように、デッドロックの間隔はデフォルトで無効化 ( |
分と秒 (例: |
options: kafka: consumer: topic:
|
|
コンシューマーのラベル例: |
options: kafka: consumer: brokers:
| メッセージを消費するために Ingester によって使用される Kafka 設定を特定します。 |
ブローカーのラベル (例: |
options: log-level:
| Ingester のロギングレベル。 |
使用できる値は、 |
ストリーミング Collector および Ingester の例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: simple-streaming spec: strategy: streaming collector: options: kafka: producer: topic: jaeger-spans brokers: my-cluster-kafka-brokers.kafka:9092 ingester: options: kafka: consumer: topic: jaeger-spans brokers: my-cluster-kafka-brokers.kafka:9092 ingester: deadlockInterval: 5 storage: type: elasticsearch options: es: server-urls: http://elasticsearch:9200
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simple-streaming
spec:
strategy: streaming
collector:
options:
kafka:
producer:
topic: jaeger-spans
brokers: my-cluster-kafka-brokers.kafka:9092
ingester:
options:
kafka:
consumer:
topic: jaeger-spans
brokers: my-cluster-kafka-brokers.kafka:9092
ingester:
deadlockInterval: 5
storage:
type: elasticsearch
options:
es:
server-urls: http://elasticsearch:9200
8.2.7. サイドカーの注入
Red Hat OpenShift Distributed Tracing Platform (Jaeger) は、アプリケーションの Pod 内のプロキシーサイドカーを使用してエージェントを提供します。Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、エージェントサイドカーを Deployment ワークロードに注入できます。サイドカーの自動注入を有効にすることも、注入を手動で管理することもできます。
8.2.7.1. サイドカーの自動注入
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、Jaeger エージェントサイドカーを Deployment ワークロードに注入できます。サイドカーの自動注入を有効にするには、sidecar.jaegertracing.io/inject
アノテーションを追加し、アノテーションを文字列 true
または Distributed Tracing Platform (Jaeger) インスタンス名に設定します。インスタンス名は $ oc get jaegers
を実行したときに返されるものです。true
を指定する場合、デプロイメントと同じ namespace に Distributed Tracing Platform (Jaeger) インスタンスが 1 つだけ存在する必要があります。そうでない場合、どの Distributed Tracing Platform (Jaeger) インスタンスを使用するかを Operator が判断できません。デプロイメントの特定の Distributed Tracing Platform (Jaeger) インスタンス名は、その namespace に適用される true
よりも優先されます。
次のスニペットは、サイドカーを注入する単純なアプリケーションを示しています。エージェントは、同じ namespace で使用可能な 1 つの Distributed Tracing Platform (Jaeger) インスタンスを参照します。
サイドカーの自動注入の例
apiVersion: apps/v1 kind: Deployment metadata: name: myapp annotations: "sidecar.jaegertracing.io/inject": "true" spec: selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: acme/myapp:myversion
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
annotations:
"sidecar.jaegertracing.io/inject": "true"
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: acme/myapp:myversion
- 1
- 文字列
true
または Jaeger インスタンスの名前のいずれかに設定します。
サイドカーが注入されると、localhost
のデフォルトの場所でエージェントにアクセスできるようになります。
8.2.7.2. サイドカーの手動注入
Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator は、Deployment ワークロードにのみ Jaeger エージェントサイドカーを自動的に注入できます。Deployments
以外 (StatefulSets、DaemonSets
など) のコントローラータイプの場合、仕様で Jaeger エージェントサイドカーを手動で定義できます。
以下のスニペットは、Jaeger エージェントサイドカーのコンテナーセクションに追加できる手動の定義を示しています。
StatefulSet
のサイドカー定義の例
apiVersion: apps/v1 kind: StatefulSet metadata: name: example-statefulset namespace: example-ns labels: app: example-app spec: spec: containers: - name: example-app image: acme/myapp:myversion ports: - containerPort: 8080 protocol: TCP - name: jaeger-agent image: registry.redhat.io/distributed-tracing/jaeger-agent-rhel7:<version> # The agent version must match the Operator version imagePullPolicy: IfNotPresent ports: - containerPort: 5775 name: zk-compact-trft protocol: UDP - containerPort: 5778 name: config-rest protocol: TCP - containerPort: 6831 name: jg-compact-trft protocol: UDP - containerPort: 6832 name: jg-binary-trft protocol: UDP - containerPort: 14271 name: admin-http protocol: TCP args: - --reporter.grpc.host-port=dns:///jaeger-collector-headless.example-ns:14250 - --reporter.type=grpc
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: example-statefulset
namespace: example-ns
labels:
app: example-app
spec:
spec:
containers:
- name: example-app
image: acme/myapp:myversion
ports:
- containerPort: 8080
protocol: TCP
- name: jaeger-agent
image: registry.redhat.io/distributed-tracing/jaeger-agent-rhel7:<version>
# The agent version must match the Operator version
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5775
name: zk-compact-trft
protocol: UDP
- containerPort: 5778
name: config-rest
protocol: TCP
- containerPort: 6831
name: jg-compact-trft
protocol: UDP
- containerPort: 6832
name: jg-binary-trft
protocol: UDP
- containerPort: 14271
name: admin-http
protocol: TCP
args:
- --reporter.grpc.host-port=dns:///jaeger-collector-headless.example-ns:14250
- --reporter.type=grpc
その後、エージェントは localhost のデフォルトの場所でアクセスできます。