1. TOP
  2. BLOG
  3. TECH ARTICLE:最新のJENNIFER X-Viewを活用した
    トランザクション分析方法
TECH ARTICLE

2024年03月18日

最新のJENNIFER X-Viewを活用した
トランザクション分析方法

JENNIFERは非同期処理とマイクロサービスアーキテクチャ(以下、MSA)環境のトランザクション分析機能を強化するため、長きに渡り大切にしてきた機能のJENNIFERトランザクション分析機能(以下、X-View)を大幅に改善しました。今回、アップグレードしたX-Viewを活用したトランザクション分析をご紹介します。

X-Viewによるトランザクション分析はJENNIFERの重要な機能の一つです。
ユーザリクエストはAPサーバで処理の過程ではアクティブサービスですが、アクティブサービスが終わるとトランザクションとなります。このトランザクションを確認するチャートがJENNIFERではX-Viewとなり、分布図タイプのチャートで表現します。
トランザクションはユーザリクエストですが、APIリクエストのようなアプリケーション内で発生するシングルイベントを意味します。アプリケーションパフォーマンスモニタリング(以下、APM)では、トランザクションは一般的にアプリケーションがイベントを処理するために実行する一連の過程で表示されます。APMツールは性能のボトルネックを解決する時に有用なトランザクションの応答時間、エラー率や処理量のような指標をトレースします。

JENNIFERには多くの機能がありますが、アクティブサービスとトランザクションの推移をモニタリングし、プロファイルデータを分析する機能が最も重要です。また、JENNIFERが収集したトランザクションデータには多様な種類のプロファイルデータが含まれています。プロファイルとは特定のトランザクション又はアプリケーションコンポーネントの詳細情報です。開発担当者はプロファイルを分析してアプリケーションの動作を理解し、最適化する方法を検討します。
JENNIFERは、データ分析をより効果的に行う方法を研究していますが、技術トレンドの速い変化により、既存プロファイル分析ではトランザクションの分析に改善が必要であると考えました。
ここで、既存機能の限界を整理してみます。

既存のJENNIFERプロファイル分析の限界

非同期モニタリング

JENNIFERでは、トランザクションのプロファイルデータは階層構造で親子関係が明確です。しかし、JENNIFERエージェントがサポートするプラットフォームのバージョンが上がることで、非同期処理が可能となり、springのようなJAVAフレームワークレベルでは、WebFluxという新しいスペックが公開され、非同期処理に関心が高まっています。
JENNIFERはプロファイルデータの構造をcall-treeタイプのテーブルで表示していますが、非同期構造のアプリケーションが増加することで、テーブルにデータの欠落が発生しました。勿論、次のようにテキストタイプにモニタリングすると欠落せず、全てのプロファイルのデータを確認できます。call-treeテーブルは階層構造で表示されますが、メソッド間の「リクエストと非リクエスト」の関係を親子関係に再定義してデータを構成します。

<call-treeテーブル>

非同期処理をするプロファイルの場合、親キーが欠落することもあって、開始時間と応答時間がトランザクションの時間的範囲から逸脱する場合もあるため、現在のcall-treeテーブルは利用が難しいと考えています。

JENNIFERの狭い分析画面サイズ

「X-Viewトランザクション分析画面が狭い」と、ユーザからのフィードバックがありました。画面がポップアップで実現されているため、一般的な解像度より下げてオープンする必要があるために発生する問題です。また、トランザクションリストと選択したトランザクションに対するプロファイルまで一つの画面に全て表示するために、より狭く感じたのではないかと思います。
ユーザはテーブルの上段から一つずつクリックして、下段で見るプロファイル詳細情報を一つずつ確認するため、トランザクションテーブルでどのトランザクションを選択すべきか直観的にわからないことも問題でした。

最新のJENNIFERのトランザクション分析画面はどこが変わったのか 

<改善前のJENNIFER X-View>

ポップアップで制限されたサイズの限界を改善

<左:旧バージョンのトランザクション分析画面、右:新バージョンのトランザクション分析画面>

これまで、トランザクションリストと選択したトランザクションのプロファイルが全て一つの画面に表示されるために、画面が見難かったです。また、複数の機能に対するボタンが全て一つの画面にあるために、集中して分析することも難しかったです。

ポップアップ画面の制限されたサイズを改善するために、プロファイル分析をスライドインして表示する方法に変更しました。トランザクションリストのデータを維持しつつ、プロファイル分析ができるようにコンテンツを分けました。これによって、ユーザがトランザクションリストのデータを維持しながら、既存の一つの画面に配置した時の流れを変えずに画面空間を効率的に活用できます。
一つの画面に表示するコンテンツの量がシンプルになることで、改善前より可視性が良くなり、多くの内容を少ないスクロールで確認できることで、ユーザの利便性も向上しました。

トランザクションテーブルを可視化

画面でプロファイル分析領域を分離すると、トランザクションリストで問題があるように見られるトランザクションを素早く把握できます。 従来、テキストで表示されていた内容をトランザクションテーブルで各処理区間(Method、SQL、External Call、Batch Job)の応答時間として比較できるようにしました。

<応答時間を比較できるように改善されたトランザクションテーブル>

トランザクションの区間の比率を表現したバーチャートはそのままで、照会した区間全体の合計を基準に各区間別の応答時間の比率をカラムの背景色を変更することで表現しました。また、全体の応答時間を表すカラムでは、処理区間の応答時間をカラムの背景に表すと同時に、どの処理区間の比重が高いか区別できるように比率チャートも導入しました。こうすることで、トランザクションテーブルで個別データの比重とトランザクション全体の応答時間が一目で確認できるようになりました。トランザクションテーブルだけで遅延の原因もある程度分かります。ユーザは多くのトランザクションリストの中で、どのトランザクションがプロファイル分析を必要か、素早く把握できます。

トランザクションフィルタリング機能のサポート

もし、照会したトランザクションの数が多くなると、可視化したトランザクションテーブルだけでは、問題のあるトランザクションにアプローチすることは簡単ではありません。JENNIFERのX-Viewでは数十万件以上のデータを照会できるからです。
そこでまず、X-Viewチャートで6~8秒のトランザクションを確認します。Y軸の値がデフォルトで8秒であるためチャートの最上段部分から確認したい点をドラッグしてトランザクション分析画面を開きます。トランザクションリストには6~8秒のトランザクションと8秒より処理時間が長いトランザクションが混在します。処理時間が長いトランザクションの遅延原因は全て同じで明確であるため、6~8秒代のトランザクションだけフィルタリングしたい状況です。

<ダッシュボードのX-Viewチャート>

左側の応答時間の変更バーを6~8秒に変更すると、右側に確認したい6~8秒代のトランザクションだけがフィルタリングされます。

<トランザクションフィルタリング画面>

しかし、依然としてトランザクションの数が多いです。
左側のフィルタリング機能で、アプリケーション名別にグルーピングされた項目があります。最近、自分が修正したアプリケーション名と同じ名前のアプリケーションをチェックしてフィルタリングします。すると、トランザクションリストが4つになったことを確認できます。
ここからは4つのトランザクションを対象に詳細なプロファイル分析を開始します。この様にトランザクションフィルタリング機能では、状況に合わせて1つのトランザクションに含まれた情報(ドメイン、インスタンス、ビジネス、クライアントIP、開始時間、応答時間、アプリケーション名など)を個別にフィルタリングできます。また、このような情報の統計値をサポートして収集されたデータの分布図を把握するか、データの特性を確認して、どの対象をフィルタリングするかを決めることができます。

タイムライン&プロファイルチャートで非同期プロファイル分析

<call-treeテーブルに代わるタイムライン&プロファイルチャート>

非同期構造のプロファイル分析は、既存のcall-treeテーブルではできないため、タイムライン&プロファイルチャートが作られました。このチャートはcall-treeテーブルと異なり、プロファイルのリクエスト構造の把握が難しいというデメリットがあります。また、プロファイルのリクエスト構造で欠落したプロファイル、エラー、スタックトレースのようなノードも同時に表現するため、データ量によって複雑に感じることもあります。
このような問題を解決するために、プロファイルチャートの分析範囲を狭めるための方法としてタイムラインチャートを追加しました。マウスでドラッグして適切な時間範囲を選択した後で、マウスまたはキーボードの矢印キー(上/下)で時間範囲を変更できます。その他、分析したいプロファイルを探すためのリンクが画面のいろいろなところに存在して、ユーザは多様なルートで自分が欲しいプロファイルにアプローチできます。

<左側の要約コンポーネントでプロファイルを探す>
<右側のプロファイル詳細でプロファイルを探す>

プロファイル構造を簡単に把握

<フレームグラフ>

フレームグラフはプロファイルのリクエスト構造で欠落したメッセージ、ソケットのような応答時間がないプロファイルを除外して、call-treeテーブルと同じ階層構造で、データを表現します。プロファイルのリクエスト構造が一目で把握できるメリットがあるため、状況に合わせて利用すると効果的です。また、プロファイルチャートと同じくタイムラインチャートインタラクションをサポートします。主に下位プロファイルが上位プロファイルより比較的小さく表現される時に、拡大して見る目的で利用されます。

MSA環境でトランザクション間の関連性を分析

<過去の関連トランザクション分析>

JENNIFERのX-Viewプロファイル分析では、ユーザが確認したいトランザクションのリクエスト関係をトポロジービュータイプで確認できる機能をサポートします。
次の2つの条件を満たす場合、サービス間のリクエスト関係をトポロジービューで構成できます。

  • HTTP、HTTPS、RMI、WCF、SOAP、NET_REMOTE、COMPLUS、SPRING WEB CLIENTリクエストがある場合
  • リクエストするサービスにJENNIFERエージェントがインストールされている場合

トポロジービューはJENNIFERエージェントがインストールされたサービスで、ノードで表現されたリクエスト数と平均応答時間を表示します。一つのトランザクションでリクエストされる数件程度の外部リクエストを表現する時に分かり易い方法です。しかし、MSAが本格的に稼働すると、最近のサービスではトランザクション内で外部サービスリクエスト数が多くなり、リクエスト構造も複雑になる傾向があります。このようなサービスをモニタリングする時に、サービス単位に束ねてリクエスト数、応答時間を要約する場合、次のような限界があります。

  • サービスのリクエストが一つのノードコネクション線で要約されて、その中で遅延したトランザクションを探すには追加の分析が必要。
  • サービスリクエストの分岐が多い場合、トランザクションをリクエストした上位トランザクションのリクエスト構造の分析が難しい。

この様なデメリットを解決するためには、トポロジービューまたは個別トランザクション単位にリクエスト関係を表現する必要があります。表現された個別トランザクション単位のコネクション構造をJENNIFERの優れた個別トランザクション分析機能と連携すると、ボトルネックを簡単に探すことができます。

最新の関連トランザクション相関関係の分析

X-View分析機能を改善して関連トランザクション機能を全面的に新規に開発しました。トランザクション分析画面を小さいレイアウトでオープンして表示していたところを、1ページに表示することで、より広い観点でトランザクションのサービスリクエスト関係を把握できます。また、サービス単位にノードを纏めず、個別トランザクションリクエストの相関関係を表すため、トランザクションリクエストの開始から終了まで一目で把握できます。ノードに表示したMethod、SQL、ExternalCallを棒グラフで視覚的に表現しているため、ボトルネックを素早く分析できます。

<改善された関連トランザクション分析>

トランザクション分析ができる機能を開発するには…

株価を表現するために一般的に多く利用されるローソク足チャートは1800年代の明治時代から利用されています。1980年代後半にアメリカの一部取引所でローソク足チャートを利用し始めて以降、全世界的でローソク足チャートが利用されています。一般大衆に広く利用されるまでに100年以上掛かりましたが、未だに代わりになる視覚的に優れたツールがないことを考えると、ローソク足の代わりになるチャートが無いように思えます。JENNIFERも既存のX-Viewトランザクション分析画面の機能と視覚的表現を完全に変更することは考えていません。

X-Viewチャートのトランザクション分析機能はJENNIFERの重要な機能で、JENNIFERがAPM製品としてお客様からご利用頂いている理由でもあります。非同期とMSAという技術の変化の中で、我々はトランザクション分析をより効果的に行うための多様な方法を考えています。
これからも、既存ユーザの利便性を考慮し、JENNIFERらしい分かり易く、使い易いモニタリングを目指して改善して参ります。

お気軽にお問い合わせください

製品に関する事やご不明な点など、お気軽にご相談ください。
また、ジェニファーソフトでは2週間の無償トライアルを提供しています。

詳しく知りたい方は
導入や費用のご相談は