Hitachi

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


9.2.1 概要

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

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

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

図9‒7 分散トレースの概要

[図データ]

〈この項の構成〉

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

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

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

OpenCensusは送信失敗時に例外を挙げたり、状態を変えたりしないため、HMP-PCTOのコンポーネント内ではOpenCensusの送信失敗を検知する方法はありません。このため、HMP-PCTOの外部(シェルスクリプト)からOpenCensusの送信失敗を検知する手段、およびHMP-PCTOの分散トレース機能を抑止する手段が必要になります。

しかし、外部からの検知方法、および外部から分散トレース機能を抑止する方法について次のようなリスクがあります。

  • Jaeger-collectorではない別のエンドポイントを送信先に指定した場合に、Jaeger-collectorの場合と同じステータスコードが返ると、Jaeger-collectorが正常であると誤判断する。

  • 分散トレース機能を抑止する方法として、ユーザが誤って直接HMP-PCTOのエンドポイントにアクセスすることで分散トレース機能が意図しないで抑止されてしまう。

そのため、HMP-PCTOでは次の対策を取ります。

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

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

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

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