第4章 distributed tracing platform (Tempo)
4.1. distributed tracing platform (Tempo) のインストール
distributed tracing platform (Tempo) のインストール手順は以下のとおりです。
- サポートされているオブジェクトストレージを設定します。
- Tempo Operator をインストールします。
- オブジェクトストレージ認証情報のシークレットを作成します。
- TempoStack インスタンスの namespace を作成します。
-
TempoStack
カスタムリソースを作成して、少なくとも 1 つの TempoStack インスタンスをデプロイします。
4.1.1. オブジェクトストレージのセットアップ
サポートされているオブジェクトストレージを設定する際に、次の設定パラメーターを使用できます。
ストレージプロバイダー |
---|
Secret パラメーター |
|
MinIO |
MinIO Operator を参照してください。
|
Amazon S3 |
|
Microsoft Azure Blob Storage |
|
Google Cloud Storage on Google Cloud Platform (GCP) |
|
4.1.2. Web コンソールから distributed tracing platform (Tempo) をインストールする
Web コンソールの Administrator ビューから、distributed tracing platform (Tempo) をインストールできます。
前提条件
-
cluster-admin
ロールを持つクラスター管理者として、OpenShift Container Platform Web コンソールにログインしている。 -
Red Hat OpenShift Dedicated の場合、
dedicated-admin
ロールを持つアカウントを使用してログインしている。 - サポート対象のオブジェクトストレージプロバイダーを使用している (Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure Blob Storage、Google Cloud Storage)。
手順
Tempo Operator をインストールします。
-
Operators
OperatorHub に移動し、 Tempo Operator
を検索します。 OpenShift Operator for Tempo
Install Install View Operator で、Tempo Operator を選択します。 重要デフォルトのプリセットで Operator がインストールされます。
-
Update channel
stable -
Installation mode
All namespaces on the cluster -
Installed Namespace
openshift-tempo-operator -
Update approval
Automatic
-
Update channel
- インストール済み Operator ページの Details タブの ClusterServiceVersion details で、インストールの Status が Succeeded であることを確認します。
-
Operators
-
Home
Projects Create Project に移動し、次の手順で作成する TempoStack インスタンスのプロジェクトを作成します。 TempoStack インスタンス用に作成したプロジェクトで、オブジェクトストレージバケットのシークレットを作成します。Workloads
Secrets Create From YAML に移動します。 Amazon S3 および MinIO ストレージのシークレット例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque
TempoStack インスタンスを作成します。
注記同じクラスター上の別々のプロジェクトに、複数の TempoStack インスタンスを作成できます。
-
Operators
Installed Operators に移動します。 -
TempoStack
Create TempoStack YAML view の順に選択します。 YAML view で、
TempoStack
カスタムリソース (CR) をカスタマイズします。apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: <secret-name> 1 type: <secret-provider> 2 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
AWS S3 および MinIO ストレージの TempoStack CR の例
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
この例にデプロイされたスタックは、HTTP および OpenTelemetry Protocol (OTLP) 経由で Jaeger Thrift を受信するように設定されています。これにより、Jaeger UI でデータが可視化されます。
- Create を選択します。
-
Operators
検証
- Project: ドロップダウンリストを使用して、TempoStack インスタンスのプロジェクトを選択します。
-
Operators
Installed Operators に移動して、TempoStack インスタンスの Status が Condition: Ready であることを確認します。 -
Workloads
Pods に移動して、TempoStack インスタンスのすべてのコンポーネント Pod が稼働していることを確認します。 Tempo コンソールにアクセスします。
-
Networking
Routes に移動し、Ctrl+F で tempo
を検索します。 - Location 列で URL を開き、Tempo コンソールにアクセスします。
Web コンソールでクラスター管理者の認証情報を使用するために、Log In With OpenShift を選択します。
注記Tempo コンソールをインストールした直後は、Tempo コンソールにトレースデータは表示されません。
-
Networking
4.1.3. CLI を使用して distributed tracing platform (Tempo) をインストールする
コマンドラインから distributed tracing platform (Tempo) をインストールできます。
前提条件
cluster-admin
ロールを持つクラスター管理者によるアクティブな OpenShift CLI (oc
) セッション。ヒント-
OpenShift CLI (
oc
)のバージョンが最新であり、OpenShift Container Platform バージョンと一致していることを確認してください。 oc login
を実行します。$ oc login --username=<your_username>
-
OpenShift CLI (
- サポート対象のオブジェクトストレージプロバイダーを使用している (Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure Blob Storage、Google Cloud Storage)。
手順
Tempo Operator をインストールします。
以下のコマンドを実行して、Tempo Operator のプロジェクトを作成します。
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: labels: kubernetes.io/metadata.name: openshift-tempo-operator openshift.io/cluster-monitoring: "true" name: openshift-tempo-operator EOF
以下のコマンドを実行して、Operator グループを作成します。
$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-tempo-operator namespace: openshift-tempo-operator spec: upgradeStrategy: Default EOF
以下のコマンドを実行して、サブスクリプションを作成します。
$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: tempo-product namespace: openshift-tempo-operator spec: channel: stable installPlanApproval: Automatic name: tempo-product source: redhat-operators sourceNamespace: openshift-marketplace EOF
以下のコマンドを実行して、Operator のステータスを確認します。
$ oc get csv -n openshift-tempo-operator
次のコマンドを実行して、後続の手順で作成する TempoStack インスタンス用に選択したプロジェクトを作成します。
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> EOF
次のコマンドを実行して、TempoStack インスタンス用に作成したプロジェクトでオブジェクトストレージバケットのシークレットを作成します。
$ oc apply -f - << EOF <object_storage_secret> EOF
Amazon S3 および MinIO ストレージのシークレット例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque
TempoStack インスタンス用に作成したプロジェクトに TempoStack インスタンスを作成します。
注記同じクラスター上の別々のプロジェクトに、複数の TempoStack インスタンスを作成できます。
TempoStack
カスタムリソース (CR) をカスタマイズします。apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: name: <secret-name> 1 type: <secret-provider> 2 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
AWS S3 および MinIO ストレージの TempoStack CR の例
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: project_of_tempostack_instance spec: storageSize: 1Gi storage: secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
この例にデプロイされたスタックは、HTTP および OpenTelemetry Protocol (OTLP) 経由で Jaeger Thrift を受信するように設定されています。これにより、Jaeger UI でデータが可視化されます。
次のコマンドを実行して、カスタマイズされた CR を適用します。
$ oc apply -f - << EOF <TempoStack_custom_resource> EOF
検証
次のコマンドを実行して、すべての TempoStack
components
のstatus
がRunning
、conditions
がtype: Ready
になっていることを確認します。$ oc get tempostacks.tempo.grafana.com simplest -o yaml
次のコマンドを実行して、すべての TempoStack コンポーネント Pod が稼働していることを確認します。
$ oc get pods
Tempo コンソールにアクセスします。
以下のコマンドを実行してルートの詳細をクエリーします。
$ export TEMPO_URL=$(oc get route -n <control_plane_namespace> tempo -o jsonpath='{.spec.host}')
-
Web ブラウザーで
https://<route_from_previous_step>
を開きます。 Web コンソールのクラスター管理者認証情報を使用してログインします。
注記Tempo コンソールをインストールした直後は、Tempo コンソールにトレースデータは表示されません。