分散アプリケーションで応答の遅延や障害が発生した場合、多数のサービスの中から根本原因を特定するには、スパンの関連付け、期間によるフィルター、および大規模なトレースの比較が必要です。Application Real-Time Monitoring Service (ARMS) のトレースエクスプローラーは、保存された完全なトレースデータに対するリアルタイムのクエリと分析機能を提供します。フィルター条件と集約ディメンションを組み合わせることで、低速なリクエストを特定し、障害を診断し、トレース間の共通パターンを明らかにします。
前提条件
開始する前に、以下を確認してください。
アプリケーション用に ARMS エージェントがインストールされていること
アプリケーションモニタリングは、新しい課金モードのユーザー向けに、再設計されたアプリケーション詳細ページを提供しています。新しい課金モードに切り替えていない場合は、[Application List] ページで [Switch to New Version] をクリックして、新しいインターフェイスにアクセスしてください。
データの初期化
アプリケーション可観測性が初期化されていないリージョンで初めてトレースエクスプローラーを開くと、ページの上部に通知が表示されます。その通知では、当該リージョンでアプリケーション可観測性がまだ有効になっていないこと、および基盤となるリソースが不足しているためページの機能に影響が出ていることが通知されます。
通知内の初期化リンクをクリックすると、トレースエクスプローラーが必要とする基盤ストレージリソースの自動作成が開始されます。
初期化は非同期プロセスです。リソースの作成中は通知が表示されたままになり、作成が完了してページが正常に読み込まれると通知は消えます。アプリケーション可観測性がすでに初期化されているリージョンでは、この通知は表示されません。
トレースエクスプローラーの起動
ARMS コンソールにログインします。左側メニューで、[Application Monitoring] > [Application List] を選択します。
[Application List] ページで、上部メニューからリージョンを選択し、アプリケーション名をクリックします。
説明[Language] 列は、各アプリケーションが記述されている言語を示します。
:Java
:Go
:Pythonハイフン ([-]): Managed Service for OpenTelemetry を通じてモニタリングされるアプリケーション。
上部メニューで [Trace Explorer] をクリックします。
右上隅で、時間範囲を選択します。
トレースのフィルター
以下のいずれかの方法を使用して、結果を絞り込みます。
[Quick Filter]: [Quick Filter] セクションで、ステータス、期間、アプリケーション名、スパン名、またはホストアドレスでフィルタリングします。選択された条件は検索ボックスに表示されます。
[Search box]: 検索ボックスをクリックして、既存のフィルター条件を変更したり、ドロップダウンから新しい条件を追加したりします。
[Query statement]: 検索ボックスに直接クエリ文を入力します。構文の詳細については、「Trace Explorer のクエリ構文」をご参照ください。
検索ボックスの横にある
アイコンをクリックして、フィルター条件を保存します。[Saved View] をクリックして、以前に保存したフィルターを読み込みます。
より深い分析のために、クエリされたデータを特定のディメンションで集約できます。
トレースリスト
フィルターを適用すると、トレースエクスプローラーは結果を複数のセクションに表示します。呼び出し数と HTTP エラーを示す棒グラフ、呼び出し期間の時系列曲線、そしてスパンとトレースのリストです。トレースリストを使用して結果をスキャンし、個々のトレースに移動して詳細な調査ができます。
スパンステータスの凡例
凡例 | 意味 | ソース |
| 正常 |
|
| エラー |
|
| 例外 |
|
上部セクションの棒グラフは、HTTP ステータスコードを色分けして表示します: 2XX (緑)、3XX (黄)、4XX (オレンジ)、5XX (赤)。これらのコードは、attributes.http.status_code または attributes.http.response.status_code フィールドから取得されます。スパンに両方のフィールドが含まれている場合、HTTP ステータスコードがスパン状態インジケーターよりも優先されます。
利用可能なアクション
トレース ID をクリックするか、[Actions] 列の [Details] をクリックして、トレース詳細とトポロジーを表示します。詳細については、「トレース詳細」をご参照ください。
[Actions] 列の [Logs] をクリックして、トレース関連のログを表示します。詳細については、「ログ分析」をご参照ください。
アイコンをクリックして、トレース ID の下のすべてのスパンを展開します。デフォルトでは、トレース ID ごとにルートスパンのみが表示されます。右上隅の
アイコンをクリックして、リストの列を表示または非表示にします。トレースにカーソルを合わせ、
アイコンをクリックして、そのパラメーター値をフィルター条件として追加します。
散布図
[Scatter plot] タブは、各トレースを X 軸に時間、Y 軸に期間を持つ点としてプロットします。このビューを使用して、異常に高いレイテンシーを持つ外れ値のトレースを特定できます。点にカーソルを合わせると基本的なトレース情報が表示され、クリックするとトレース詳細が開きます。詳細については、「トレース詳細」をご参照ください。

トレース集約
トレースリストが個々のスパンを分析するのに対し、トレース集約は完全なトレースを再構築して、より高レベルのビューを提供します。指定された条件に基づいて最大 5,000 の分散トレースをクエリし、トレース ID によって対応するすべてのスパンを取得し、トレースの整合性を保ちながら結果を集約します。このビューを使用して、サービス呼び出しグラフ全体で時間とエラーがどのように分散しているかを理解できます。
集約クエリは、指定された条件に一致するトレースデータに対して実行されます。複数の条件を組み合わせると、計算時間が増加する場合があります。

集約パラメーター
パラメーター | 説明 |
spanName | スパンの名前。 |
serviceName | スパンに関連付けられたアプリケーション。 |
リクエスト数 / リクエストの割合 | このスパンを呼び出すリクエストの総リクエストに対する割合。計算式: (このスパンを呼び出すリクエスト数 / 総リクエスト数) x 100%。 |
スパン / リクエスト倍数 | 各リクエストがこのスパンを呼び出す平均回数。計算式: 総スパン数 / 総リクエスト数。 |
平均自己時間 / 割合 | スパンの期間からその子スパンの合計期間を除いた平均時間。計算式: スパン期間 - 子スパンの合計期間。 重要 非同期呼び出しは例外で、この場合は子スパンの期間が含まれます。 |
平均期間 | スパンの平均期間。 |
例外数 / 例外の割合 | 例外が発生したリクエストの割合。計算式: 例外が発生したリクエスト数 / 総リクエスト数。 重要 例外が発生したリクエスト数は、総例外数と同じではありません。リクエスト倍数が 1 を超える場合、1 つのリクエストで複数の例外が発生する可能性があります。 |
集約例
スパン A がスパン B とスパン C を呼び出すトレースを考えます。
spanName | serviceName | リクエスト数 / 割合 | スパン / リクエスト倍数 | 平均自己時間 / 割合 | 平均期間 | 例外数 / 割合 |
A | demo | 10 / 100.00% | 10 / 1.00 | 5.00 ms / 25.00% | 20 ms | 2 / 20.00% |
- B | demo | 4 / 40.00% | 8 / 2.00 | 16.00 ms / 100.00% | 16 ms | 2 / 50.00% |
- C | demo | 1 / 10.00% | 1 / 1.00 | 4.00 ms / 100.00% | 4 ms | 1 / 100.00% |
このテーブルの読み方:
リクエストの分散: スパン A には 10 件のリクエスト (100%) があります。そのうち、スパン B を呼び出すのは 4 件のリクエスト (40%) だけで、スパン C を呼び出すのは 1 件 (10%) だけです。残りのリクエストは、条件付きロジックや例外のためにスパン B と C をスキップします。
スパンの頻度: スパン A はリクエストごとに 1 回呼び出されます (倍数 = 1.00)。スパン B は 4 件のリクエストで 8 つのスパンがあるため、各リクエストは平均してスパン B を 2 回呼び出します (倍数 = 2.00)。
自己時間の分散: スパン A の自己時間は 5.00 ms (平均期間 20 ms の 25%) であり、これは時間の 75% が子スパンで費やされていることを意味します。スパン B と C は子スパンがないため、自己時間は 100% と表示されます。
例外の分散: スパン A には 10 件のリクエストで 2 つの例外があります (20%)。スパン B には 4 件のリクエストで 2 つの例外があります (50%)。スパン B のリクエスト倍数が 2.00 であるため、考えられる分散は、4 件のリクエストのうち 2 件が最初の呼び出しで例外に遭遇し、2 回目の呼び出しは成功するというものです。
特定のトレースの詳細を表示するには、(青色で表示されている) スパン名にカーソルを合わせ、推奨の traceId をクリックします。
完全なリンクトポロジー
[Full Link Topology] タブには、集約されたトレースのアプリケーション間呼び出しトポロジーが表示されます。このビューを使用して、サービス依存関係を視覚化し、アプリケーション間のエラーが発生しやすい、または低速なリンクを特定できます。各アプリケーションノードには、リクエスト数、エラー数、および応答時間が表示されます。

低速トレースと失敗トレースの分析
トレースエクスプローラーは、低速トレースと失敗トレースに共通するパターンを明らかにし、根本原因の特定を支援します。ホスト、インターフェイス、または serviceName="arms-demo" AND ip="192.168.1.1" のような複合条件で調査範囲を絞り込みます。この分析は、対象を絞った最適化のための低速インターフェイスを特定するのにも役立ちます。
低速トレースの分析
ARMS は、期間が最も長い 1,000 件のトレースを分析し、低速と最も相関性の高い 5 つのディメンションを明らかにします。
低速トレースの詳細
ARMS は、設定された [threshold] を超える最も長い 1,000 件のトレースを選択し、しきい値以下のトレースを 1,000 件サンプリングして比較し、低速な呼び出しと最も相関性の高い 3 つの特性を特定します。
必要に応じて [threshold] を設定してください。たとえば、1 分を超えるトレースの特性を見つけるには、しきい値を 60,000 ミリ秒に設定します。
分析結果では、IP 10.219.154.56 が低速トレースサンプルの 21.8% を占めていますが、正常なトレースでは 10.2% に過ぎません。spanName /eventCenter は低速トレースサンプルの 71.9% を占めていますが、正常なトレースでは 64.5% に過ぎません。
失敗トレースの分析
ARMS は、失敗した 1,000 件のトレースをランダムにサンプリングし、失敗との相関が最も高い 5 つのディメンションを明らかにします。
失敗トレースの詳細
ARMS は、失敗したトレースと正常なトレースを比較し、失敗と最も相関性の高い 3 つの特性を特定します。
トレース詳細
トレース詳細ビューには、次の図で 1 から 4 のラベルが付けられた 4 つのセクションがあります。

コンポーネントタグ (1)
タグは呼び出しタイプとスパン数を表します。呼び出しタイプは attributes.component.name フィールドによって決定されます。タグをクリックすると、関連するスパンの表示/非表示を切り替えることができます。
トレースの棒グラフ (2)
水平棒グラフは、トレースとそのスパン分布の概要を提供します。これを使用して、トレース全体で時間がどこで費やされているかをすばやく特定できます。
各棒はスパンを表します。トレースの総期間の 1% を超える期間のスパンのみが表示されます。
色は異なるアプリケーションを区別します。上の図では、青は opentelemetry-demo-adservice アプリケーションを表します。
各棒内の黒い線は自己時間を表します。これは、スパンの総期間から子スパンで費やされた時間を引いたものです。たとえば、スパン A が 10 ms かかり、その子スパン B が 8 ms かかる場合、スパン A の自己時間は 2 ms です。
タイムラインは、トレースの完全な時間範囲を示します。
スパンのフォーカスとフィルター (3)
各行は、親子階層を持つスパンを表します。親スパンには、子スパンの数を示す数字が表示されます。利用可能な操作:
[Collapse/Expand]:
アイコンをクリックして、スパンとその子を折りたたんだり展開したりします。[Focus]: スパンを選択し、
アイコンをクリックして、そのスパンとその下流のスパンのみを表示します。[Defocus]:
アイコンをクリックして、フォーカスモードを終了します。[Filter]: 検索ボックスにスパン名、アプリケーション名、または属性を入力して、一致するスパンとそのエントリスパンへのパスにトレースを絞り込みます。検索ボックスをクリアして検索アイコンをクリックすると、フィルターが削除されます。
[Zoom]:
アイコンをクリックしてズームインし、棒グラフを非表示にします。
アイコンをクリックして元に戻します。
スパン詳細 (4)
スパン詳細パネルには、選択したスパンの属性、メトリクス、ログ、および例外データが表示されます。
[Additional Information]: スパンの属性、リソース、詳細、およびイベントをタイプ別にグループ化して表示します。フィールドの説明については、「トレースエクスプローラーのパラメーター」をご参照ください。
[Metrics]: スパンに関連するメトリクスを表示します。

ARMS によってモニタリングされる Java アプリケーションの場合: JVM およびホストのメトリクス。
オープンソースエージェントからのトレースの場合: RED メソッドのメトリクス (レート、エラー、期間)。
[Logs]: トレースにリンクされたビジネスログを表示します。アプリケーションに Simple Log Service (SLS) の Logstore が設定されている場合、Logstore でトレース ID でビジネスログをクエリします。
[Exceptions]: スパンの例外情報 (もしあれば) を表示します。
[Event Config]: 1 つ以上のトレース属性のインタラクションイベントを設定して、追加のトレース詳細や関連するログおよびメトリクスにアクセスします。詳細については、「トレースのカスタムインタラクションイベントの設定」をご参照ください。
プログラムによるトレースデータへのアクセス
トレースデータは Simple Log Service (SLS) に保存されます。カスタム分析のためにプログラムでアクセスできます。
[SLS project]:
proj-xtrace-<encode>-<region-id>(たとえば、リージョンがcn-hangzhouの場合)[Logstore]:
logstore-tracing
データ形式の詳細については、「トレースエクスプローラーのパラメーター」をご参照ください。分析例については、「リアルタイムでのトレースデータの分析」をご参照ください。
よくある質問
SQL文がトレースで切り捨てられるのはなぜですか?
ARMS は、デフォルトで SQL 文を 1,024 文字に制限します。この制限を増やすには、アプリケーションの [Custom Configurations] タブに移動し、[Database call configuration] セクションの [Maximum retention length for SQL collection] を変更します。
[Custom Configurations] タブのデータベース呼び出し設定項目:
[Slow SQL Threshold]: デフォルトは 500 ms。このしきい値を超える SQL クエリは、低速 SQL としてマークされます。
[Maximum Retention Length for SQL Collection]: デフォルトは 1,024 文字。この長さを超える SQL 文は切り捨てられます。
[Display Variable Binding Values in SQL]: 有効にすると、PrepareStatement のパラメーターバインディング値をキャプチャします。MySQL のみでサポートされています。
[Display Constant Values in SQL]: SQL 文に定数値を表示するには、これを有効にします。
[Record MySQL Query Return Value Size]: MySQL クエリの戻り値のサイズを記録するには、これを有効にします。
設定後、[Save] をクリックするか、[Save and Batch Copy to Other Applications] をクリックして、設定を他のアプリケーションに同期します。
ARMS エージェント V4.x へのアップグレード後に、期間が 30 秒の Nacos スパンが表示されるのはなぜですか?
ARMS エージェント 4.x は、Nacos が設定の更新とサービスディスカバリに使用する HTTP ロングポーリングリクエストを計測します。これらのスパンは V3.x ではキャプチャされません。詳細については、「ARMS エージェント V4.x アップグレードのお知らせ」をご参照ください。
これらのスパンを除外するには、アプリケーションの [Custom Configurations] タブの [Interface call configuration] セクションにフィルター規則を追加します。
この機能には、ARMS エージェント V4.2.x 以降が必要です。
[Custom Configurations] タブの [Interface Call Configuration] セクションで、除外したいインターフェイスパスを [Invalid Interface Call Filter] テキストボックスに入力して、それらのスパンを抑制します。このセクションには、[Slow Call Threshold] (デフォルト 500 ms)、[Exception Allowlist]、[HTTP Status Code Allowlist]、および複数のメトリクス記録トグルも含まれています。


