ASTERIA Warp × フローメトリクス:フローの実行回数・実行時間をFSMCで可視化する

ASTERIA Warp 2412で追加された「フローメトリクス」機能を有効にして、フローの実行回数や実行時間をフローサービス管理コンソール(FSMC)のグラフで確認してみました。データの保存先には、同じく2412で追加された内蔵データベース「FlowMetricsDataStorage」を使っています。

※動作確認環境:ASTERIA Warp 2608(ビルド2608.3412)、Enterpriseエディション、Windows 11、Java 25。フローの実行にはフローデザイナー ブラウザー版(ベータ版)を使用しました。

フローメトリクスとは

・フローの実行ログ(リクエストID、フロー名、トリガー、ステータス、開始・終了時刻など)をデータベースに保存し、FSMCでグラフとして確認できる機能です。

・ASTERIA Warp 2412で追加されました。利用できるのはStandardエディション以上です。

・FSMCの「状態→フロー→メトリクス」画面で、平均実行時間、最大実行時間、実行回数、エラー発生回数の4つのグラフを見ることができます。

・保存先のデータベースには、ASTERIA Warpに内蔵されている「FlowMetricsDataStorage」(HSQLDB)のほか、MySQL、PostgreSQLを使用できます。RDBサーバーを別に用意しなくても始められるのがポイントです。

※FlowMetricsDataStorageは、フローメトリクスのデータを保存する用途以外には使用できません。接続確認などに使う「InternalDataStorage」とは別のサービスです。

********************************************

設定手順

設定はすべてFSMC(http://<サーバー名>:28080/)で行います。ルートドメインの管理者(asu)でログインします。

1. フローメトリクス設定でデータの登録を有効にする

フローメトリクス設定の編集ダイアログ

設定→サービス→フロー→フローメトリクス の編集ダイアログ

FSMC→設定→サービス→フロー を開き、「フローメトリクス」の「編集」をクリックします。初期状態では「データの登録」が「無効」になっています。

・データの登録:ON

・メトリクスデータの保存期間:7(デフォルト)

・サマリーデータの保存期間:30(デフォルト)

・実行時刻:3時0分(デフォルト)

「保存」をクリックします。「保存完了。設定を有効にするためにはFlowServiceの再起動が必要です。」というダイアログが表示されます。

※「メトリクスデータの保存期間」は1リクエストごとの詳細データを保持する日数、「サマリーデータの保存期間」はフロー・トリガー・ステータス単位で1日ごとに集計したデータを保持する日数です。「実行時刻」は、集計と古いデータの削除を行うメンテナンス処理を毎日実行する時刻です。保存後の一覧には「最終実行日時」も表示されます(メンテナンスが1度も動いていないうちは空欄です)。

2. フローメトリクス接続先を確認する

同じ画面の「接続先編集」をクリックします。内蔵のFlowMetricsDataStorageを使う場合は、初期値のままで使えます。

・データベースタイプ:HSQL Database(Server)

・ドライバー:org.hsqldb.jdbcDriver

・URL:jdbc:hsqldb:hsql://localhost:29101/flowmetricsdb

・ユーザー名:sa

・パスワード:設定済み(初期値のまま)

・使用するスキーマ:指定なし

・コネクションプール:ON(デフォルト)

・XA対応:OFF(デフォルト)

今回は何も変えずに「キャンセル」で閉じました。MySQLやPostgreSQLに保存する場合は、ここに各RDBの接続情報を入力して「保存」します。その場合は、フローメトリクス専用のDBユーザーを用意することが推奨されています。

※ポート番号29101の先頭の桁(2)は、サーバーの初期設定で指定した番号です。FSMCの28080やフローデザイナーの21381と同じ番号になります。

3. FlowMetricsDataStorageサービスを起動する

ツール→サービスでFlowMetricsDataStorageを起動した状態

ツール→サービス でFlowMetricsDataStorageを選択(起動後)

FSMC→ツール→サービス を開き、一覧から「FlowMetricsDataStorage」を選択します。今回の環境では「自動起動」はすでにONでしたが、状態は「停止」でした。「起動」をクリックし、「画面を再表示して状態を確認してください。」のダイアログを閉じて、一覧の再表示アイコンで状態が「実行中」になるのを待ちます。

・自動起動:ON

・状態:実行中

起動できたら、設定→サービス→フロー に戻って「接続テスト」をクリックします。

フローメトリクス接続先の接続テスト結果

接続テストの結果

・DBMS名:HSQL Database Engine

・DBMSバージョン:2.7.4

・JDBC接続URL:jdbc:hsqldb:hsql://localhost:29101/flowmetricsdb

4. FlowServiceを再起動する

ツール→サービス で「FlowService」を選択し、「停止」→状態が「停止」になったことを確認→「起動」の順にクリックします。公式マニュアルでは「フローサービス全体を再起動」とありますが、今回はFlowServiceだけの再起動でメトリクスが記録されるようになりました。

********************************************

フローを実行してメトリクスを確認する

フローデザイナー ブラウザー版(http://<サーバー名>:22080/)に開発者ユーザーでログインし、既存のプロジェクト「BlogA1」にあるフローを「フローの実行」ダイアログから手動で実行しました。

・ItemDbToCsv_AI(DBのテーブルをCSVに出力するフロー):5回実行、すべて正常終了

・ItemCsvToDb_AI(CSVをDBに登録するフロー):1回実行、正常終了

・Flow1(CREATE TABLEを実行するフロー):3回実行、テーブルが既に存在するため3回とも異常終了

※ItemCsvToDb_AIとItemDbToCsv_AIは、ASTERIA Warp 2608のAIフロー作成でCSV→DB登録フローを作ってみたで作成したフローです。

状態→フロー→メトリクスのグラフ

状態→フロー→メトリクス(表示範囲:1日)

FSMC→状態→フロー→メトリクス を開くと、次の4つのグラフが表示されます。グラフの点にマウスを乗せると、その時間帯のフローごとの値がツールチップで表示されます。実行回数のツールチップには「ItemDbToCsv_AI:5、Flow1:3、ItemCsvToDb_AI:1」と、実行した回数どおりの値が出ました。

・平均実行時間:フローの平均実行時間(ミリ秒)

・実行回数:フローの実行回数

・最大実行時間:フローの最大実行時間(ミリ秒)

・エラー発生回数:フローのエラー発生回数

最大実行時間とエラー発生回数のグラフ

最大実行時間とエラー発生回数のグラフ

エラー発生回数には、異常終了したFlow1の3回が記録されています。

画面右上で表示範囲(1日、2日、7日、14日、30日)を選べます。1日を選ぶと1時間単位、30日を選ぶと1日単位の折れ線になります。

メトリクスのフィルターダイアログ

フィルターダイアログ

画面左上の「フィルター」をクリックすると、ドメイン、ユーザー、プロジェクト名、フロー名、トリガーで絞り込めます。トリガーだけは一覧からの選択ではなく、入力欄にトリガー名を手入力してEnterキーを押します。

実行回数グラフの拡大表示

実行回数グラフの拡大表示(凡例でFlow1を非表示)

各グラフ右上の拡大アイコンをクリックすると、そのグラフだけを大きく表示できます。凡例のフロー名をクリックすると、そのフローを一時的に非表示にできます(取り消し線で表示されます)。フロー数が多い環境でも、見たいフローだけを残して確認できます。

保存されるデータとログ

フローメトリクスで保存されるのは、1リクエストにつき次の項目です。

・リクエストID

・フロー名

・トリガータイプ

・トリガー名

・ステータス

・開始時刻

・終了時刻

・メモ

この1リクエストごとの「メトリクスデータ」と、毎日のメンテナンス処理でフロー・トリガー・ステータス単位に集計される「サマリーデータ」の2種類が保持されます。設定した保存期間を過ぎたデータはメンテナンス処理で削除されます。

データの登録状況は、状態→ログ→システム でファイル名「FlowMetrics」を選ぶと確認できます。フローを1回実行するごとに次のようなログが1行出力されます。

MTRCS_I_0002: フローメトリクスの処理の実行が終了しました: /DEMO.BlogA1.ItemDbToCsv_AI dd50a1fe-14a0-472b-90f6-ef1149ca3b94 [115ms]
MTRCS_I_0002: フローメトリクスの処理の実行が終了しました: /DEMO.BlogA1.ItemDbToCsv_AI f46e141d-6886-4a2a-93fe-c49ee475635f [3ms]
MTRCS_I_0002: フローメトリクスの処理の実行が終了しました: /DEMO.BlogA1.Flow1 c8dbace0-da10-4f33-b914-89708e52cabc [0ms]

末尾の[ ]内がメトリクスの登録にかかった時間です。再起動後の初回だけ115ミリ秒かかり、2回目以降は0〜3ミリ秒でした。

********************************************

使ってみて気になったところ

・「データの登録」をONにして保存しただけでは記録は始まりません。FlowServiceを再起動するまで「状態→フロー→メトリクス」のグラフは空のままでした。

・FlowMetricsDataStorageは、自動起動がONでも停止したままのことがあります。この状態で「接続テスト」を実行すると「失敗 java.net.ConnectException: Connection refused: connect」になります。メトリクスが記録されないときは、まずツール→サービス でFlowMetricsDataStorageの状態が「実行中」かを確認してください。

・メトリクス画面の横軸が、サーバーのローカル時刻とずれていました。16時38分〜39分(JST)に実行したリクエストが、表示範囲「1日」のグラフでは「10/28 7」時台にプロットされています。9時間差なのでUTCで表示されているようです。時間帯で分析するときは注意が必要です。

・メトリクスデータの保存期間はデフォルト7日です。1リクエスト単位の詳細をもっと長く見たい場合は日数を増やしますが、その分ディスク容量が必要になります。内蔵のHSQLDBで本番運用する場合は、リクエスト数に応じて容量を見積もっておく必要があります。

・リクエスト完了時にデータベースへ登録する処理が入るため、公式ドキュメントにも処理時間がかかる旨が記載されています。今回のFlowMetrics.logでは初回115ミリ秒、以降は数ミリ秒でしたが、短い間隔で大量に実行されるフローでは、有効化の前後で実行時間を比較しておくと安心です。

・バージョン2412のStandardエディションでは、FSMCにフローメトリクスの設定情報が表示されない不具合があり、公開パッチで修正されています。2412をお使いで設定項目が見当たらない場合は、ADNの公開パッチを確認してください。

********************************************

これまでフローの実行回数やエラー回数を確認するにはFlowService.logを読む必要がありましたが、フローメトリクスを有効にすると、内蔵のFlowMetricsDataStorageだけでFSMCのグラフから確認できるようになります。追加のRDBサーバーが不要なので、まずは開発環境で有効にして、どのフローがどのくらい動いているかを眺めてみることをおすすめします。

最後までお読みいただき、ありがとうございました。

少しでもご参考になれば幸いです。

参考:
・フローサービスマニュアル「フローメトリクス」(アステリア株式会社)
・フローサービス管理コンソールのリファレンス(アステリア株式会社)
・ASTERIA Warp 2412 リリースノート(アステリア株式会社)
・ASTERIA Warp バージョン2412の8つの不具合を修正(アステリア株式会社 ADN 公開パッチ)