Hitachi

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


9.1.1 取得する情報および各情報の紐づけ方法

HMP-PCTOのトラブルシュート機能や連携製品で取得する情報、およびこれらの情報の紐づけ方法について説明します。

〈この項の構成〉

(1) 取得する情報

次の要件を満たすため、HMP-PCTOは最低限必要な情報取得先として次の表の情報を取得します。

HMP-PCTOにおける「ログ」は、ユーザに何が起こっているかを知らせる情報を文章として出力し、「トレース」はユーザにどこで問題が発生しているかを追跡するための情報を出力します。

分散トレースのイメージを次の図に示します。この図は分散トレースのイメージを表しているため、実際の処理シーケンスとは異なります。

図9‒1 分散トレースのイメージ(SQL-Participantを使用する場合)

[図データ]

図9‒2 分散トレースのイメージ(TCC-Participantを使用する場合)

[図データ]

要件「情報を永続化できること」を満たすため、HMP-PCTOは分散トレースおよび標準出力の情報をElasticsearchに送り永続化します。また、メトリクスの情報を永続化します。メトリクスの情報についてもElasticsearchに送り永続化します。障害が発生するケースに備えて、Elasticsearchはクラスタ構成を可能とします。クラスタはElasticsearchクラスタを制御するマスターノード群と情報を保持するデータノード群で構成されます。本バージョンではこの構成だけをサポートします。

分散トレースの情報は、ファイルにエクスポートする際に特定の種別の情報を抽出できます。例えば、SQL-Participant使用時の場合、XA関数発行時のトレースに絞って出力することで、1トランザクション当たりのXA関数の処理時間の合計を抽出できます。SQL-Participant使用時の場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートのイメージを次の図に示します。

図9‒3 HMP-PCTO 分散トレース・標準出力の送信およびエクスポート(SQL-Participantを使用する場合)

[図データ]

TCC-Participant使用時の場合、API Adapter発行時のトレースに絞って出力することで、1トランザクションあたりの処理時間の合計を抽出できます。TCC-Participantを使用する場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。

図9‒4 HMP-PCTO 分散トレース・標準出力の送信およびエクスポート(TCC-Participantを使用する場合)

[図データ]

要件「システムへのリソースおよび性能の影響を最小限にすること」を満たすため、「表9‒1 HMP-PCTOの情報取得先」以外の情報は、連携製品側で取得する情報を使用します。HMP-PCTOの連携製品で取得する情報は次のとおりです。

表9‒2 連携製品で取得する情報

項番

名称

説明

1

DBサーバ(PostgreSQL)のログファイル

XA関数に対応したDBサーバ(PostgreSQL)側のログを取得します。

2

EADSの各種トラブルシュートファイル

EADSサーバでレスポンスの低下が起こっている場合、ログ情報のエラーメッセージや統計情報を使用します。トライアル版では取得できません。

3

Tomcatのアクセスログ

Orchestrator、Entity-ServiceまたはEntity-ModuleのREST API通信についてヘッダ情報を取得します。

4

uCosminexus Application Runtime with Java for Spring Bootのログ

Tomcatに問題(スローダウンによるレスポンス遅延など)が発生した際に取得します。

HMP-PCTOの取得先ごとに、調査に必要な情報は次のとおりです。

表9‒3 取得先ごとに調査で必要な情報

項番

情報取得先

名称

取得する情報

1

メッセージログ

  • エラー、警告の情報

  • スタックトレースの情報

<例>
  • EADS APIエラー時のキー名・実行結果の情報

  • ConsensusLogアクセス時のエラーの情報

  • gRPC通信失敗時の情報

2

分散トレース

各サービスでの処理時間、呼び出し関係と、付随する情報(種別など)

<例>
  • XA関数名、処理結果、DBのログと紐づけするための情報(ブランチXID)

  • EADSへのアクセスで遅延発生した場合の処理時間、処理範囲

  • ConsensusLogへのアクセス時に遅延発生した場合の処理時間、処理範囲

3

メトリクス

  • システムの利用状況

  • Java VMの利用状況

  • HMP-PCTOの性能を評価するための指標

<例>
  • CPU使用率

  • メモリ使用量

  • トランザクション数

4

DBサーバのログファイル

HMP-PCTO側で発行したXA関数に対応したログエントリ(HMP-PCTOの情報と紐づけ可能なブランチXIDの情報が記録されている)

5

EADSの各種トラブルシュートファイル

  • ログ情報(異常時)

  • 統計情報(レスポンス低下時)

上記のファイルは、トライアル版では取得できません。

6

Tomcatのアクセスログ

REST API通信のヘッダ情報(HMP-PCTOの情報と紐づけ可能なブランチXIDの情報が記録されている)

7

uCosminexus Application Runtime with Java for Spring Bootのログ

uCosminexus Application Runtime with Java for Spring Bootのトレース情報(HTTPリクエストのトレース)

uCosminexus Application Runtime with Java for Spring Bootのトレース情報としてHTTPリクエストURIが出力されますが、HMP-PCTOの情報との紐づけは、Tomcatのアクセスログの情報を用いて行います。

(2) 各情報の紐づけ方法

サポート部署が調査する上で障害原因の究明を行うために、各情報を紐づける必要があります。

HMP-PCTOで取得するメッセージログ・分散トレース、および連携製品で取得する情報の紐づけ情報として、ブランチXIDの情報を使用します(ブランチXIDにはルートXIDの情報を含んでいます)。

それぞれの紐づけ方法について説明します。

分散トレースの情報から障害(エラーおよびレスポンス遅延)個所を切り分け、その後、何が起こっていたかをメッセージログなどの情報から抽出するための紐づけ情報として、次の分散トレース情報でブランチXIDを取得します。

なお、OrchestratorからMediatorへの通信、およびMediatorからParticipantへの通信(分散合意結果通知)にはブランチXIDがないため取得できるのはルートXIDだけとなりますが、ブランチXIDにはルートXIDの情報を含むため、ルートXIDの情報で紐づけできます。

ブランチXIDは、次の1.〜3.の情報でも取得します。4.〜6.は、連携製品側の情報として記録されています。4.、5.については、ブランチXIDの情報が記録されているため、紐づけできます。

  1. HMP-PCTOのメッセージログ(エラー時)

    異常時にPCTOのメッセージログに出力されるエラーメッセージに、ブランチXIDを含めます。

  2. HMP-PCTOでXA関数発行時に取得する分散トレース情報

    XA関数とブランチXIDの情報を取得します。

  3. HMP-PCTOでEADS API発行時に取得する分散トレース情報

    EADS APIのキー情報とConsensusIDを取得します。ConsensusIDはルートXIDの16進数表記であるため、ブランチXIDと紐づけできます。なお、トライアル版ではEADS API発行時に取得する分散トレース情報は取得できません。

  4. 連携製品側の情報

    4-1:連携製品側の情報(SQL-Participant使用時):DBログ情報

    XA関数とブランチXIDの情報が記録されています。

    4-2:連携製品側の情報(TCC-Participant使用時):API Adapterアクセスログ情報

    API AdapterアクセスとブランチXIDの情報が記録されています。

  5. 連携製品側の情報:Tomcatアクセスログ

    REST API通信とブランチXIDの情報が記録されています。

  6. 連携製品側の情報:EADSトラブルシュート情報

    ブランチXIDの情報などキーとなる情報は記録されません。このため、時刻をキーにしてEADSトラブルシュート情報の調査を行います。なお、トライアル版ではEADSトラブルシュート情報は取得できません。

上記で述べた、分散トレースとそのほかの情報との紐づけのイメージについて次の図に示します。

図9‒5 HMP-PCTO各情報の紐づけのイメージ(SQL-Participantを使用する場合)

[図データ]

図9‒6 HMP-PCTO各情報の紐づけのイメージ(TCC-Participantを使用する場合)

[図データ]

ユーザは、HMP-PCTOが取得する分散トレースの情報と、連携製品の情報をブランチXIDで紐づけて調査できます。なお、HMP-PCTOが取得する各分散トレース情報(「図9‒5 HMP-PCTO各情報の紐づけのイメージ(SQL-Participantを使用する場合)」、「図9‒6 HMP-PCTO各情報の紐づけのイメージ(TCC-Participantを使用する場合)」の緑枠部分)は、分散トレース固有の紐づけ情報(トレースID)によって関連づけられるため、ユーザはJaeger-UIなどで一貫した情報として見ることができます。

(3) 性能評価の対象と取得する情報

HMP-PCTOを使用した分散システムで、ユーザが性能を評価する対象は次のとおりです。

表9‒4 性能評価の対象

項番

評価対象

説明

1

システムの利用状況

Kubernetesなどのコンテナ環境における性能

<例>CPU使用率

2

Java VMの利用状況

Javaプロセス固有の性能

<例>Java Heap、GC

3

HMP-PCTOの性能を評価するための指標

gRPC通信の性能

HMP-PCTOの各コンポーネント間のgRPC通信の性能

<例>gRPC通信の処理時間

4

非同期処理の性能

別スレッドで実行する非同期タスクの性能

<例>非同期タスクの実行回数・時間、未実行の(キューイングされている)数

5

機能固有の稼働統計情報

HMP-PCTOのコンポーネントごとに固有で取得する稼働統計情報

<例>

Mediatorの例:ProposalLog、ConsesnusLogの状態ごとの件数

Participantの例:トランザクションの件数・時間

要件「ユーザがHMP-PCTOの性能を評価するための情報を取得すること」を満たすため、HMP-PCTOは、最低限必要な情報取得先として次の表の情報を取得します。

表9‒5 HMP-PCTOの情報取得先

項番

情報取得先

名称

説明

1

メトリクス

HMP-PCTOを使用した分散システムでユーザが性能を評価するため、システムの利用状況(CPU使用率など)、Java VMの利用状況(メモリ使用量など)、およびHMP-PCTOの性能を評価するための指標となる数値(トランザクション数など)を取得します。