アプリケーションに Application Real-Time Monitoring Service (ARMS) エージェントをインストールすると、ARMS はアプリケーションのモニタリングを開始します。[提供されるサービス] ページでは、インターフェイス呼び出し、メッセージサブスクリプション、スケジュールされたタスクなど、アプリケーションが提供するサービスに関する情報を表示できます。
前提条件
アプリケーションに ARMS エージェントがインストールされていること。
Application Monitoring は、新しい課金モードを有効にしたユーザー向けに、新しいアプリケーション詳細ページを提供します。
新しい課金モードを有効にしていない場合は、[アプリケーションリスト] ページで [新バージョンに切り替え] をクリックして、新しいアプリケーション詳細ページを表示します。
アプリケーションが提供するサービスの表示
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、[提供されるサービス] をクリックします。

クイックフィルターセクション (アイコン 1) では、[リクエストタイプ]、[操作]、または [ホスト] でチャートとサービスをクエリできます。
トレンドチャートセクション (アイコン 2) では、リクエスト数、エラー数、および平均消費時間の時系列を表示できます。
アイコンをクリックすると、表示されるダイアログボックスで、特定の期間のメトリックデータを表示したり、異なる日付の同じ期間のメトリックデータを比較したりできます。
アイコンをクリックすると、縦棒グラフとトレンドチャートの表示を切り替えることができます。サービスリストセクション (アイコン 3) では、RED メソッドで定義された各インターフェイスの名前、リクエストタイプ、および主要なメトリック (レート、エラー、期間) を表示できます。
サービスリストでは、次の操作を実行できます。
インターフェイス名をクリックするか、[アクション] 列の [詳細]、[SQL 分析]、または [NoSQL 分析] をクリックして、サービスの詳細を表示します。詳細については、「インターフェイスの詳細」をご参照ください。
[アクション] 列の [トレース] をクリックして、インターフェイスのトレース詳細を表示します。詳細については、「トレースエクスプローラー」をご参照ください。
サポートされているフレームワーク
インターフェイスの詳細
インターフェイス呼び出し
概要
[概要] タブでは、リクエスト数、エラー数、平均期間、HTTP ステータスコード、および低速呼び出しの時系列を表示できます。

SQL および NoSQL 分析
[SQL 分析] および [NoSQL 分析] タブでは、インターフェイスによって開始された SQL および NoSQL リクエストのリストを表示できます。ホストごとにデータベースをクエリすることもできます。これらのタブでは、サービスの応答が遅くなる原因となっている低速な SQL 文または NoSQL 文を特定できます。
SQL または NoSQL の [データベース名] をクリックして、データベースの詳細を表示できます。また、SQL または NoSQL の右側にある [トレース] をクリックして、SQL または NoSQL の実行ロジックの完全なコードトレースを表示することもできます。詳細については、「トレースエクスプローラー」をご参照ください。

アップストリームおよびダウンストリームのインターフェイス呼び出し
[アップストリーム] および [ダウンストリーム] タブには、アップストリームアプリケーション (アプリケーションを呼び出すアプリケーション) とダウンストリームアプリケーション (アプリケーションによって呼び出されるアプリケーション) のインターフェイス、およびリクエスト数、エラー数、期間情報などの呼び出しパフォーマンスメトリックが一覧表示されます。

トレースエクスプローラー
トレースエクスプローラーを使用すると、フィルター条件と集約ディメンションを組み合わせて、保存されている完全なトレースデータに基づいてリアルタイム分析を行うことができます。これにより、さまざまなシナリオでのカスタム診断要件を満たすことができます。詳細については、「トレースエクスプローラー」をご参照ください。
メッセージサブスクリプション
Python アプリケーションのメッセージサブスクリプションは表示できません。
概要
[概要] タブでは、リクエスト数、エラー数、平均期間、および消費遅延 (現在 RocketMQ 4.8.0+ のみサポート) を表示できます。

SQL および NoSQL 分析
[SQL 分析] および [NoSQL 分析] タブでは、インターフェイスによって開始された SQL および NoSQL リクエストのリストを表示できます。ホストごとにデータベースをクエリすることもできます。これらのタブでは、サービスの応答が遅くなる原因となっている低速な SQL 文または NoSQL 文を特定できます。
SQL または NoSQL の [データベース名] をクリックして、データベースの詳細を表示できます。また、SQL または NoSQL の右側にある [トレース] をクリックして、SQL または NoSQL の実行ロジックの完全なコードトレースを表示することもできます。詳細については、「トレースエクスプローラー」をご参照ください。

消費統計
[消費統計] タブには、メッセージコンシューマーの観点からのトピックの消費詳細が一覧表示されます。これには、リクエスト数、エラー数、期間が含まれます。

トレースエクスプローラー
トレースエクスプローラーを使用すると、フィルター条件と集約ディメンションを組み合わせて、保存されている完全なトレースデータに基づいてリアルタイム分析を行うことができます。これにより、さまざまなシナリオでのカスタム診断要件を満たすことができます。詳細については、「トレースエクスプローラー」をご参照ください。
スケジュールされたタスク
Java アプリケーションのスケジュールされたタスクのみ表示できます。
概要
[概要] タブでは、リクエスト数、エラー数、平均期間、およびスケジューリング遅延の時系列を表示できます。

SQL および NoSQL 分析
[SQL 分析] および [NoSQL 分析] タでは、インターフェイスによって開始された SQL および NoSQL リクエストのリストを表示できます。ホストごとにデータベースをクエリすることもできます。これらのタブでは、サービスの応答が遅くなる原因となっている低速な SQL 文または NoSQL 文を特定できます。
SQL または NoSQL の [データベース名] をクリックして、データベースの詳細を表示できます。また、SQL または NoSQL の右側にある [トレース] をクリックして、SQL または NoSQL の実行ロジックの完全なコードトレースを表示することもできます。詳細については、「トレースエクスプローラー」をご参照ください。

ダウンストリームインターフェイス呼び出し
[ダウンストリーム] タブには、ダウンストリームアプリケーション (アプリケーションによって呼び出されるアプリケーション) のインターフェイス、およびリクエスト数、エラー数、期間情報などの呼び出しパフォーマンスメトリックが一覧表示されます。

トレースエクスプローラー
トレースエクスプローラーを使用すると、フィルター条件と集約ディメンションを組み合わせて、保存されている完全なトレースデータに基づいてリアルタイム分析を行うことができます。これにより、さまざまなシナリオでのカスタム診断要件を満たすことができます。詳細については、「トレースエクスプローラー」をご参照ください。
よくある質問
インターフェイス呼び出しに関するよくある質問
インターフェイス詳細ページの [アップストリーム] タブには何が表示されますか?
インターフェイス詳細ページの [アップストリーム] タブには、現在のアプリケーションを呼び出し、ARMS エージェントによって監視されているアップストリームサービスに関する詳細が表示されます。アプリケーションが自身を呼び出す場合、[アップストリーム] タブにもアップストリームサービスとして表示されます。
一部のインターフェイスのアップストリームサービスが [アップストリーム] タブに表示されないのはなぜですか?
アップストリームサービスが ARMS エージェントによって監視されていない場合、[アップストリーム] タブには表示されません。
アップストリームおよびダウンストリームのサービスデータが乱れているのはなぜですか?
デフォルトでは、トレースに SkyWalking コンポーネントがインストールされている場合、SkyWalking はトレース全体のトレースプロトコルと見なされます。v4.2.x より前の ARMS エージェントは SkyWalking プロトコルと完全には互換性がないため、アップストリームおよびダウンストリームサービスの認識エラーが発生します。エージェントを v4.2.x 以降にアップグレードするか、[カスタム構成] ページの [コールチェーンパススループロトコル設定] セクションで伝播用のプロトコルを構成できます。詳細については、「トレースコンテキスト伝播プロトコル設定」をご参照ください。
エラー呼び出しのトレースが欠落しているのはなぜですか?
v3.2.x より前の ARMS エージェントは、Dubbo トレースのステータスコードを正しく記録しない場合があります。ARMS エージェント 3.2.x 以降ではこの問題が修正されています。
異常な呼び出しのトレースが欠落しているのはなぜですか?
v4.1.x より前の ARMS エージェントは、エラー呼び出しと低速呼び出しのトレースのみを記録し、異常な呼び出しのトレースは記録しません。一方、ARMS エージェント v4.1.x 以降は、低速、異常、およびエラー呼び出しのトレースを記録します。
インターフェイスのトラフィックが減少したのはなぜですか?
インターフェイスのトラフィックが実際に減少したかどうかを判断します。これは、報告された減少が発生する前後に CPU 使用率やネットワーク I/O などのメトリックで同時に変更が発生するかどうかを調べることで評価できます。
インターフェイスのトラフィックが実際に減少した場合、それはサービストラフィックの減少が原因です。
インターフェイスのトラフィックが減少しなかった場合、ARMS サーバーでエラーが発生した可能性があります。チケットを送信することをお勧めします。
Spring Cloud Gateway のトラフィックデータが正しくないのはなぜですか?
v4.x より前の ARMS エージェントには、Spring Cloud Gateway のイベントトラッキングに不備があります。エージェントを v4.x にアップグレードすることをお勧めします。
インターフェイスの低速 SQL 文をクエリするにはどうすればよいですか?
次の操作を実行します。
新しいコンソール
モニタリング詳細ページで、ターゲットインターフェイスの名前をクリックし、[SQL 分析] ページで表示します。

古いコンソール
ターゲットアプリケーションの ページで表示します。

古いコンソールの [インターフェイス呼び出し] ページにある 2 つのインターフェイス間の黄色のドットは何を意味しますか?
ポインターをドットの上に移動してプロンプトを確認します。
黄色のドットは低速呼び出しを示します。デフォルトでは、500 ミリ秒以上かかる呼び出しは低速呼び出しとして識別されます。[カスタム構成] ページの [インターフェイス呼び出し構成] セクションで期間のしきい値を変更できます。
赤いドットはエラー呼び出しを示します。
一部の 5xx ステータスコードデータが収集されないのはなぜですか?
RFC7231 によると、502 や 504 などのステータスコードはゲートウェイによって発行されるエラーコードです。これらのステータスコードは、それが呼び出すサービスの実際の応答コードを反映していない可能性があります。ゲートウェイに接続されているサービスのみが ARMS エージェントによって監視され、ゲートウェイ自体は監視されていないシナリオでは、ゲートウェイによって生成された 5xx 応答は追跡も報告もされません。
「NetWork And Dubbo Response Decode」とは何ですか?
これは、Dubbo トランスポートレイヤーでの逆シリアル化にかかる時間をカウントするために使用されるスパンです。
インターフェイス名に * や ARMS キーワードなどの文字が含まれるのはなぜですか?
インターフェイス名は発散するため、ARMS は類似のインターフェイスの異なる部分を置き換えることでそれらを収束させます。詳細については、「ARMS 収束ポリシー」をご参照ください。
外部インターフェイスの呼び出し期間とダウンストリームサービスの期間が異なるのはなぜですか?
サーバー側の処理時間とは、インターフェイスがリクエストを受信してからサーバーがリクエストを処理するまでにかかる期間を指します。一方、クライアント側の処理時間は、リクエストが開始された時点から測定され、接続確立とネットワーク遅延のための追加時間を含みます。ARMS コンソールは、リクエストを処理するためのサーバー側の処理時間と、リクエストが開始された時点からの合計クライアント側時間を個別に表示します。ただし、ネットワーク関連の遅延を正確に特定することはできません。
通常のインターフェイス呼び出しの例外数が 0 より大きいのはなぜですか?
例外は、特定のフレームワーク (OkHttp3 など) によって内部的にスローされ、フレームワーク自体によって外部的にキャッチされました。したがって、ビジネスロジックは影響を受けませんでした。ARMS はこのフレームワークにイベントトラッキングを実装しているため、これらの例外の詳細も記録しました。これは、ビジネス運用に実際の問題があることを示すものではありません。これらの例外に何らかのアクションや修正が必要かどうかを評価できます。例外統計では、例外のメッセージ情報は無視されます。特定の例外のメッセージ情報を表示したい場合は、対応するトレースをクリックし、インターフェイスの右側にある
アイコンをクリックして、メソッドスタック内の例外情報を表示できます。
一部のインターフェイス名が /error、/404、/*、/** となるのはなぜですか?
これは、ARMS が次の予期しないリクエストに対して適切なルートを見つけられなかったためです。
存在しない URL がリクエストされました。
リクエストヘッダーが無効であったため、リクエスト検証に失敗した場合にエラーが報告されます。たとえば、ヘッダーに無効な文字が含まれていた場合などです。
Netty などのルーティング構成のない HTTP サーバーが使用されました。
[提供されるサービス] タブに表示される呼び出し数が [トレースエクスプローラー] タブに表示される数と異なるのはなぜですか?
トレースエクスプローラーによって提供されるデータは、サンプリングされたトレースデータに基づいて計算され、サンプリングレートによって異なります。
[提供されるサービス] タブに表示される期間の分位数と [トレースエクスプローラー] タブに表示される分位数が異なるのはなぜですか?
提供サービスタブの分位数は、バケット化に基づいてマシンごとに計算されます。一方、Trace Explorer が提供する分位数は、サンプリング後のインターフェイスに関連するスパンの期間に基づいて計算されます。詳細については、「ARMS メトリック分位数の計算」をご参照ください。
インターフェイスの呼び出しが約 2 倍に増加したのはなぜですか?
これは、一部のインターフェイス呼び出しが呼び出されたときに、ARMS エージェント v3.x と ARMS エージェント v4.x の両方がアプリケーションにインストールされていたためです。 ページに移動し、任意のエージェントを選択して [詳細を表示] をクリックすると、JVM パラメーターを表示できます。

次の図に示すように、2 つの -javaagent パラメーターが存在します。これは、ARMS エージェント v3.x と ARMS エージェント v4.x の両方がインストールされていることを示します。

ARMS コンソールでの呼び出し数がサードパーティの可観測性ツールによって提供される数と一致しないのはなぜですか?
これはさまざまなシナリオで発生する可能性があります。例:
ARMS によって計算されたアプリケーションの 1 分あたりのインターフェイス呼び出し数が 500 で、NGINX によって計算された数が 200 であるとします。一般に、これはトラフィックが NGINX をバイパスしてアプリケーションに直接アクセスすることが原因である可能性が最も高いです。
アプリケーションが 1 分あたりにデータベースにアクセスする回数が 400 回で、データベースでの 1 分あたりの実行回数が 1,000 回であるとします。通常、データベースは複数のアプリケーションからアクセスされます。ARMS コンソールでは、特定のアプリケーションのページビューしか表示できません。
ARMS は Spring WebFlux をどのようにサポートしますか?
v4.x より前の ARMS エージェントは、ネイティブの Spring WebFlux と Spring Cloud Gateway のみをサポートします。Apache ShenYu など、カスタム Web ハンドラを使用して変更された WebFlux 関連のプラグインはサポートされていません。
アップストリームに自分のものではないアプリケーションが表示され、詳細情報を表示するためにナビゲートできないのはなぜですか?
アプリケーションが外部にサービスを提供している場合、これは正常です。アップストリームアプリケーションは別のユーザーに属しており、ユーザー間の呼び出し関係があることを意味します。この場合、ARMS はアップストリームアプリケーションのアプリケーション名とこのインターフェイスへの呼び出し数を記録しますが、ユーザー情報の隔離制限により、別のユーザーのアプリケーションの詳細を表示することはできません。
アプリケーション間に明確なアップストリームとダウンストリームの呼び出し関係があるのに、インターフェイスのアップストリームとダウンストリームで期待されるデータが表示されないのはなぜですか?
ARMS はまずユーザーの呼び出しトレースをランダムにチェックし、LocalRootSpan に記録されている trace.protocol.type フィールドに注目します。フィールド値が Jager の場合、大文字と小文字の変換の問題により、アップストリームとダウンストリームの認識に失敗します。この問題が発生した場合は、「別のプロトコルに切り替える」か、チケットを送信して解決してください。

メッセージサブスクリプションに関するよくある質問
[メッセージサブスクリプション]/[メッセージ発行] ページ上のデータと、メッセージキューインスタンスの自己監視パネルからのデータとの違いは何ですか?
[メッセージサブスクリプション]/[メッセージ発行] ページ上のデータは、選択したアプリケーションがコンシューマーまたはプロデューサーとして機能するときのさまざまなパフォーマンスメトリックを反映し、クライアントの観点からのモニタリングデータを提示します。一方、メッセージキューインスタンスのモニタリングパネルデータは、トピックに関連するパフォーマンスメトリックを示し、これはサーバーの観点からのデータです。
メッセージの送受信における SpanName のフォーマットは何ですか?
メッセージタイプ | v4.x より前の ARMS エージェント | ARMS エージェント v4.x 以降 |
RocketMQ/ONS メッセージ送信 | スパンは作成されません。メソッドスタックのみが記録されます。 |
|
RocketMQ/ONS メッセージ受信 |
|
|
Kafka メッセージ送信 | スパンは作成されません。メソッドスタックのみが記録されます。 |
|
Kafka メッセージ受信 |
|
|
RabbitMQ メッセージ送信 | スパンは作成されません。メソッドスタックのみが記録されます。 |
|
RabbitMQ メッセージ受信 |
|
|
Java 用 ARMS エージェントは Spring Cloud Alibaba RocketMQ をサポートしていますか?
ARMS エージェント v4.x 以降はこのフレームワークをサポートしています。エージェントのバージョンが 4.x より前の場合は、アップグレードしてください。
メッセージキューモニタリングにおける「メッセージ遅延」メトリックの意味と単位は何ですか?
メッセージ遅延とは、メッセージが生成されてからコンシューマーによって消費されるまでにかかる合計時間を指します。このメトリックの単位はミリ秒 (ms) です。現在、このメトリックは RocketMQ Client および ONS Client による収集のみサポートされています。
アプリケーションにコンシューマーロジックがあるのに、コンシューマーに関連するトレースやメトリックデータがないのはなぜですか?
エージェントのバージョンが 4.x より低く、messageListener 内で消費ロジックを定義するためにラムダ式が使用された可能性があります。
エージェントバージョン 2.x および 3.x ではラムダ式のクラス拡張に失敗するため、エージェントを v4.x にアップグレードすることでこの問題を回避できます。
Kafka クライアントを Java 用 ARMS エージェントに接続したときに、「Magic v1 does not support record headers」というエラーメッセージが表示されたのはなぜですか?
Java 用 ARMS エージェントは、Kafka メッセージのヘッダーフィールドを使用してトレースコンテキストを渡します。ただし、0.11.0.0 より前の Kafka バージョン (クライアントとブローカーの両方) では、Kafka メッセージ本文はヘッダーフィールドをサポートしていません。Kafka ブローカーまたは Kafka クライアントがこのバージョンより低い場合は、できるだけ早くバージョン 0.11.0.0 以降に移行してください。
現時点で移行できない場合、v4.x より前のエージェントでは、[カスタム構成] タブの [プローブスイッチ設定] セクションで Kafka コンポーネント (kafka-plugin スイッチ) の拡張を無効にすることができます。v4.x 以降のエージェントの場合は、サービス開始時に JVM パラメーター -Dotel.instrumentation.kafka.producer-propagation.enabled=false を追加して、このような問題を回避できます。
トレースにメッセージの受信または送信のスパンが欠落しているのはなぜですか?
プロデューサーおよびコンシューマーアプリケーションで使用されているメッセージキュー Client SDK が ARMS でサポートされている範囲内にあるかどうかを確認します。詳細については、「ARMS でサポートされている Java コンポーネントとフレームワーク」をご参照ください。
プロデューサーとコンシューマーの両方のアプリケーションが Application Monitoring または Managed Service for OpenTelemetry によって監視されており、エージェントスイッチとプラグインスイッチが正しく有効になっており、同じリージョンにレポートしていることを確認してください。メッセージ送信のスパンはプロデューサーで生成され、メッセージ受信のスパンはコンシューマーで生成されます。アプリケーションが適切に監視されていない場合、対応するスパンは欠落します。
メッセージ送信のスパンが表示されない場合は、プロデューサーアプリケーションのエージェントバージョンが 4.x 以降であるかどうかを確認してください。4.x より前のエージェントバージョンでは、メッセージを送信しても別のスパンは生成されず、代わりに親スパンのメソッドスタック内に記録されます。親スパンの右側にある
アイコンをクリックすると、実際の呼び出しメソッドスタックを表示できます。
メッセージ受信のスパンが表示されない場合は、[カスタム構成] タブの [インターフェイス呼び出し構成] セクションで [無効なインターフェイスフィルター] が有効になっているかどうかを確認してください。このオプションは、関心のないスパンを除外します。
エージェントバージョン 4.x 以前と 4.x 以降で Kafka の応答時間に大きな差があるのはなぜですか?
問題: 応答時間が数秒から 0.x ミリ秒に変化しました。
原因:
エージェントバージョン 3.x 以前では、BatchMessageListener を処理する際に、メッセージのバッチが 1 回の呼び出しと見なされ、すべての期間が集計されます。
エージェントバージョン 4.x 以降では、これらの操作は分離され、各メッセージが個別の呼び出しとしてカウントされます。したがって、エージェントバージョン 3.x から 4.x にアップグレードすると、1 回の呼び出しの期間が大幅に短縮され、呼び出し数が大幅に増加することが予想されます。
バージョン 3.x の統計方法は合理的ではなく、バージョン 4.x で最適化されました。
メッセージサブスクリプションのトレースで Kafka の消費プロセスが重複して表示されるのはなぜですか?
spring-kafka が提供する batchMessageListener を使用する場合、このバッチ内の各メッセージの処理は同じ Kafka 消費ロジックに記録されます。spring-kafka の batchMessageListener の実装方法には、次のものがあります。
消費メソッドに
@KafkaListener(topics = "my-topic", batch = true)アノテーションを追加する。消費メソッドクラスが
BatchMessageListenerインターフェイスを実装する。Kafka Message Listener Container プロパティでバッチ消費モードを有効にする:
containerProperties.setBatchListener(true)。
スケジュールされたタスクに関するよくある質問
スケジュールされたタスクインターフェイスで無効なインターフェイスフィルタリングが機能しないのはなぜですか?
アプリケーションのエージェントバージョンを確認してください。3.2.0 より低い、または 4.0.0 から 4.2.0 の間のエージェントバージョンでは、無効なインターフェイスフィルタリングが機能しない場合があります。エージェントをバージョン 3.2.10 以降または 4.2.0 より高いバージョンにアップグレードすることをお勧めします。
スケジュールされたタスクに外部呼び出しがあるのに、トレースに外部呼び出しレコードが表示されないのはなぜですか?
トラブルシューティング:
スケジュールされたタスクの呼び出しレコードも存在しない場合は、まず「ARMS Application Monitoring でサポートされている Java コンポーネントとフレームワーク」を確認し、「エージェントスイッチ設定」を確認してください。
外部呼び出しレコードのみが欠落しており、エージェントのバージョンが 4.0.0 より低い場合、非同期シナリオでのトレースコンテキスト伝播の失敗が原因である可能性があります。エージェントをバージョン 4.0.0 以降にアップグレードするか、[詳細設定] 機能を使用して自動コンテキスト伝播を構成してください。
xxl-job フレームワークからのデータが欠落しているのはなぜですか?
3.1.0 より前のエージェントバージョンは xxl-job フレームワークをサポートしていません。エージェントをより高いバージョンにアップグレードしてください。
xxl-job コードをカスタマイズした場合、たとえば特定のキークラスの完全修飾クラス名 (クラス名とパッケージ名を含む) を変更した場合、エージェントのイベントトラッキングは機能しません。この場合、OpenTelemetry Java SDK を使用してトレースにカスタムイベントトラッキングを追加することをお勧めします。