> [!abstract] 概要(ACM abstract の日本語訳)
> インスタンスの障害を事前に検知することは、マイクロサービスシステムにとって極めて重要である。なぜなら、あるインスタンスの障害はシステム全体に伝播し、システムの性能を劣化させうるからだ。これまで、多くの単一モダリティ(すなわちメトリクス、ログ、あるいはトレースのいずれか)のデータに基づく異常検知手法が提案されてきた。しかしそれらの手法は、マルチモーダルデータの相関を無視しているために、多数の障害を見逃し、かつ大量の誤報を発生させる傾向がある。本研究では、マイクロサービスシステムのインスタンス障害を事前に検知するための教師なし障害検知手法 AnoFusion を提案する。AnoFusion は Graph Transformer Network(GTN)を適用して異種マルチモーダルデータの相関を学習し、Graph Attention Network(GAT)と Gated Recurrent Unit(GRU)を組み合わせることで、動的に変化するマルチモーダルデータがもたらす課題に対処する。我々は 2 つのデータセットを通じて AnoFusion の性能を評価し、それぞれ F1-score 0.857 および 0.922 を達成し、最先端の障害検知手法を上回ることを示した。
## 論文情報
- タイトル: Robust Multimodal Failure Detection for Microservice Systems
- 著者: Chenyu Zhao・Minghua Ma・Zhenyu Zhong・Shenglin Zhang・Zhiyuan Tan・Xiao Xiong・LuLu Yu・Jiayi Feng・Yongqian Sun・Yuzhi Zhang・Dan Pei・Qingwei Lin・Dongmei Zhang
- 所属: [[Nankai University]](Tianjin, China)・[[Microsoft]](Beijing, China)・[[Tsinghua University]](Beijing, China)
- 媒体: KDD '23(29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining)、2023-08-06〜10、Long Beach, CA, USA。ACM Digital Library 掲載ページ 5639–5649(全 11 ページ)
- DOI: https://doi.org/10.1145/3580305.3599902 / ISBN 979-8-4007-0103-0/23/08
- コード: https://github.com/zcyyc/AnoFusion
## 概要
AnoFusion は、マイクロサービスシステムのインスタンス障害検知において、メトリクス・ログ・トレースという 3 種の監視データ(マルチモーダルデータ)の相関を明示的に学習する教師なし手法である。単一モダリティ手法は特定の障害タイプを見逃す一方、単純な多数決による統合(JLT)は相関を無視するため誤報が増える、という 2 つの課題に対し、GTN による異種グラフ構造の学習と GAT による動的重み付け、GRU による時系列予測を組み合わせて対処する。2 つの実運用規模データセットで最先端手法を大きく上回る F1-score を達成した。
## 問題設定
- **入力**: マイクロサービスインスタンスごとの metric(多変量時系列)・log(半構造化テキスト)・trace(呼び出しごとの応答時間を含むスパン集合)の 3 モダリティ監視データ。
- **出力**: 各時刻 t におけるインスタンスの障害有無(binary)を示す failure score と、EVT に基づく動的閾値による二値判定。
- **前提**: 教師なし学習であり、障害ラベルを訓練に使わない。学習データは正常パターンのみを含むと仮定する。
- **用語定義**: 論文は「異常(anomaly)」を監視データにおける正常状態からの逸脱、「障害(failure)」をインスタンスが提供するサービスが実際に劣化するイベントと明確に区別する。一過性の異常が必ずしも障害を意味しないことが後述する動機付け実験で示される。
**Figure 1: 障害発生時のマルチモーダルデータ例**
![[_attachments/2026_Unknown_Robust_Multimodal_Failure_Detection_Microservice/fig01-multimodal-data-example.png]]
(Figure 1. あるインスタンス障害発生時の metric(disk_io_rate・disk_io_time)・log(ERROR ログ)・trace(応答時間)の同時異常を示す例。metric は障害直前に急上昇し、log には携帯電話ログインが無効という ERROR が出力され、trace は S2→S4 の応答時間が 11 秒に達する。3 モダリティすべてが同時に異常を示すとは限らない点が本研究の動機となっている。)
## 提案手法
- **アーキテクチャ**: オフライン訓練とオンライン検知の 2 段構成(Figure 2)。① Multimodal Data Serialization → ② Graph Stream Construction → ③ Feature Filtering(GTN + GAT)→ ④ Failure Detection(GRU)の 4 ステップからなる。
- **マルチモーダルデータのシリアライズ**:
- metric: L2 ノルムで正規化(m̂ ≡ m/|m|)するのみ。
- log: BERT(bert-base-uncased)でログテンプレートの文埋め込みを得たのち DBSCAN でクラスタリングし(式 (1): c = argmin_{a∈C} Σ_{b∈C} |a−b| でクラスタ重心を計算)、ログテンプレート数 M+1 本(各クラスタの出現数 + 総ログ数)の時系列に変換する。ログパースには Drain を使用。
- trace: window 幅 θ・ステップ幅 δ のスライディングウィンドウで応答時間(RT)の平均・中央値・レンジ・標準偏差(+ status code があれば 5 本目)を時系列化する。
- metric は毎分、log はイベント発生時、trace はリクエスト処理時に生成されるため、これらを分単位でクロック同期する。
- **グラフストリーム構築**: 各時刻 t のデータチャンネル値をノード集合 X_t、6 種類のエッジタイプ(metric-metric/metric-log/metric-trace/log-log/log-trace/trace-trace)の隣接行列を相互情報量(MI、式 (2))で計算し、異種グラフ G_t = (X_t, A) を構成、これを時系列方向に積み重ねてグラフストリーム G を作る。
- **特徴フィルタリング(GTN + GAT)**: GTN の Graph Transformer 層(式 (3)(4))が 1×1 畳み込みで複数のエッジタイプを合成しメタパス行列 A′ を生成する。続いて GAT(式 (5)(6))がマルチヘッドアテンションでノード間の重要度を重み付けし、動的パターンに頑健な特徴フィルタリングを行う(層数=5、attention head 数 H=6)。
- **障害検知(GRU)**: 更新後のグラフストリームを GRU(式 (7))で処理し、最終隠れ状態から次時刻のデータチャンネル値を予測(式 (8))、MSE 損失(式 (9))で学習する。オンライン検知時は観測値との誤差 ERR_n(式 (10))を計算し、median/IQR で正規化した上で最大値を取ることで failure score ERR(式 (11))を得る(障害は一部のモダリティにのみ現れることがあるため max を採用)。
- **実装上の工夫**: 静的閾値は分布変化に弱いため、Extreme Value Theory(EVT)で動的に閾値を決定する。ハイパーパラメータはスライディングウィンドウ長 θ=60、ステップ δ=1、GT 層数=5、attention head 数 H=6(§5.4 の感度分析で決定)。
**Figure 2: AnoFusion の全体アーキテクチャ**
![[_attachments/2026_Unknown_Robust_Multimodal_Failure_Detection_Microservice/fig02-anofusion-framework.png]]
(Figure 2. AnoFusion のフレームワーク。オフライン訓練(左側)は① Multimodal Data Serialization → ② Graph Stream Construction → ③ Feature Filtering(GTN→GAT)→ ④ Failure Detection(GRU で予測し観測と類似度計算)の4ステップからなる教師なし学習。オンライン検知(右側)は学習済みモデルに新規ウィンドウを入力し、Failure Score としきい値判定で障害を出力する。)
## 新規性
既存の単一モダリティ手法(JumpStarter・USAD・LogAnomaly・Deeplog・TraceAnomaly)は、当該モダリティに現れない障害を検知できない。2 モダリティ手法 SCWarn(metric+log)はトレースを扱わず、マイクロサービス特有の呼び出し依存性を捉えられない。単純な多数決統合(JLT)はモダリティ間の相関を無視し、一部モダリティにしか現れない障害を見逃す一方、複数モダリティが同時に(たまたま)一過性の異常を示した場合に誤報を出す。AnoFusion は GTN で異種データの相関そのものをグラフ構造として学習し、GAT で動的にノード重要度を調整することで、モダリティの組み合わせを固定した多数決ではなく、データ駆動でモダリティ間の重みを学習する点が新規性である。
## 実験設定
- **環境**: Linux server、Intel Xeon Gold 5218 CPU(16C32T)×2、NVIDIA Tesla V100S×2、RAM 192GB。PyTorch 実装。
- **データセット**(Figure 1 は D1 に類似する障害例):
| データセット | #Microservice | #Instance | 障害率 | Metric 件数 | Log 件数 | Trace 件数 |
|---|---|---|---|---|---|---|
| D1(GAIA, CloudWise 公開) | 5 | 10 | 4.908% | 734,165 | 87,974,577 | 28,681,438 |
| D2(商業銀行、非公開) | 14 | 28 | 1.243% | 3,122,168 | 14,894,069 | 9,473,763 |
- D1 は CloudWise の GAIA(Generic AIOps Atlas)公開データセットで、2 週間・0.7M metric・87M log・28M trace を含み、QR コード生成失敗・システムスタック・ログイン失敗・ファイル未検出・アクセス拒否など実際の障害を注入している。
- D2 は商業銀行が運用する 28 インスタンス(Web サーバ・アプリケーションサーバ・データベース等)のシステムから、運用担当者が手動で注入したリソース障害(CPU/メモリ/ディスク)・ネットワーク障害(パケットロス・遅延)・アプリケーション障害(VM 障害)を収集。NDA のため非公開。
- 訓練:テスト = 各インスタンスの先頭 60%:残り 40%。
- **比較対象**: JumpStarter(metric)・USAD(metric)・LogAnomaly(log)・Deeplog(log)・TraceAnomaly(trace)・SCWarn(metric+log)・JLT(JumpStarter+LogAnomaly+TraceAnomaly の多数決)。全手法をグリッドサーチで最良パラメータに調整。
- **評価指標**: TP/FP/FN に基づく precision・recall・F1-score。ラベルは D1 が障害注入、D2 が運用者による障害報告の確認に基づく。連続する障害区間単位で評価し、点単位の異常ではない([25, 26] に準拠)。
## 実験結果
- **主結果(Table 3)**: AnoFusion は D1 で precision 0.795 / recall 0.945 / F1 0.857、D2 で precision 0.863 / recall 0.991 / F1 0.922 を達成し、全 7 ベースラインを両データセットで上回った。SCWarn 比で F1 が D1 で 41.00%、D2 で 18.80% 改善。JLT 比で D1 が 23.90%、D2 が 44.10% 改善(Figure 2 のオフライン訓練・オンライン検知パイプラインで得られる)。
- **ロバスト性**: 全インスタンス単位の F1-score は D1 で 0.784〜0.977、D2 で 0.805〜0.986 の範囲に収まり、システムやインスタンス種別に依存せず安定した性能を示した。
- **効率性**: AnoFusion のオンライン検知時間は平均 1.932×10⁻² 秒/ウィンドウで、1 分ごとの障害検知要求を十分に満たす(他手法は 8.975×10⁻⁵〜1.102×10⁻² 秒)。
- **アブレーション(Table 4)**: GTN を除去すると precision が大きく低下(D1: 0.795→0.608)し、GTN が誤報削減に寄与することを確認。GAT を GCN に置換すると precision・recall とも低下し、均一重み付け(GCN)がノイズを導入することを示す。GAT を完全に除去すると性能が最も大きく劣化する(D1 F1: 0.857→0.615)。
- **ハイパーパラメータ感度**: スライディングウィンドウ幅 θ は 40〜90 の範囲で良好、θ=60 を採用。attention head 数 H は 6 で最良、少なすぎるとモデル容量不足、多すぎると冗長情報が増え学習を妨げる。
**Figure 3: ハイパーパラメータ感度**
![[_attachments/2026_Unknown_Robust_Multimodal_Failure_Detection_Microservice/fig03-f1score-hyperparameters.png]]
(Figure 3. スライディングウィンドウ幅 w(左)と attention head 数 H(右)を変化させたときの D1・D2 それぞれの F1-score。w=60、H=6 付近で両データセットともピークを示す。)
## 考察
- **運用上の教訓**: リアルタイムでのマルチモーダルデータ収集が深層学習モデルの前提として不可欠であり、Prometheus(metric)・ELK Stack(log)・Skywalking(trace)のようなオープンソース監視基盤の利用を推奨。16 日分のデータで訓練し、オンライン検知は 10 分のウィンドウで動作する。
- **評価指標の選び方**: EVT による自動閾値決定は F1 を最大化するが、実運用では precision/recall のどちらを優先するかは業務種別によって異なる(例: コアなオンラインショッピングサービスは recall 重視、データ分析サービスは precision 重視)。著者らは precision/recall に重み付けできるインタフェースの提供を今後の課題とする。
- **妥当性への脅威**: D1 は障害注入、D2 は運用者による手動ラベリングに基づく(ノイズは僅少と主張)。監視データの粒度は 1 分だが、より細かい/粗い粒度でも手法自体は機能すると考えている(未検証)。モダリティ数が 2 以上であれば手法は機能すると考えられ、1 モダリティにしか現れない障害についても、履歴マルチモーダルデータの相関に加えて全モダリティ中の異常割合を考慮することで対応するとしている。
## 強み / 弱点・課題
- **強み**: マイクロサービス障害検知において metric・log・trace の 3 モダリティを同時に扱い、かつそれらの相関構造自体をグラフとして学習する初の手法の一つ。実運用規模の 2 データセット(公開 GAIA・非公開商業銀行データ)で高い F1-score と実運用速度(1 ウィンドウ 0.02 秒)を両立。EVT による動的閾値決定で分布シフトに対応。
- **弱点・課題**: 評価に用いる 2 データセットは規模・種類ともに限定的で、より大規模なシステムでの検証は将来課題として明言されている。F1-score のみを最適化する設計であり、precision/recall の業務要件別の重み付けは未実装。障害の根本原因箇所特定(RCL)や障害種別分類(FTI)は対象外で、あくまで「障害の有無」を検知する二値タスクに限定される。ログクラスタリングに BERT+DBSCAN を用いるため、ログテンプレートの急増(新規ログの大量発生)時の挙動は論文内で詳述されていない。