3.2. 分散トレースの設定およびデプロイ
Red Hat OpenShift 分散トレースプラットフォーム Operator は、分散トレースプラットフォームリソースの作成およびデプロイ時に使用されるアーキテクチャーおよび設定を定義するカスタムリソース定義 (CRD) ファイルを使用します。デフォルト設定をインストールするか、またはビジネス要件に合わせてファイルを変更することができます。
Red Hat OpenShift 分散トレースプラットフォームには、事前に定義されたデプロイメントストラテジーがあります。カスタムリソースファイルでデプロイメントストラテジーを指定します。分散トレースプラットフォームインスタンスの作成時に、Operator はこの設定ファイルを使用してデプロイメントに必要なオブジェクトを作成します。
デプロイメントストラテジーを表示する Jaeger カスタムリソースファイル
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: MyConfigFile
spec:
strategy: production 1
- 1
- Red Hat OpenShift 分散トレースプラットフォーム Operator は現時点で以下のデプロイメントストラテジーをサポートします。
allInOne (デフォルト): このストラテジーは、開発、テストおよびデモの目的で使用されることが意図されています。主なバックエンドコンポーネントである Agent、Collector、および Query サービスはすべて、デフォルトでインメモリーストレージを使用するように設定された単一の実行可能ファイルにパッケージ化されます。
注記インメモリーストレージには永続性がありません。つまり、分散トレースプラットフォームインスタンスがシャットダウンするか、再起動するか、または置き換えられると、トレースデータが失われます。各 Pod には独自のメモリーがあるため、インメモリーストレージはスケーリングできません。永続ストレージの場合、デフォルトのストレージとして Elasticsearch を使用する
productionまたはstreamingストラテジーを使用する必要があります。- production: production ストラテジーは、実稼働環境向けのストラテジーであり、トレースデータの長期の保存が重要となり、より拡張性および高可用性のあるアーキテクチャーも必要になります。そのため、バックエンドコンポーネントはそれぞれ別々にデプロイされます。エージェントは、インストルメント化されたアプリケーションのサイドカーとして挿入できます。Query および Collector サービスは、サポートされているストレージタイプ (現時点では Elasticsearch) で設定されます。これらの各コンポーネントの複数のインスタンスは、パフォーマンスと回復性を確保するために、必要に応じてプロビジョニングできます。
streaming: streaming ストラテジーは、Collector と Elasticsearch バックエンドストレージ間に効果的に配置されるストリーミング機能を提供することで、production ストラテジーを増強する目的で設計されています。これにより、負荷の高い状況でバックエンドストレージに加わる圧力を軽減し、他のトレース処理後の機能がストリーミングプラットフォーム (AMQ Streams/ Kafka) から直接リアルタイムのスパンデータを利用できるようにします。
注記streaming ストラテジーには、AMQ Streams 用の追加の Red Hat サブスクリプションが必要です。
IBM Z では、現在ストリーミングデプロイメントストラテジーはサポートされていません。
サービスメッシュの一部としてか、またはスタンドアロンのコンポーネントとして Red Hat OpenShift 分散トレースをインストールし、使用するには 2 つの方法があります。Red Hat OpenShift Service Mesh の一部として分散トレースをインストールしている場合、ServiceMeshControlPlane の一部として基本的な設定を実行できますが、完全な制御を行うためには、Jaeger CR を設定してから、ServiceMeshControlPlane の分散トレース設定ファイルを参照する 必要があります。
3.2.1. Web コンソールからの分散トレースのデフォルトストラテジーのデプロイ
カスタムリソース定義 (CRD) は、Red Hat OpenShift 分散トレースのインスタンスをデプロイする際に使用される設定を定義します。デフォルト CR は jaeger-all-in-one-inmemory という名前で、デフォルトの OpenShift Container Platform インストールに正常にインストールできるように最小リソースで設定されます。このデフォルト設定を使用して、AllInOne デプロイメントストラテジーを使用する Red Hat OpenShift 分散トレースプラットフォームのインスタンスを作成するか、または独自のカスタムリソースファイルを定義できます。
インメモリーストレージには永続性がありません。Jaeger Pod がシャットダウンするか、再起動するか、または置き換えられると、トレースデータが失われます。永続ストレージの場合、デフォルトのストレージとして Elasticsearch を使用する production または streaming ストラテジーを使用する必要があります。
前提条件
- Red Hat OpenShift 分散トレースプラットフォーム Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認している。
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 新規プロジェクト (例:
tracing-system) を作成します。注記サービスメッシュの一部としてインストールする場合、分散トレースリソースは、
istio-systemなど、ServiceMeshControlPlaneリソースと同じ namespace にインストールする必要があります。- Home → Projects に移動します。
- Create Project をクリックします。
-
Name フィールドに
tracing-systemを入力します。 - Create をクリックします。
- Operators → Installed Operators に移動します。
-
必要な場合は、Project メニューから
tracing-systemを選択します。Operator が新規プロジェクトにコピーされるまでに数分待機する必要がある場合があります。 - Red Hat OpenShift distributed tracing platform Operator をクリックします。Details タブの Provided APIs で、Operator は単一リンクを提供します。
- Jaeger で、Create Instance をクリックします。
- Create Jaeger ページで、デフォルトを使用してインストールするには、 Create をクリックして分散トレースプラットフォームのインスタンスを作成します。
-
Jaegers ページで、分散トレースプラットフォームインスタンスの名前 (例:
jaeger-all-in-one-inmemory) をクリックします。 - Jaeger Details ページで、Resources タブをクリックします。Pod のステータスが Running になるまで待機してから続行します。
3.2.1.1. CLI からの分散トレースのデフォルトストラテジーのデプロイ
以下の手順に従って、コマンドラインから分散トレースプラットフォームのインスタンスを作成します。
前提条件
- Red Hat OpenShift 分散トレースプラットフォーム Operator がインストールされ検証されている。
- デプロイメントのカスタマイズ手順を確認している。
-
OpenShift Container Platform バージョンに一致する OpenShift CLI (
oc) にアクセスできる。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
cluster-adminロールを持つユーザーとして OpenShift Container Platform CLI にログインします。$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
tracing-systemという名前の新規プロジェクトを作成します。$ oc new-project tracing-system
以下のテキストが含まれる
jaeger.yamlという名前のカスタムリソースファイルを作成します。例: jaeger-all-in-one.yaml
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-all-in-one-inmemory
以下のコマンドを実行して、分散トレースプラットフォームをデプロイします。
$ oc create -n tracing-system -f jaeger.yaml
以下のコマンドを実行して、インストールプロセス時の Pod の進捗を確認します。
$ oc get pods -n tracing-system -w
インストールプロセスが完了すると、以下の例ような出力が表示されるはずです。
NAME READY STATUS RESTARTS AGE jaeger-all-in-one-inmemory-cdff7897b-qhfdx 2/2 Running 0 24s
3.2.2. Web コンソールからの分散トレースの production ストラテジーのデプロイ
production デプロイメントストラテジーは、よりスケーラブルで高可用性のあるアーキテクチャーを必要とし、トレースデータの長期保存が重要となる実稼働環境向けのものです。
前提条件
- OpenShift Elasticsearch Operator がインストールされている。
- Red Hat OpenShift 分散トレースプラットフォーム Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認している。
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 新規プロジェクト (例:
tracing-system) を作成します。注記サービスメッシュの一部としてインストールする場合、分散トレースリソースは、
istio-systemなど、ServiceMeshControlPlaneリソースと同じ namespace にインストールする必要があります。- Home → Projects に移動します。
- Create Project をクリックします。
-
Name フィールドに
tracing-systemを入力します。 - Create をクリックします。
- Operators → Installed Operators に移動します。
-
必要な場合は、Project メニューから
tracing-systemを選択します。Operator が新規プロジェクトにコピーされるまでに数分待機する必要がある場合があります。 - Red Hat OpenShift distributed tracing platform Operator をクリックします。Overview タブの Provided APIs で、Operator は単一リンクを提供します。
- Jaeger で、Create Instance をクリックします。
Create Jaeger ページで、デフォルトの
all-in-oneYAML テキストを実稼働用の YAML 設定に置き換えます。以下は例になります。Elasticsearch を含む jaeger-production.yaml ファイルの例
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 をクリックして分散トレースプラットフォームのインスタンスを作成します。
-
Jaegers ページで、分散トレースプラットフォームインスタンスの名前 (例:
jaeger-prod-elasticsearch) をクリックします。 - Jaeger Details ページで、Resources タブをクリックします。すべての Pod のステータスが Running になるまで待機してから続行します。
3.2.2.1. CLI からの分散トレースの production ストラテジーのデプロイ
以下の手順に従って、コマンドラインから分散トレースプラットフォームのインスタンスを作成します。
前提条件
- OpenShift Elasticsearch Operator がインストールされている。
- Red Hat OpenShift 分散トレースプラットフォーム Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認している。
-
OpenShift Container Platform バージョンに一致する OpenShift CLI (
oc) にアクセスできる。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
cluster-adminロールを持つユーザーとして OpenShift Container Platform CLI にログインします。$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
tracing-systemという名前の新規プロジェクトを作成します。$ oc new-project tracing-system
-
直前の手順のサンプルファイルのテキストが含まれる
jaeger-production.yamlという名前のカスタムリソースファイルを作成します。 以下のコマンドを実行して、分散トレースプラットフォームをデプロイします。
$ oc create -n tracing-system -f jaeger-production.yaml
以下のコマンドを実行して、インストールプロセス時の Pod の進捗を確認します。
$ oc get pods -n tracing-system -w
インストールプロセスが完了すると、以下の例ような出力が表示されるはずです。
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
3.2.3. Web コンソールからの分散トレースの 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 分散トレースプラットフォーム Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認している。
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 新規プロジェクト (例:
tracing-system) を作成します。注記サービスメッシュの一部としてインストールする場合、分散トレースリソースは、
istio-systemなど、ServiceMeshControlPlaneリソースと同じ namespace にインストールする必要があります。- Home → Projects に移動します。
- Create Project をクリックします。
-
Name フィールドに
tracing-systemを入力します。 - Create をクリックします。
- Operators → Installed Operators に移動します。
-
必要な場合は、Project メニューから
tracing-systemを選択します。Operator が新規プロジェクトにコピーされるまでに数分待機する必要がある場合があります。 - Red Hat OpenShift distributed tracing platform Operator をクリックします。Overview タブの Provided APIs で、Operator は単一リンクを提供します。
- Jaeger で、Create Instance をクリックします。
-
Create Jaeger ページで、デフォルトの
all-in-oneYAML テキストをストリーミング用の YAML 設定に置き換えます。以下は例になります。
例: jaeger-streaming.yaml ファイル
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger-streaming
spec:
strategy: streaming
collector:
options:
kafka:
producer:
topic: jaeger-spans
#Note: If brokers are not defined,AMQStreams 1.4.0+ will self-provision Kafka.
brokers: my-cluster-kafka-brokers.kafka:9092
storage:
type: elasticsearch
ingester:
options:
kafka:
consumer:
topic: jaeger-spans
brokers: my-cluster-kafka-brokers.kafka:9092
- Create をクリックして分散トレースプラットフォームのインスタンスを作成します。
-
Jaegers ページで、分散トレースプラットフォームインスタンスの名前 (例:
jaeger-streaming) をクリックします。 - Jaeger Details ページで、Resources タブをクリックします。すべての Pod のステータスが Running になるまで待機してから続行します。
3.2.3.1. CLI からの分散トレースの streaming ストラテジーのデプロイ
以下の手順に従って、コマンドラインから分散トレースプラットフォームのインスタンスを作成します。
前提条件
- AMQ Streams Operator がインストールされている。バージョン 1.4.0 以降を使用している場合は、セルフプロビジョニングを使用できます。それ以外の場合は、Kafka インスタンスを作成する必要があります。
- Red Hat OpenShift 分散トレースプラットフォーム Operator がインストールされている。
- デプロイメントのカスタマイズ手順を確認している。
-
OpenShift Container Platform バージョンに一致する OpenShift CLI (
oc) にアクセスできる。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
cluster-adminロールを持つユーザーとして OpenShift Container Platform CLI にログインします。$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
tracing-systemという名前の新規プロジェクトを作成します。$ oc new-project tracing-system
-
直前の手順のサンプルファイルのテキストが含まれる
jaeger-streaming.yamlという名前のカスタムリソースファイルを作成します。 以下のコマンドを実行して Jaeger をデプロイします。
$ oc create -n tracing-system -f jaeger-streaming.yaml
以下のコマンドを実行して、インストールプロセス時の Pod の進捗を確認します。
$ oc get pods -n tracing-system -w
インストールプロセスが完了すると、以下の例ような出力が表示されるはずです。
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
3.2.4. デプロイメントの検証
3.2.4.1. Jaeger コンソールへのアクセス
Jaeger コンソールにアクセスするには、Red Hat OpenShift Service Mesh または Red Hat OpenShift 分散トレースがインストールされ、Red Hat OpenShift 分散トレースプラットフォームがインストール、設定、およびデプロイされている必要があります。
インストールプロセスにより、Jaeger コンソールにアクセスするためのルートが作成されます。
Jaeger コンソールの URL が分かっている場合は、これに直接アクセスできます。URL が分からない場合は、以下の指示を使用します。
OpenShift コンソールからの手順
-
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ロールがあるアカウント。$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
コマンドラインを使用してルートの詳細をクエリーするには、以下のコマンドを入力します。この例では、
tracing-systemがコントロールプレーン namespace です。$ export JAEGER_URL=$(oc get route -n tracing-system jaeger -o jsonpath='{.spec.host}')-
ブラウザーを起動し、
https://<JAEGER_URL>に移動します。ここで、<JAEGER_URL>は直前の手順で検出されたルートです。 - OpenShift Container Platform コンソールへアクセスするときに使用するものと同じユーザー名とパスワードを使用してログインします。
サービスメッシュにサービスを追加し、トレースを生成している場合は、フィルターと Find Traces ボタンを使用してトレースデータを検索します。
コンソールインストールを検証すると、表示するトレースデータはありません。
3.2.5. デプロイメントのカスタマイズ
3.2.5.1. デプロイメントのベストプラクティス
- Red Hat OpenShift 分散トレースインスタンスの名前は一意でなければなりません。複数の Red Hat OpenShift 分散トレースプラットフォームインスタンスがあり、サイドカーが挿入されたエージェントを使用している場合、Red Hat OpenShift 分散トレースプラットフォームインスタンスには一意の名前が必要となり、挿入 (injection) のアノテーションはトレースデータを報告する必要のある Red Hat OpenShift 分散トレースプラットフォームインスタンスの名前を明示的に指定する必要があります。
マルチテナントの実装があり、テナントが namespace で分離されている場合は、Red Hat OpenShift 分散トレースプラットフォームインスタンスを各テナント namespace にデプロイします。
- デーモンセットとしてのエージェントは、マルチテナントインストールまたは Red Hat OpenShift Dedicated ではサポートされません。サイドカーとしてのエージェントは、これらのユースケースでサポートされる唯一の設定です。
-
Red Hat OpenShift Service Mesh の一部として分散トレースをインストールする場合、分散トレースリソースは、
ServiceMeshControlPlaneリソースと同じ namespace にインストールする必要があります。
永続ストレージの設定は、永続ストレージについて と、選択したストレージオプションに適した設定トピックを参照してください。
3.2.5.2. 分散トレースのデフォルト設定オプション
Jaeger カスタムリソース (CR) は、分散トレースプラットフォームリソースの作成時に使用されるアーキテクチャーおよび設定を定義します。これらのパラメーターを変更して、分散トレースプラットフォームの実装をビジネスニーズに合わせてカスタマイズできます。
Jaeger 汎用 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: {}
表3.1 Jaeger パラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
|
| オブジェクトの作成時に使用する API バージョン。 |
| |
|
|
| 作成する Kubernetes オブジェクトの種類を定義します。 |
|
|
|
| ||
|
OpenShift Container Platform は |
| オブジェクトの名前。 | 分散トレースプラットフォームインスタンスの名前。 |
|
|
| 作成するオブジェクトの仕様。 |
分散トレースプラットフォームインスタンスのすべての設定パラメーターが含まれます。すべての Jaeger コンポーネントの共通定義が必要な場合、これは |
| 該当なし |
| Jaeger デプロイメントストラテジー |
|
|
|
|
| |
|
| Agent を定義する設定オプション。 | ||
|
| Jaeger Collector を定義する設定オプション。 | ||
|
| トレース用のサンプリングストラテジーを定義する設定オプション。 | ||
|
|
ストレージを定義する設定オプション。すべてのストレージ関連のオプションは、 | ||
|
| Query サービスを定義する設定オプション。 | ||
|
| Ingester サービスを定義する設定オプション。 |
以下の YAML の例は、デフォルト設定を使用して Red Hat OpenShift 分散トレースプラットフォームのデプロイメントを作成するために最低限必要なものです。
最小限必要な dist-tracing-all-in-one.yaml の例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-all-in-one-inmemory
3.2.5.3. Jaeger Collector 設定オプション
Jaeger Collector は、トレーサーによってキャプチャーされたスパンを受信し、production ストラテジーを使用する場合はそれらを永続 Elasticsearch ストレージに書き込み、streaming ストラテジーを使用する場合は AMQ Streams に書き込むコンポーネントです。
Collector はステートレスであるため、Jaeger Collector のインスタンスの多くは並行して実行できます。Elasticsearch クラスターの場所を除き、Collector では設定がほとんど必要ありません。
表3.2 Operator によって使用される Jaeger Collector パラメーターを定義するためのパラメーター
| パラメーター | 説明 | 値 |
|---|---|---|
collector: replicas: | 作成する Collector レプリカの数を指定します。 |
整数 (例: |
表3.3 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 分散トレースプラットフォーム Operator は Kafka をセルフプロビジョニングします。 | |
options: log-level: | Collector のロギングレベル。 |
使用できる値は、 |
3.2.5.4. 分散トレースのサンプリング設定オプション
この Red Hat OpenShift 分散トレースプラットフォーム Operator は、リモートサンプラーを使用するように設定されているトレーサーに提供されるサンプリングストラテジーを定義するために使用できます。
すべてのトレースが生成される間に、それらの一部のみがサンプリングされます。トレースをサンプリングすると、追加の処理や保存のためにトレースにマークが付けられます。
これは、トレースがサンプリングの意思決定が行われる際に Envoy プロキシーによって開始されている場合に関連がありません。Jaeger サンプリングの意思決定は、トレースがクライアントを使用してアプリケーションによって開始される場合にのみ関連します。
サービスがトレースコンテキストが含まれていない要求を受信すると、クライアントは新しいトレースを開始し、これにランダムなトレース ID を割り当て、現在インストールされているサンプリングストラテジーに基づいてサンプリングの意思決定を行います。サンプリングの意思決定はトレース内の後続のすべての要求に伝播され、他のサービスが再度サンプリングの意思決定を行わないようにします。
分散トレースプラットフォームライブラリーは、以下のサンプラーをサポートします。
-
Probabilistic: サンプラーは、
sampling.paramプロパティーの値と等しいサンプリングの確率で、ランダムなサンプリングの意思決定を行います。たとえば、sampling.param=0.1を使用した場合は、約 10 のうち 1 トレースがサンプリングされます。 -
Rate Limiting: サンプラーは、リーキーバケット (leaky bucket) レートリミッターを使用して、トレースが一定のレートでサンプリングされるようにします。たとえば、
sampling.param=2.0を使用した場合は、1 秒あたり 2 トレースの割合で要求がサンプリングされます。
表3.4 Jaeger サンプリングのオプション
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
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
ユーザーによって指定される設定がない場合、分散トレースプラットフォームは以下の設定を使用します。
デフォルトのサンプリング
spec:
sampling:
options:
default_strategy:
type: probabilistic
param: 1
3.2.5.5. 分散トレースのストレージ設定オプション
spec.storage の下で Collector、Ingester、および Query サービスのストレージを設定します。これらの各コンポーネントの複数のインスタンスは、パフォーマンスと回復性を確保するために、必要に応じてプロビジョニングできます。
表3.5 分散トレースストレージを定義するために Red Hat OpenShift 分散トレースプラットフォーム Operator によって使用される一般的なストレージパラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
spec:
storage:
type:
| デプロイメントに使用するストレージのタイプ。 |
|
|
storage: secretname: |
シークレットの名前 (例: | 該当なし | |
storage:
options: {}
| ストレージを定義する設定オプション。 |
表3.6 Elasticsearch インデックスクリーナーのパラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
storage:
esIndexCleaner:
enabled:
| Elasticsearch ストレージを使用する場合は、デフォルトでジョブが作成され、古いトレースをインデックスからクリーンアップします。このパラメーターは、インデックスクリーナージョブを有効または無効にします。 |
|
|
storage:
esIndexCleaner:
numberOfDays:
| インデックスの削除を待機する日数。 | 整数値 |
|
storage:
esIndexCleaner:
schedule:
| Elasticsearch インデックスを消去する頻度に関するスケジュールを定義します。 | cron 式 | "55 23 * * *" |
3.2.5.5.1. Elasticsearch インスタンスの自動プロビジョニング
Jaeger カスタムリソースをデプロイする場合に、Red Hat OpenShift 分散トレースプラットフォーム Operator は、OpenShift Elasticsearch Operator を使用して、カスタムリソースファイルの ストレージ セクションで提供される設定に基づいて Elasticsearch クラスターを作成します。以下の設定が設定されている場合は、Red Hat 分散トレースプラットフォーム Operator は Elasticsearch をプロビジョニングします。
-
spec.storage:typeはelasticsearchに設定されている -
spec.storage.elasticsearch.doNotProvisionはfalseに設定されている -
spec.storage.options.es.server-urlsが定義されていない。つまり、Red Hat Elasticsearch Operator によってプロビジョニングされていない Elasticsearch インスタンスへの接続がない。
Elasticsearch をプロビジョニングする場には、Red Hat OpenShift 分散トレースプラットフォーム Operator は、Elasticsearch カスタムリソース 名 を Jaeger カスタムリソースの spec.storage.elasticsearch.name の値に設定します。spec.storage.elasticsearch.name に値を指定しない場合、Operator は elasticsearch を使用します。
制約
- namespace ごとにセルフプロビジョニングされた Elasticsearch インスタンスがある分散トレースプラットフォーム 1 つだけを使用できます。Elasticsearch クラスターは単一の 分散トレースプラットフォームインスタンスの専用のクラスターになります。
- namespace ごとに 1 つの Elasticsearch のみを使用できます。
Elasticsearch を OpenShift ロギングの一部としてインストールしている場合、Red Hat OpenShift 分散トレースプラットフォーム Operator はインストールされた OpenShift Elasticsearch Operator を使用してストレージをプロビジョニングできます。
以下の設定パラメーターは、セルフプロビジョニングされた Elasticsearch インスタンスに対するものです。これは、OpenShift Elasticsearch Operator を使用して Red Hat OpenShift 分散トレースプラットフォーム Operator によって作成されるインスタンスです。セルフプロビジョニングされた Elasticsearch の設定オプションは、設定ファイルの spec:storage:elasticsearch の下で指定します。
表3.7 Elasticsearch リソース設定パラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
elasticsearch:
properties:
doNotProvision:
| Elasticsearch インスタンスを Red Hat 分散トレースプラットフォーム Operator がプロビジョニングする必要があるかどうかを指定するために使用します。 |
|
|
elasticsearch:
properties:
name:
| Elasticsearch インスタンスの名前。Red Hat OpenShift 分散トレースプラットフォーム 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 分散トレースプラットフォーム Operator はノード数に基づいて最も適切なレプリケーションを自動的に判別します。 |
| |
elasticsearch: useCertManagement: | 分散トレースプラットフォームが Red Hat の証明書管理機能を使用するかどうかを指定するために使用します。この機能は、OpenShift Container Platform 4.7 の Red Hat OpenShift 5.2 向けのロギングサブシステムに追加されており、新しい Jaeger デプロイメントに推奨の設定です。 |
|
|
| 各 Elasticsearch ノードはこれより低い値のメモリー設定でも動作しますが、これは実稼働環境でのデプロイメントには推奨されません。実稼働環境で使用する場合は、デフォルトで各 Pod に割り当てる設定を 16Gi 未満にすることはできず、Pod ごとに最大 64Gi を割り当てることを推奨します。 | |||
実稼働ストレージの例
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: 1
storageClassName: gp2
size: 5Gi
resources:
requests:
cpu: 200m
memory: 4Gi
limits:
memory: 4Gi
redundancyPolicy: ZeroRedundancy
- 1
- 永続ストレージの設定。この場合、AWS
gp2のサイズは5Giです。値の指定がない場合、分散トレースプラットフォームはemptyDirを使用します。OpenShift Elasticsearch Operator は、分散トレースプラットフォームインスタンスで削除されないPersistentVolumeClaimおよびPersistentVolumeをプロビジョニングします。同じ名前および namespace で分散トレースプラットフォームインスタンスを作成する場合は、同じボリュームをマウントできます。
3.2.5.5.2. 既存の Elasticsearch インスタンスへの接続
分散トレースを使用したストレージには、既存の Elasticsearch クラスターを使用できます。外部 Elasticsearch インスタンスとも呼ばれる既存の Elasticsearch クラスターは、Red Hat 分散トレースプラットフォーム Operator または Red Hat Operator によってインストールされなかったインスタンスです。
以下の設定が指定されている場合に、Jaeger カスタムリソースをデプロイすると、Red Hat 分散トレースプラットフォーム Operator は Elasticsearch をプロビジョニングしません。
-
spec.storage.elasticsearch.doNotProvisionがtrueに設定されている -
spec.storage.options.es.server-urlsに値がある -
spec.storage.elasticsearch.nameに値がある場合、または Elasticsearch インスタンス名がelasticsearchの場合。
Red Hat OpenShift 分散トレースプラットフォーム Operator は、spec.storage.elasticsearch.name で指定された Elasticsearch インスタンスを使用して Elasticsearch に接続します。
制約
- 分散トレースプラットフォームで OpenShift Container Platform ロギング Elasticsearch インスタンスを共有したり、再利用したりすることはできません。Elasticsearch クラスターは単一の 分散トレースプラットフォームインスタンスの専用のクラスターになります。
Red Hat は、外部 Elasticsearch インスタンスのサポートを提供しません。カスタマーポータル でテスト済み統合マトリックスを確認できます。
以下の設定パラメーターは、外部 Elasticsearch インスタンスとして知られる、既存の Elasticsearch インスタンス向けです。この場合は、カスタムリソースファイルの spec:storage:options:es で、Elasticsearch の設定オプションを指定します。
表3.8 汎用 ES 設定パラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
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 |
表3.9 ES データレプリケーションパラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
es: num-replicas: | Elasticsearch のインデックスごとのレプリカ数。 | 1 | |
es: num-shards: | Elasticsearch のインデックスごとのシャード数。 | 5 |
表3.10 ES インデックス設定パラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
es: create-index-templates: |
|
|
|
es: index-prefix: | 分散トレースプラットフォームインデックスのオプション接頭辞。たとえば、これを production に設定すると、production-tracing-*という名前のインデックスが作成されます。 |
表3.11 ES バルクプロセッサー設定パラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
es:
bulk:
actions:
| バルクプロセッサーがディスクへの更新のコミットを決定する前にキューに追加できる要求の数。 | 1000 | |
es:
bulk:
flush-interval:
|
| 200ms | |
es:
bulk:
size:
| バルクプロセッサーがディスクへの更新をコミットするまでに一括要求が発生する可能性のあるバイト数。 | 5000000 | |
es:
bulk:
workers:
| 一括要求を受信し、Elasticsearch にコミットできるワーカーの数。 | 1 |
表3.12 ES TLS 設定パラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
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) ファイルも読み込みます。 |
表3.13 ES アーカイブ設定パラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
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: | 分散トレースプラットフォームインデックスのオプション接頭辞。たとえば、これを 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
以下の例は、ボリュームからマウントされる 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 1
index-prefix: my-prefix
tls: 2
ca: /es/certificates/ca.crt
secretName: tracing-secret 3
volumeMounts: 4
- 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
- すべてのストレージコンポーネントにマウントされるボリュームのマウントとボリューム。
3.2.5.6. Elasticsearch を使用した証明書の管理
Red Hat Elasticsearch Operator を使用して、証明書を作成および管理できます。Red Hat Elasticsearch Operator を使用して証明書を管理すると、複数の Jaeger Collector で単一の Elasticsearch クラスターを使用することもできます。
Elasticsearch を使用した証明書の管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
バージョン 2.4 以降、Red Hat OpenShift 分散トレースプラットフォーム Operator は、Elasticsearch カスタムリソースで次のアノテーションを使用して、証明書の作成を Red Hat 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
前提条件
- OpenShift Container Platform 4.7
- Red Hat OpenShift のロギングサブシステム: 5.2
-
Elasticsearch ノードと Jaeger インスタンスは同じ namespace にデプロイする必要があります。(例:
traceing-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
Red Hat OpenShift 分散トレースプラットフォーム Operator は、Elasticsearch カスタムリソース 名 を Jaeger カスタムリソースの spec.storage.elasticsearch.name の値に設定します。
証明書は Red Hat Operator によってプロビジョニングされ、Red Hat 分散トレースプラットフォーム Operator が証明書を挿入します。
3.2.5.7. クエリー設定オプション
Query とは、ストレージからトレースを取得し、ユーザーインターフェイスをホストしてそれらを表示するサービスです。
表3.14 Query を定義するために Red Hat OpenShift 分散トレースプラットフォーム Operator によって使用されるパラメーター
| パラメーター | 説明 | 値 | デフォルト値 |
|---|---|---|---|
spec:
query:
replicas:
| 作成する Query レプリカの数を指定します。 |
整数 (例: |
表3.15 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
3.2.5.8. Ingester 設定オプション
Ingester は、Kafka トピックから読み取り、Elasticsearch ストレージバックエンドに書き込むサービスです。allInOne または production デプロイメントストラテジーを使用している場合は、Ingester サービスを設定する必要はありません。
表3.16 Ingester に渡される Jaeger パラメーター
| パラメーター | 説明 | 値 |
|---|---|---|
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
3.2.6. サイドカーコンテナーの挿入
Red Hat OpenShift 分散トレースプラットフォームは、アプリケーションの Pod 内のプロキシーサイドカーコンテナーを使用してエージェントを提供します。Red Hat OpenShift 分散トレースプラットフォーム Operator は、Agent サイドカーを Deployment ワークロードに挿入できます。自動のサイドカーコンテナー挿入を有効にしたり、手動で管理したりできます。
3.2.6.1. サイドカーコンテナーの自動挿入
Red Hat OpenShift 分散トレースプラットフォーム Operator は、Jaeger Agent サイドカーを Deployment ワークロードに挿入できます。サイドカーの自動挿入を有効にするには、sidecar.jaegertracing.io/inject アノテーションセットを文字列 true または $ oc get jaegers を実行して返される分散トレースプラットフォームインスタンス名に追加します。true を指定する場合、デプロイメントとして単一の分散トレースプラットフォームインスタンスのみが同じ namespace に存在する必要があります。そうでない場合に、Operator は使用する分散トレースプラットフォームインスタンスを判別することができません。デプロイメントの特定の分散トレースプラットフォームインスタンス名は、その namespace に適用される true よりも優先されます。
以下のスニペットは、サイドカーコンテナーを挿入する単純なアプリケーションを示しています。エージェントは、同じ namespace で利用可能な単一の分散トレースプラットフォームインスタンスを参照します。
サイドカーの自動挿入の例
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
annotations:
"sidecar.jaegertracing.io/inject": "true" 1
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: acme/myapp:myversion
- 1
- 文字列
trueまたは Jaeger インスタンスの名前のいずれかに設定します。
サイドカーコンテナーが挿入されると、エージェントは localhost のデフォルトの場所でアクセスできます。
3.2.6.2. サイドカーコンテナーの手動挿入
Red Hat OpenShift 分散トレースプラットフォーム Operator は、Jaeger Agent サイドカーを Deployment ワークロードに自動的に挿入することしかできません。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
その後、エージェントは localhost のデフォルトの場所でアクセスできます。