10.1.1 取得する情報および各情報の紐づけ方法
HMP-PCTOのトラブルシュート機能や連携製品で取得する情報、およびこれらの情報の紐づけ方法について説明します。
- 〈この項の構成〉
(1) 取得する情報
次の要件を満たすため、HMP-PCTOは最低限必要な情報取得先として次の表の情報を取得します。
-
ユーザによる障害検知ができること
-
どこで問題が起こっているか障害個所を調査できること
-
何が起こっているかを調査できること
表10‒1 HMP-PCTOの情報取得先 項番
情報取得先
名称
説明
1
メッセージログ
ユーザが障害検知するため、また、何が起こっているかを調査するため、詳細な情報を出力します。発生したイベントをタイムスタンプとともにテキストで取得します。
2
分散トレース
障害個所(エラー個所およびレスポンス遅延個所)の特定を行うため、サービス要求や製品機能間の通知に関するアクティビティを、関連づけ可能な形で取得します。各サービスでの処理時間、呼び出し関係と、付随する情報(種別など)を取得します。
分散トレースのイメージについては次の個所を参照してください。
-
SQL-Participant使用時:「図10‒1 分散トレースのイメージ(SQL-Participantを使用する場合)」
-
TCC-Participant使用時:「図10‒2 分散トレースのイメージ(TCC-Participantを使用する場合)」
-
TP1-Bridge使用時:「図10‒3 分散トレースのイメージ(TP1-Bridgeを使用する場合)」
3
メトリクス
レスポンス遅延が発生しているときに何が起こっているかを調査するため、システムの利用状況(CPU使用率など)、Java VMの利用状況(メモリ使用量など)、およびHMP-PCTOの性能を評価するための指標となる数値(トランザクション数など)を取得します。
-
HMP-PCTOにおける「ログ」は、ユーザに何が起こっているかを知らせる情報を文章として出力し、「トレース」はユーザにどこで問題が発生しているかを追跡するための情報を出力します。
分散トレースのイメージを次の図に示します。この図は分散トレースのイメージを表しているため、実際の処理シーケンスとは異なります。
要件「情報を永続化できること」を満たすため、HMP-PCTOは分散トレースおよび標準出力の情報をElasticsearchに送り永続化します。また、メトリクスの情報を永続化します。メトリクスの情報についてもElasticsearchに送り永続化します。障害が発生するケースに備えて、Elasticsearchはクラスタ構成を可能とします。クラスタはElasticsearchクラスタを制御するマスターノード群と情報を保持するデータノード群で構成されます。本バージョンではこの構成だけをサポートします。
分散トレースの情報は、ファイルにエクスポートする際に特定の種別の情報を抽出できます。例えば、SQL-Participant使用時の場合、XA関数発行時のトレースに絞って出力することで、1トランザクション当たりのXA関数の処理時間の合計を抽出できます。SQL-Participant使用時の場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートのイメージを次の図に示します。
TCC-Participant使用時の場合、API Adapter発行時のトレースに絞って出力することで、1トランザクション当たりの処理時間の合計を抽出できます。TCC-Participantを使用する場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。
TP1-Bridge使用時の場合、RPCコール/XA関数発行時のトレースに絞って出力することで、1トランザクション当たりの処理時間の合計を抽出できます。TP1-Bridgeを使用する場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。
要件「システムへのリソースおよび性能の影響を最小限にすること」を満たすため、「表10‒1 HMP-PCTOの情報取得先」以外の情報は、連携製品側で出力される情報を使用します。HMP-PCTOのトラブルシュートで利用する連携製品の情報は次のとおりです。
なお、各連携製品側の名称や機能などの最新の情報については、各製品のマニュアルを参照してください。
項番 |
名称 |
説明 |
---|---|---|
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の取得先ごとに、調査に必要な情報は次のとおりです。
項番 |
情報取得先 名称 |
取得する情報 |
---|---|---|
1 |
メッセージログ |
|
2 |
分散トレース |
各サービスでの処理時間、呼び出し関係と、付随する情報(種別など)
|
3 |
メトリクス |
|
4 |
PostgreSQLのログ情報 |
ログ情報 |
5 |
HiRDBのトレース・ログ情報 |
|
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のトレース・ログ情報 |
|
11 |
OpenTP1のトレース・ログ情報 |
リアルタイム出力機能 |
12 |
TP1/Client/Jのトレース情報 |
エラートレース、メソッドトレース、UAPトレース、およびデータトレースはデフォルトでは出力されません。アプリケーションのデバッグ時や、HMP-PCTOが出力するメッセージだけでは問題の解決が困難な場合に、トレースを取得してください。 |
(2) 各情報の紐づけ方法
サポート部署が調査する上で障害原因の究明を行うために、各情報を紐づける必要があります。
HMP-PCTOで取得するメッセージログ・分散トレース、および連携製品で取得する情報の紐づけ情報として、ブランチXIDの情報を使用します(ブランチXIDにはルートXIDの情報を含んでいます)。
それぞれの紐づけ方法について説明します。
分散トレースの情報から障害(エラーおよびレスポンス遅延)個所を切り分け、その後、何が起こっていたかをメッセージログなどの情報から抽出するための紐づけ情報として、次の分散トレース情報でブランチXIDを取得します。
-
HMP-PCTOの各コンポーネント間のREST API通信、およびgRPC通信
なお、OrchestratorからMediatorへの通信、およびMediatorからParticipantへの通信(分散合意結果通知)にはブランチXIDがないため取得できるのはルートXIDだけとなりますが、ブランチXIDにはルートXIDの情報を含むため、ルートXIDの情報で紐づけできます。
ブランチXIDは、次に示す表の項番1〜3の情報でも取得します。また項番4以降は、連携製品側の情報として記録されています。
項番 |
情報 |
説明 |
||
---|---|---|---|---|
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を取得する情報、および連携製品のトラブルシュート情報の紐づけ」で述べた、分散トレースとそのほかの情報との紐づけのイメージについて次の図に示します。図中の番号は、表の項番に対応しています。
ユーザは、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を使用した分散システムで、ユーザが性能を評価する対象は次のとおりです。
項番 |
評価対象 |
説明 |
|
---|---|---|---|
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は、最低限必要な情報取得先として次の表の情報を取得します。
項番 |
情報取得先 名称 |
説明 |
---|---|---|
1 |
メトリクス |
HMP-PCTOを使用した分散システムでユーザが性能を評価するため、システムの利用状況(CPU使用率など)、Java VMの利用状況(メモリ使用量など)、およびHMP-PCTOの性能を評価するための指標となる数値(トランザクション数など)を取得します。 |