- はじめに

- ジプキン

- @opentelemetry/api

- 主なコンポーネント

- 前提条件

- ネットワーク要件

- Dockerによる導入の構成

- モニタリングプロファイルの有効化

- Zipkinコンテナの確認

- サービスでのトレースの有効化

- 構成の読み込み階層

- ポッド固有の設定

- 使用例

- サンプル シナリオ

- グローバル設定

- 使用例

- サンプル シナリオ

- フォールバック設定

- 使用例

- トレース設定の設定

- 構成のプロパティ

- 設定変更の適用

- Helm Upgradeコマンド

- KubernetesおよびHelmの導入

- 値の監視の有効化

- Zipkinサービスの展開

- 導入の検証

- サービスステータスの確認

- アクセスとモニタリング

- Zipkinダッシュボードへの1ノードアクセス

- 3ノードKubernetesのZipkinダッシュボードへのアクセス

- Zipkin UIの使用

- トレーサとスパン

はじめに

ジプキン

Zipkinは、サービスアーキテクチャの遅延問題のトラブルシューティングに必要なタイミングデータの収集を支援する分散型トレースシステムです。このガイドでは、Zipkinを展開し、BPAプラットフォームサービス間でトレースを有効にする手順について説明します。

@opentelemetry/api

@opentelemetry/apiパッケージは、Node.jsのOpenTelemetryのコアAPIです。トレース、スパン、およびコンテキスト伝達を作成および管理するためのインターフェイスとクラスを提供します。このパッケージを使用すると、開発者はトレースやメトリックなどのテレメトリデータを収集するためにアプリケーションをインストルメント化し、Zipkinなどのバックエンドにエクスポートして分析できます。

主なコンポーネント

Zipkinの主なコンポーネントは次のとおりです。

- Zipkin Server：セントラルトレースコレクタおよびユーザインターフェイス(UI)

- OpenTelemetry：トレース用のインストルメンテーションライブラリ

- Elasticsearch：トレースデータのストレージバックエンド

- Secure Sockets Layer(SSL)およびTransport Layer Security(TLS)：セキュアな通信を提供します。

前提条件

ネットワーク要件

Zipkinを配備してトレースを有効にするには、次のネットワーク要件が必要です。

- ポート9412:Zipkin Hypertext Transfer Protocol Secure(HTTPS)APIエンドポイント

- ポート9411:Zipkin Hypertext Transfer Protocol(HTTP)管理エンドポイント

- ポート9200:Elasticsearchクラスタへのアクセス

Dockerによる導入の構成

モニタリングプロファイルの有効化

1. 次のパスからBPA 1ノードDockerを起動します。
cd /opt/bpa/bpa-{build_version}/scripts

2. 次のコマンドを使用して、モニタリングオプションを指定してbashスクリプトを実行します。
./startbpa.1node.sh monitoring

Zipkinコンテナの確認

1. コンテナのステータスを確認するには、次のコマンドを実行します。
docker ps | grep tracers-zipkin

2. Zipkinコンテナのログを表示するには、次のコマンドを実行します。
docker logs tracers-zipkin -f

サービスでのトレースの有効化

BPAアプリケーションは、「tracingConfig.json」ファイルを使用した柔軟なトレース設定をサポートしています。システムは、さまざまな導入シナリオに対応するために、3つのレベルの優先順位を持つ階層型構成の読み込みメカニズムを実装しています。

構成の読み込み階層

アプリケーションは、優先順位に基づいて次の順序でトレース設定をロードします。

ポッド固有の設定

パス:bpa-helm-chart/charts/<サービス名>/public_conf

使用例

- 個々のポッド固有のトレース設定

- 特定のサービスまたはポッドに対して異なるトレース設定が可能

- 手動配置が必要：ユーザは、このファイルをポッドのフォルダパスに手動で配置する必要があります：bpa-helm-chart/charts/<サービス名>/public_conf

サンプル シナリオ

- 重要なサービスのみの詳細トレースを有効にする

- マイクロサービスごとにサンプリングレートが異なる

- ポッドのトラブルシューティングのためのデバッグ固有のトレース

グローバル設定

パス:bpa-helm-chart/bpa/conf/common/globals/tracingConfig.json

使用例

- すべてのコンテナとポッドのグローバルトレース設定

- 一元化されたトレース管理

- グローバルな影響：このファイルに対する変更は、導入環境内のすべてのポッドに影響します。

サンプル シナリオ

- BPA展開全体でトレースを有効または無効にする

- 本番環境に対して統一されたトレーシング・ポリシーを設定

- コンプライアンスとモニタリングの要件の一元化

フォールバック設定

パス：../conf/tracingConfig.json（フォールバック）

使用例

- アプリケーションにバンドルされているデフォルトのトレース設定

- 開発環境の既定値

- トレース設定の欠落が原因でアプリケーションが失敗しないようにします。

コンフィギュレーションファイルの形式が正しくない、または読み取り不能である場合、システムは次の処理を行います。

- エラーを記録します。

- トレースエラーを回避するため、既定値は{enable: false}です

- アプリケーションの起動を継続

トレース設定の設定

ポッドのフォルダパスにある次のコンテンツを使用して、「tracingConfig.json」ファイルを作成または更新します。

bpa-helm-chart/charts/<サービス名>/public_conf/

例:

- トレースを有効にするには
{

"enable": true

}

- トレースを無効にするには：
{

"enable": false

}

構成のプロパティ

- enable (boolean) （必須）：アプリケーションのトレースを有効にするか無効にするかを制御します

- true：分散トレースを有効にします。

- アプリケーションはトレースヘルパーを初期化します

- トレースが収集され、設定されたバックエンドに送信されます。

- パフォーマンスモニタリングおよびデバッグ機能の有効化

- false：分散トレースを無効にします。

- アプリケーションのパフォーマンスに対するトレースのオーバーヘッドなし

- トレースデータの収集または送信なし

- トレース機能なしでアプリケーションを実行

設定変更の適用

Helm Upgradeコマンド

「tracingConfig.json」ファイルを適切な場所に配置した後、Helm upgradeコマンドを使用して変更を適用します。

helm upgrade bpa-rel --namespace bpa-ns /opt/bpa-helm-chart

コマンドの内訳：

- helm upgrade：既存のHelmリリースを更新します。

- bpa-rel:BPA Helmリリースの名前

- —namespace bpa-ns: BPAがデプロイされるKubernetes名前空間を指定します。

- /opt/bpa-helm-chart: BPA Helmグラフディレクトリへのパス

KubernetesおよびHelmの導入

値の監視の有効化

次のヘルム・チャート・パスで、「values.yaml」ファイルのヘルム値を編集して監視を有効にします：

yaml

global:

enableMonitoring: true

Zipkinサービスの展開

次のHelmコマンドを使用して、Zipkinサービスを配備します。

helm install bpa-rel --create-namespace --namespace bpa-ns

導入の検証

展開を確認するには、次のコマンドを使用します。

kubectl get pods -n bpa-ns | grep tracers-zipkin

kubectl get svc -n bpa-ns | grep tracers-zipkin

サービスステータスの確認

ポッドログを表示するには、次のコマンドを使用します。

kubectl logs -n bpa-ns deployment/tracers-zipkin -f

サービスエンドポイントを確認するには、次のコマンドを使用します。

kubectl describe svc tracers-zipkin -n bpa-ns

アクセスとモニタリング

Zipkinダッシュボードへの1ノードアクセス

URL:https://<サーバIP>:9412/zipkin/

3ノードKubernetesのZipkinダッシュボードへのアクセス

URL:https://<cluster-ip>:30900/zipkin/

Zipkinダッシュボード

Zipkin UIの使用

Zipkinダッシュボードには、トレースを検索して視覚化するためのUIが用意されています。主なコンポーネントは次のとおりです。

- サービス名のドロップダウン：サービス名でトレースをフィルタリングします。

Service Name

Service Name

- 時間範囲セレクタ：トレース検索の時間ウィンドウを定義します。

時間範囲セレクタ

- トレースリスト：検索条件に一致するトレースのリストを表示します

トレースリスト

- Trace Timeline：トレース内の時間間隔（スパン）を視覚的に表現

トレースタイムライン

- スパンの詳細：期間、タグ、ログを含む各スパンの詳細ビュー。

スパンの詳細

トレーサとスパン

トレーサは、スパンの作成と管理を行います。トレーサは、特定のサービスまたはアプリケーションコンポーネントに関連付けられます。スパンは、トレース内の作業または操作の単一の単位を表します。各スパンには、操作名、開始時刻と終了時刻、属性、他のスパンとの親子関係などの情報が含まれます。