Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


10.3.1 概要

HMP-PCTOは1つのトランザクション内で、Orchestrator、Mediator、Entity-ServiceまたはEntity-Module、Participantなどのコンポーネントがお互いに通信し動作しており、処理の流れが複雑です。HMP-PCTOは、トランザクションの開始から終了までの間の各コンポーネントでの処理の情報(開始時刻や実行時間など)を関連づけて、分散トレース情報として取得します。障害発生時に分散トレース情報を確認することでトランザクションの処理の複雑な流れを把握でき、問題のあった処理の特定を容易化します。

分散トレースはHMP-PCTOがOpenTelemetryを使用して取得し、分散トレース基盤であるJaegerに送信します。Jaeger単体ではデータの永続化の機能を持たないため、データの永続化が必要です。データを永続化しない場合、分散トレースの情報が失われ、HMP-PCTO利用者およびサポート部署共に分散トレースを使用しての調査ができません。そのため分散トレースの構成は次のようになります。

分散トレースの永続化手段としてElasticsearchを使います。HMP-PCTOの各コンポーネントの処理でOpenTelemetryを使用してトレース情報を取得し、Jaeger-collectorにトレース情報を送信します。Jaeger-collectorはElasticsearchにデータを送信しデータを永続化します。分散トレースを参照する際はJaegerのWeb UI上で参照します。この時Jaeger-queryがElasticsearchからトレース情報を取得し、JaegerのWeb UI上に表示します。JaegerのWeb UI上でトランザクションの一覧、およびトランザクションごとの処理の流れを確認できます。次に示す図はSQL-Participantを使用する場合です。TCC-Participantを使用する場合、Entity-ServiceをEntity-Moduleと読み替えてください。

図10‒11 分散トレースの概要

[図データ]

重要

分散トレース機能で付与するヘッダ

HMP-PCTOでは、Spanの親子関係やサンプリング有無などの情報を各コンポーネントに伝搬させるために、ほかのコンポーネントへのリクエストに特定のヘッダを付与することで、分散トレーシングを実現します。

なお、ヘッダの情報が変更されると、正しい情報が伝搬できなくなります。そのため、ほかの製品で同様のヘッダが付与されないようにしてください。

付与するヘッダを次に示します。

  • ヘッダ名がtraceparentの場合

    トレースID、スパンID、およびサンプリング有無が付与されます。

  • ヘッダ名がtracestateの場合

    OpenTelemetry固有のデータが付与されます。

〈この項の構成〉

(1) 分散トレースの送信に失敗したとき

(a) 分散トレース送信失敗時の検知、および分散トレース機能の抑止について

HMP-PCTOで、分散トレースを定期的に分散トレース基盤へ送信しますが、エンドポイントが機能していない、送信先エンドポイントのパラメタ指定値が誤っている、などの要因で送信に失敗した場合、OpenTelemetryは警告メッセージを標準出力に出力します。このため、標準出力には定期的に警告メッセージが出力されることになります。

ユーザの運用での対処として、分散トレース基盤への送信失敗時の警告メッセージが、標準出力に出力されているかどうかを確認します。警告メッセージが出力されていた場合は、送信先定義を見直し、分散トレース基盤が正常起動していることを確認してください。詳細については、「10.6 HMP-PCTOの障害調査」を参照してください。

(b) 分散トレース送信失敗時、トレース情報を一時的に別の出力先に変更することについて

(a) 分散トレース送信失敗時の検知、および分散トレース機能の抑止について」にあるとおり、ユーザが運用で対処して分散トレース送信失敗を回復する必要があるため、HMP-PCTOではトレース情報の出力先を別の出力先に切り替えません。

そのため、ユーザが運用で対処するまでは分散トレースがJaegerに送信されず、トレース情報がロストするため注意してください。