9.1.1 取得する情報および各情報の紐づけ方法
HMP-PCTOのトラブルシュート機能や連携製品で取得する情報、およびこれらの情報の紐づけ方法について説明します。
- 〈この項の構成〉
(1) 取得する情報
次の要件を満たすため、HMP-PCTOは最低限必要な情報取得先として次の表の情報を取得します。
-
ユーザによる障害検知ができること
-
どこで問題が起こっているか障害個所を調査できること
-
何が起こっているかを調査できること
表9‒1 HMP-PCTOの情報取得先 項番
情報取得先
名称
説明
1
メッセージログ
ユーザが障害検知するため、また、何が起こっているかを調査するため、詳細な情報を出力します。発生したイベントをタイムスタンプとともにテキストで取得します。
2
分散トレース
障害個所(エラー個所およびレスポンス遅延個所)の特定を行うため、サービス要求や製品機能間の通知に関するアクティビティを、関連づけ可能な形で取得します。各サービスでの処理時間、呼び出し関係と、付随する情報(種別など)を取得します。SQL-Participant使用時の分散トレースのイメージについては「図9‒1 分散トレースのイメージ(SQL-Participantを使用する場合)」を、TCC-Participant使用時の分散トレースのイメージは「図9‒2 分散トレースのイメージ(TCC-Participantを使用する場合)」を参照してください。
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分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。
|
|
要件「システムへのリソースおよび性能の影響を最小限にすること」を満たすため、「表9‒1 HMP-PCTOの情報取得先」以外の情報は、連携製品側で取得する情報を使用します。HMP-PCTOの連携製品で取得する情報は次のとおりです。
|
項番 |
名称 |
説明 |
|---|---|---|
|
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の取得先ごとに、調査に必要な情報は次のとおりです。
|
項番 |
情報取得先 名称 |
取得する情報 |
|---|---|---|
|
1 |
メッセージログ |
|
|
2 |
分散トレース |
各サービスでの処理時間、呼び出し関係と、付随する情報(種別など)
|
|
3 |
メトリクス |
|
|
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を取得します。
-
HMP-PCTOの各コンポーネント間のREST API通信、およびgRPC通信
なお、OrchestratorからMediatorへの通信、およびMediatorからParticipantへの通信(分散合意結果通知)にはブランチXIDがないため取得できるのはルートXIDだけとなりますが、ブランチXIDにはルートXIDの情報を含むため、ルートXIDの情報で紐づけできます。
ブランチXIDは、次の1.〜3.の情報でも取得します。4.〜6.は、連携製品側の情報として記録されています。4.、5.については、ブランチXIDの情報が記録されているため、紐づけできます。
-
HMP-PCTOのメッセージログ(エラー時)
異常時にPCTOのメッセージログに出力されるエラーメッセージに、ブランチXIDを含めます。
-
HMP-PCTOでXA関数発行時に取得する分散トレース情報
XA関数とブランチXIDの情報を取得します。
-
HMP-PCTOでEADS API発行時に取得する分散トレース情報
EADS APIのキー情報とConsensusIDを取得します。ConsensusIDはルートXIDの16進数表記であるため、ブランチXIDと紐づけできます。なお、トライアル版ではEADS API発行時に取得する分散トレース情報は取得できません。
-
連携製品側の情報
- 4-1:連携製品側の情報(SQL-Participant使用時):DBログ情報
-
XA関数とブランチXIDの情報が記録されています。
- 4-2:連携製品側の情報(TCC-Participant使用時):API Adapterアクセスログ情報
-
API AdapterアクセスとブランチXIDの情報が記録されています。
-
連携製品側の情報:Tomcatアクセスログ
REST API通信とブランチXIDの情報が記録されています。
-
連携製品側の情報:EADSトラブルシュート情報
ブランチXIDの情報などキーとなる情報は記録されません。このため、時刻をキーにしてEADSトラブルシュート情報の調査を行います。なお、トライアル版ではEADSトラブルシュート情報は取得できません。
上記で述べた、分散トレースとそのほかの情報との紐づけのイメージについて次の図に示します。
|
|
|
|
ユーザは、HMP-PCTOが取得する分散トレースの情報と、連携製品の情報をブランチXIDで紐づけて調査できます。なお、HMP-PCTOが取得する各分散トレース情報(「図9‒5 HMP-PCTO各情報の紐づけのイメージ(SQL-Participantを使用する場合)」、「図9‒6 HMP-PCTO各情報の紐づけのイメージ(TCC-Participantを使用する場合)」の緑枠部分)は、分散トレース固有の紐づけ情報(トレースID)によって関連づけられるため、ユーザはJaeger-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の例:トランザクションの件数・時間 |
|
要件「ユーザがHMP-PCTOの性能を評価するための情報を取得すること」を満たすため、HMP-PCTOは、最低限必要な情報取得先として次の表の情報を取得します。
|
項番 |
情報取得先 名称 |
説明 |
|---|---|---|
|
1 |
メトリクス |
HMP-PCTOを使用した分散システムでユーザが性能を評価するため、システムの利用状況(CPU使用率など)、Java VMの利用状況(メモリ使用量など)、およびHMP-PCTOの性能を評価するための指標となる数値(トランザクション数など)を取得します。 |