スケジュールされたタスクは、プログラムやコマンドを1回限りまたは定期的に自動実行します。Java アプリケーションがデータ処理、キャッシュリフレッシュ、または定期的なクリーンアップのためにスケジュールされたタスクに依存している場合、これらのタスクの障害やパフォーマンスの低下は、ダウンストリームシステムに影響が及ぶまで気づかれないことがあります。Application Real-Time Monitoring Service (ARMS) は、Java アプリケーション内の XXL-JOB、SchedulerX、および JDK-Timer タスクを自動的に検出・監視し、実行メトリクス、依存関係マッピング、およびトレースレベルの診断を提供します。
スケジュールされたタスクの監視により、次のことができます。
実行の健全性、実行回数、スケジューリングのレイテンシーを時系列で追跡
タスクのパフォーマンスを低下させる低速な SQL および NoSQL クエリを特定
コードレベルで Java の例外とアプリケーションエラーを特定
ダウンストリームサービスの依存関係とそのパフォーマンスメトリクスを調査
個々のトレースにドリルダウンして根本原因分析を実施
前提条件
開始する前に、次の項目が満たされていることを確認してください。
ARMS アプリケーションモニタリングに接続されている Java アプリケーション ([Applications] ページの [Language] 列に
アイコンが表示されます)。代わりにハイフン (-) が表示されている場合、そのアプリケーションはアプリケーションモニタリングではなく、トレーシング分析に接続されています。バージョン 2.7.1.3 以降の ARMS エージェント。アップグレードについては、「Java アプリケーションの ARMS エージェントを更新する方法」をご参照ください。
ARMS アプリケーションモニタリングは、XXL-JOB、SchedulerX、および JDK-Timer のタスクタイプのみをサポートします。
スケジュールされたタスクの監視ページの表示
ARMS コンソール にログインします。
左側メニューで、[Application Monitoring] > [Applications] を選択します。
上部メニューでリージョンを選択し、対象のアプリケーション名をクリックします。
左側メニューで、[時間指定タスク] をクリックします。
スケジュールされたタスクの監視ページの左側のリストには、検出されたすべてのスケジュールされたタスクが、スケジューリングフレームワークのラベル ([SchedulerX] や [XXL-JOB] など) や、平均実行時間、実行回数、例外数などのメトリクスとともに表示されます。タスクを選択すると、右側にその監視データが表示されます。監視データには、[概要]、[SQL 分析]、[NoSQL 分析]、[例外分析]、[エラー分析]、[ダウンストリームサービス]、[インターフェイススナップショット] の各タブ、タスクの呼び出しトポロジー (たとえば、MySQL のリクエスト数と平均応答時間)、および実行回数と平均実行時間の時系列グラフなどが含まれます。
概要
[概要] タブには、選択したスケジュールされたタスクの呼び出しトポロジーと 4 つの時系列グラフが表示されます。トポロジーを使用してタスクが依存するサービスとリソースを理解でき、グラフを使用して実行時間の上昇や例外数の増加などの傾向を把握できます。
| グラフ | 説明 |
|---|---|
| [実行回数] | 時間枠あたりの実行回数 |
| [平均実行時間] | 実行あたりの平均所要時間 |
| [例外数] | 実行中にスローされた Java 例外 |
| [スケジューリングのレイテンシー] | スケジュールされたトリガー時刻と実際の開始時刻との間の遅延 |

SQL 分析と NoSQL 分析
[SQL 分析] タブと [NoSQL 分析] タブには、選択したスケジュールされたタスクによって開始された SQL および NoSQL リクエストが一覧表示されます。これらのタブを使用して、API の応答を遅くしている低速なクエリを特定できます。
リスト内の各ステートメントについて:
[Actions] 列の [呼び出し統計] をクリックして、呼び出し統計の時系列グラフを表示します。
[Actions] 列の [呼び出しトレースクエリ] をクリックして、そのステートメントのトレースを表示します。詳細については、「トレースの表示」をご参照ください。
例外分析
[例外分析] タブには、スケジュールされたタスクのコードからスローされた Java 例外が一覧表示されます。このタブを使用して、タスクの失敗と一致する定期的なコードレベルの問題を特定できます。
各例外について:
[Actions] 列の [呼び出し統計] をクリックして、例外の発生頻度を示す時系列グラフを表示します。
[Actions] 列の [呼び出しトレースクエリ] をクリックして、関連するトレースを表示します。詳細については、「トレースの表示」をご参照ください。
エラー分析
[エラー分析] タブには、スケジュールされたタスクのエラー統計が表示されます。このタブを使用して、アプリケーションレベルのエラーを特定のトレースデータやログと関連付けることができます。
リスト内の各エラーについて:
[トレース ID] 列のトレース ID をクリックして、トレース詳細を開きます。詳細については、「トレースクエリ」をご参照ください。
[Actions] 列の [ログの表示] をクリックして、関連するエラーログを表示します。
ダウンストリームサービス
[ダウンストリームサービス] タブには、アプリケーションによって呼び出されたすべてのサービスが表示されます。このタブを使用して、失敗している、または低速な依存関係がタスクのパフォーマンスに影響を与えているかどうかを判断できます。
各サービスエントリには、3 つのパフォーマンスメトリクスが含まれています。
| メトリクス | 説明 |
|---|---|
| [応答時間] | リクエストのレイテンシー |
| [リクエスト数] | リクエストの総数 |
| [エラー数] | エラーの総数 |
リストを操作するには:
[Expand/Collapse All] をクリックして、すべての API の詳細を一度に表示または非表示にします。
検索ボックスにアプリケーション名または API 名を入力し、[Search] アイコン をクリックして結果を絞り込みます。
行の最後にある折りたたみパネルまたは矢印アイコンをクリックして、特定の API のパフォーマンスメトリクスを表示または非表示にします。
トレースの表示
[インターフェイススナップショット] タブでは、2つのグラフと詳細テーブルを通じて、個々のタスク実行をトレースレベルで確認できます。
合計スナップショットのグラフ
正常トレースと低速トレースの数を時系列で表示します。トレースは、その応答時間が 500ミリ秒を超えると低速として分類されます。このしきい値は、アプリケーション設定の [Interface Response Time Threshold] パラメーターによって制御されます。
低速トレースの数には、オンプレミス API への非同期呼び出しによって生成されたサブトレースは含まれません。
スナップショット応答時間のグラフ
応答時間が時系列でどのように推移するかを示します。このグラフはサンプリングされたトレースデータに基づいており、アプリケーションに設定されたサンプリングレートの影響を受けます。
トレース詳細テーブル
個々のトレースをメタデータとともに一覧表示します。[トレース ID] 列の値をクリックすると、完全なトレースビューが開きます。詳細については、「トレース詳細」をご参照ください。
[Actions] 列の [ログの表示] をクリックすると、特定のトレースに関連するログが表示されます。
トレースをアプリケーションログと関連付けるには、トレース ID をビジネスログに関連付ける必要があります。これにより、エラーのトラブルシューティング時に、関連するログに直接アクセスできます。設定手順については、「ビジネスログとのトレース ID の関連付け」をご参照ください。
スケジュールされたタスクの問題のトラブルシューティング
スケジュールされたタスクが予期せず動作する場合、次のアプローチを使用して根本原因を段階的に絞り込みます。
概要で異常を確認します。 まず、[概要] タブから始めます。時系列グラフで、スケジューリングのレイテンシーの急増や、例外数の増加、通常より長い実行時間などの兆候がないかを確認します。
低速クエリを調査します。 問題が低速な実行に関係している場合は、[SQL 分析] または [NoSQL 分析] に移動して、タスクをブロックしている可能性のある低速なデータベースクエリを見つけます。
例外を確認します。 [例外分析] タブで、異常と一致する Java 例外を確認します。
アプリケーションエラーを確認します。 [エラー分析] タブでアプリケーションレベルのエラーを確認し、関連するトレースとログにドリルダウンします。
依存関係を調査します。 [ダウンストリームサービス] タブを開き、依存関係が低速であるか、エラーを返しているかを確認します。
根本原因までトレースします。 [インターフェイススナップショット] タブを使用して個々のトレースを調査し、ボトルネックや障害が発生している正確なスパンを特定します。