標準のアプリケーション監視では、インターフェイスレベルでメトリック (QPS、応答時間、エラーレート) を集計しますが、業務カテゴリ別にトラフィックを分類することはできません。セールスプロモーション中に、ジュエリーの注文が急増しても、アパレルの注文が急増しても、同じように見えてしまいます。ビジネストレース分析は、リクエストペイロードから抽出したビジネス属性でトレースにタグ付けすることでこの問題を解決し、各業務カテゴリに独自のモニタリングビュー、トポロジー、およびアラートルールを非侵入型で提供します。
このトピックでは、E コマースのプロモーションシナリオにおける、ビジネスパラメーターの抽出、ビジネストレースの定義、カテゴリ固有のアラート設定というエンドツーエンドのワークフローを解説します。
シナリオ
ある E コマースプラットフォームでは、エンドツーエンドのパフォーマンスモニタリング、障害診断、キャパシティ分析のために Application Real-Time Monitoring Service (ARMS) を使用しています。大規模なジュエリープロモーションの準備を進める中で、技術保証チームはサポートプランを展開するための特別会議を開き、2 つの課題を特定しました。
ビジネスディメンションのモニタリングができない。注文受付インターフェイスは、すべての製品カテゴリにわたる集計メトリックをレポートするため、業務カテゴリ (ジュエリー、アパレル、3C など) ごとのトラフィック階層化分析を実行できません。プロモーション期間中:
ジュエリーのトラフィックが急増しても他のカテゴリと区別できず、ジュエリー固有のリソース消費量を測定することができません。
アラートルールでジュエリーのトランザクションを個別に対象とすることができません。

動的なキャパシティモデリングが不十分。サービストポロジーは静的な呼び出し関係を示しますが、ビジネスレベルのトラフィック分散は示しません。
ジュエリーのトラフィックが各マイクロサービスコンポーネントにかける実際のロードが不明です。
注文サービスや在庫サービスなどのコアモジュールのスケーリング決定にデータサポートがありません。

ビジネストレース分析の仕組み
ビジネストレース分析は、3 つの機能でこれらの課題の両方に対処します。
ビジネスエントリーのマーキング。注文サービスゲートウェイなど、ジュエリーのトランザクションを処理するエントリーアプリケーションをマークします。
トレースの自動伝播。ARMS は、エントリーアプリケーションからダウンストリームサービス (決済、在庫など) へのビジネストラフィックをインターフェイスレベルで自動的に追跡し、各スパンに業務カテゴリをタグ付けします。この伝播は分散トレーシングに基づいており、追加のインストルメンテーションは不要です。
カテゴリ固有のアラート機能。特定のビジネストレースを対象としたアラートルールを設定します。例えば、ジュエリー決済のレイテンシーがしきい値を超えた場合にアラートをトリガーします。
以下の手順では、ジュエリーカテゴリを例として使用します。
前提条件
開始する前に、以下を確認してください。
ARMS アプリケーション監視と統合された E コマースアプリケーション
エントリーアプリケーションに ARMS エージェントバージョン 4.3.0 以降がインストールされていること
リクエストボディでビジネスパラメーターを受け入れる HTTP エントリーインターフェイス
ステップ 1: ビジネスパラメーターの抽出
ビジネスパラメーター抽出機能を使用すると、ARMS はコードを変更することなく、リクエストペイロードからビジネス識別子を解析できます。抽出された属性はスパンにアタッチされ、ダウンストリームでのフィルタリングやトレース定義が可能になります。
ジュエリーのシナリオでは、注文受付インターフェイスはリクエストボディの extraInfo オブジェクト内にある category フィールドを受け取ります。
注文受付エンドポイント:
@RequestMapping(value = "/order", produces = "application/json", method = RequestMethod.POST)
public CommonResult<?> order(@RequestBody CommonRequestBody requestBody) throws Exception {
bizO11yHandleService.syncCall(requestBody);
return CommonResult.succeeded(new CommonData("Cache",
"{\"param1\":\"value1\",\"resultCode\":" + requestBody.getCode() + "}",
"succeeded.", requestBody.getCode()));
}CommonRequestBody
@Data
public class CommonRequestBody {
private String requestId;
private int code;
private boolean needDetail;
private Map<String, String> extraInfo;
}CommonRequestBody の JSON リクエストボディ
{
"code": 200,
"needDetail": true,
"requestId": "req-32413",
"extraInfo": {
"orderNumber": "ord-xxxxx",
"level": "vip",
"arms": "good",
"source": "app",
"category": "jewelry"
}
}category の値 ("jewelry") が、抽出するビジネス識別子です。
抽出ルールの作成
エントリ アプリケーションで に移動し、以下の設定でルールを作成します。 詳細については、「ビジネスパラメーターを抽出する」をご参照ください。
| パラメーター | 説明 | 例 |
|---|---|---|
| ルール名 | この抽出ルールのカスタム名です。 | カテゴリ |
| 属性名 | 抽出された値を格納するスパン属性名です。 | category |
| パラメーター抽出タイプ | パラメーターソースのタイプです。 | HTTP サーバーリクエスト |
| パラメーター ルール設定 | スコープと解析ロジックを定義します。 | |
| - 有効なインターフェイス:このルールが適用される HTTP インターフェイスです。ARMS エージェントは、一致したインターフェイスからのみパラメーターを抽出します。 | 次と等しい /api/v1/biz/order | |
| - テキストエンコーディングタイプ:パラメーターテキストのエンコーディングです。 | UTF-8 | |
| - パラメーターソース:リクエスト内でパラメーターが存在する場所です。 | ボディ | |
| - パラメーター処理ステップ:パラメーターソースから最終的なパラメーター値を段階的に解析するために使用される一連のストリーミング処理ステップです。 | ||
| - Ognl:ネストされたオブジェクトへのパスです。 | extraInfo | |
| - JsonPath:オブジェクト内のフィールド名です。 | category | |
| 有効化ステータス | このルールを有効にするかどうか。 | はい |

ルールを保存すると、ARMS エージェントは一致するスパンに category 属性のアタッチを開始します。この属性は、次のステップで定義するビジネストレースの基盤となります。
ステップ 2: ビジネストレースの定義
category 属性がスパンで利用可能になったので、ジュエリー関連のトラフィックをフィルタリングするビジネストレースを作成します。
[ビジネストレースリスト] ページに移動し、以下の設定でビジネストレースを作成します。 詳細については、「ビジネストレースの作成」をご参照ください。
| パラメーター | 説明 | 例 |
|---|---|---|
| ビジネス名 | このビジネストレースの説明的な名前です。 | jewelry order |
| ビジネスコード | メトリックに関連付けられた一意の識別子です。このコードは _biz_code などのメトリックラベルに表示されます。 | jewelry_order |
| アプリに移動 | エントリーアプリケーションです。ARMS エージェントのバージョンは 4.3.0 以降である必要があります。 | biz-trace-demo |
| エントリーインターフェイス | エントリーインターフェイスです。現在、HTTP インターフェイスのみがサポートされています。 | /api/v1/biz/order |
| 特性パラメーター | より詳細なマッチングのためのオプションの入出力パラメーターです。 | - |
| 特性設定 | 複数のルールを組み合わせるためのマッチングロジックです。 | 同時に、以下のルールを満たす |
| - 同時に、以下のルールを満たす: AND ロジック。トラフィックはすべてのルールに一致する必要があります。 | ||
| - 以下のルールのいずれかを満たす: OR ロジック。いずれか 1 つのルールに一致するトラフィックが対象となります。 | ||
| ルールパラメーター | エントリーアプリケーションで設定されたビジネスパラメーター抽出ルールから選択します。マッチング ルールは「含む」をサポートします。複数の値を選択でき、報告されていない値はカスタム入力で追加できます。 | [カテゴリ] に「jewelry」が含まれる |

ビジネストレースの検証
ビジネストレースを作成すると、ARMS エージェントが一致するトラフィックを自動的に識別します。[サービスリンク分析] ページに移動し、[ジュエリー注文] をクリックしてトレース詳細を開きます。詳細については、「ビジネストレース詳細」をご参照ください。
ジュエリー注文のトラフィックは、フルスケールの注文トレースから分離され、専用のモニタリングビューに表示されるようになります。

トポロジーグラフには以下が表示されます。
ジュエリー注文トレースの完全な依存関係
トレースパス上のアプリケーションとインターフェイス
エントリーポイントから各ダウンストリームアプリケーションへのリクエスト量
このデータを使用して、プロモーションのアーキテクチャ上の依存関係やスケーリング比率について、的を絞った意思決定を行います。
ステップ 3: アラート機能の設定
ジュエリー注文トレースが分離されたので、このビジネスディメンションに特化したアラートを設定します。
ビジネストレースメトリックが Prometheus に連携される仕組み
ビジネストレースメトリックは、自動的に Managed Service for Prometheus に統合されます。このデータパイプラインを理解することで、正確なアラートルールを作成できます。
メトリック収集。ARMS は各ビジネストレースのメトリックを収集します。
メトリックストレージ。メトリックは
metricstore-apm-metrics-custom_<regionId>_default-cms-<userId>-<region>という名前の Prometheus インスタンスに保存されます。メトリッククエリ。これらのメトリックに対して PromQL 文を作成し、ダッシュボードやアラートルールに活用します。
メトリック arms_biz_app_requests_count_raw はリクエスト数を追跡します。ラベル _biz_code はビジネストレース (例: jewelry_order) を識別します。
PromQL アラートルールの作成
メトリックのベースとなる PromQL 文を取得するには、モニタリング詳細パネルの
アイコンをクリックします。詳細については、「クエリ文」をご参照ください。

ベースとなる文には、$__range プレースホルダーが含まれています。
sum(sum_over_time_lorc(arms_biz_app_requests_count_raw{_biz_code="jewelry_order",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",pid="ckv8e2vzfj@f17de22dde9bd19",rpc=~"/api/v1/biz/order",source="apm",}[$__range])) or vector(0)これをアラートルールに変換するには、次の手順に従います。
$__rangeを1mのような固定タイムウィンドウに置き換えます。or vector(0)を削除します。>1のようなしきい値条件を追加します。
結果として得られるアラートルールは次のとおりです。
sum(sum_over_time_lorc(arms_biz_app_requests_count_raw{_biz_code="jewelry_order",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",pid="ckv8e2vzfj@f17de22dde9bd19",rpc=~"/api/v1/biz/order",source="apm",}[1m]))>1この例では、ジュエリー注文のリクエスト数が 1 分間のウィンドウ内で 1 を超えるとアラートがトリガーされます。
Prometheus アラートルールの作成手順については、「Prometheus インスタンスにアラートルールを作成する」をご参照ください。

プロモーションに関するその他のアラートディメンション
リクエスト数に加えて、大規模なプロモーションイベント向けに、エラーレートやレイテンシーなどのメトリックに基づいてアラートルールをカスタマイズすることもできます。各ディメンションについて、同じパターンに従います。モニタリングパネルからベースとなる PromQL を取得し、プレースホルダーを置き換え、しきい値条件を追加します。
アラート通知の表示
アラート機能を設定すると、該当するトラフィックがしきい値に達した場合にアラートが発生します。すべてのアラートイベントは、ビジネストレースの [イベント分析] ページで確認できます。詳細については、「イベント分析」をご参照ください。
次のステップ
ビジネスパラメーターの抽出 -- 追加の抽出タイプと高度なパラメータールール。
ビジネストレース詳細 -- トポロジーとメトリックを含む、ビジネストレースの完全なモニタリングビュー。
Prometheus インスタンスのアラートルールを作成する -- PromQL による高度なアラートルール。
イベント分析 -- ビジネストレースのアラートイベント分析。