Hitachi

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


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

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

〈この項の構成〉

(1) 取得する情報

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

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

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

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

[図データ]

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

[図データ]

図10‒3 分散トレースのイメージ(TP1-Bridgeを使用する場合)

[図データ]

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

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

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

[図データ]

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

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

[図データ]

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

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

[図データ]

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

なお、各連携製品側の名称や機能などの最新の情報については、各製品のマニュアルを参照してください。

表10‒2 トラブルシュートで利用する連携製品の情報

項番

名称

説明

1

PostgreSQLのログ情報

XA関数に対応したPostgreのログ情報をトラブルシュートに利用します。

2

HiRDBのトレース・ログ情報

XA関数に対応したHiRDBのトレース・ログ情報をトラブルシュートに利用します。

3

SQL Serverのトレース・ログ情報

SQL Serverのトレース・ログ情報をトラブルシュートに利用します。

4

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

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

5

Tomcatのアクセスログ

Orchestrator、Entity-ServiceまたはEntity-ModuleのREST API通信についてヘッダ情報をトラブルシュートに利用します。

6

uCosminexus Application Runtime with Java for Spring Bootのログ

Tomcatに問題(スローダウンによるレスポンス遅延など)が発生した際にトラブルシュートに利用します。

7

uCosminexus Service Platformのトレース・ログ情報

TP1連携機能の使用時に、TP1-Converter、およびuCosminexus Service Platformのトラブルシュートに利用します。

8

OpenTP1のトレース・ログ情報

TP1連携機能の使用時に、OpenTP1のトラブルシュートに利用します。

9

TP1/Client/Jのトレース情報

TP1連携機能の使用時に、TP1/Client/Jのトラブルシュートに利用します。

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

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

項番

情報取得先

名称

取得する情報

1

メッセージログ

  • エラー、警告の情報

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

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

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

  • gRPC通信失敗時の情報

2

分散トレース

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

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

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

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

3

メトリクス

  • システムの利用状況

  • Java VMの利用状況

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

<例>
  • CPU使用率

  • メモリ使用量

  • トランザクション数

4

PostgreSQLのログ情報

ログ情報

5

HiRDBのトレース・ログ情報

  • ログ情報

  • HiRDBサーバのトランザクションの状態表示の結果

  • SQLトレース

6

SQL Serverのトレース・ログ情報

  • クエリトレース

  • ログ情報

7

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

  • ログ情報(異常時)

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

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

8

Tomcatのアクセスログ

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

9

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のアクセスログの情報を用いて行います。

10

uCosminexus Service Platformのトレース・ログ情報

  • J2EEアプリケーションのユーザログ

  • NIO HTTPサーバのアクセスログ

  • Webサーブレットログ

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

  • JavaVMのGCログ

  • JavaVMログ(JavaVMログファイル)

11

OpenTP1のトレース・ログ情報

リアルタイム出力機能

12

TP1/Client/Jのトレース情報

  • デバッグトレース

  • エラートレース

  • メソッドトレース

  • UAPトレース

  • データトレース

エラートレース、メソッドトレース、UAPトレース、およびデータトレースはデフォルトでは出力されません。アプリケーションのデバッグ時や、HMP-PCTOが出力するメッセージだけでは問題の解決が困難な場合に、トレースを取得してください。

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

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

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

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

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

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

ブランチXIDは、次に示す表の項番1〜3の情報でも取得します。また項番4以降は、連携製品側の情報として記録されています。

表10‒4 ブランチXIDを取得する情報、および連携製品のトラブルシュート情報の紐づけ

項番

情報

説明

1

ブランチXIDを取得する情報

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

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

2

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

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

3

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

EADS APIのキー情報とConsensusIDを取得します。ConsensusIDはルートXIDの16進数表記のため、ブランチXIDと紐づけできます。

なお、トライアル版ではEADS API発行時に取得する分散トレース情報は取得できません。

4

連携製品のトラブルシュート情報(共通)

Tomcatアクセスログ

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

5

EADSトラブルシュート情報

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

なお、トライアル版ではEADSトラブルシュート情報は取得できません。

6

連携製品のトラブルシュート情報(SQL-Participant使用時)

PostgreSQLのログ情報

メッセージにXA関数とブランチXIDの情報が記録されています。

7

HiRDBのトレース・ログ情報

ログ情報

トランザクションの障害時に出力されるメッセージにブランチXIDの情報が記録されています。

8

HiRDBサーバのトランザクションの状態表示の結果

トランザクション識別子として、ブランチXIDが記録されています。

9

SQLトレース

トランザクション識別子として、ブランチXIDが記録されています。

10

SQL Serverのトレース・ログ情報

クエリトレース

ブランチXIDの情報などのキーとなる情報は記録されません。

11

ログ情報

ブランチXIDの情報などのキーとなる情報は記録されません。

12

連携製品のトラブルシュート情報(TCC-Participant使用時)

API Adapterアクセスログ情報

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

13

連携製品のトラブルシュート情報(TP1-Bridge使用時)

uCosminexus Service Platformのトレース・ログ情報

J2EEアプリケーションのユーザログ

TP1-Converterが出力するメッセージ内に、ブランチXIDの情報が記録されています。

14

NIO HTTPサーバのアクセスログ

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

15

Webサーブレットログ

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

16

JavaVMスタックトレース情報

スタックトレース情報を参照し、例外が発生した要因および例外の発生個所を調査します。

17

JavaVMのGCログ

統計情報の確認のために取得する情報です。通信遅延などの現象が発生した場合、その現象が発生した時刻およびログの時刻情報を基にトラブルシュートを実施します。

18

JavaVMログ(JavaVMログファイル)

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

19

OpenTP1のトレース・ログ情報

リアルタイム出力機能

時刻情報をキーにし、そのほかのトラブルシュート情報と紐づけます。

20

TP1/Client/Jのトレース情報

デバッグトレース

トレース情報は、TP1-Brdige Podの標準出力に出力されます。HMP-PCTOのメッセージ、メッセージが出力された時刻情報、およびトレースの時刻情報を基に、トラブルシュートを実施します。

21

エラートレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

22

メソッドトレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

23

UAPトレース

時刻情報およびスレッド名をキーにして、そのほかのトラブルシュート情報と紐づけます。

24

データトレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

表10‒4 ブランチXIDを取得する情報、および連携製品のトラブルシュート情報の紐づけ」で述べた、分散トレースとそのほかの情報との紐づけのイメージについて次の図に示します。図中の番号は、表の項番に対応しています。

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

[図データ]

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

[図データ]

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

[図データ]

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

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

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

表10‒5 性能評価の対象

項番

評価対象

説明

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の例:トランザクションの件数・時間

TP1-Bridgeの例:Spring Boot組み込みTomcatのスレッド数

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

表10‒6 HMP-PCTOの情報取得先

項番

情報取得先

名称

説明

1

メトリクス

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