# Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications
## 概要
Jacopo Soldani・Antonio Brogi(University of Pisa)による ACM Computing Surveys 55(3) 掲載のサーベイ。数百のサービスが相互作用するマルチサービスアプリケーションでは障害の検知と原因の特定が難しくなる、という問題設定から出発し、既存技術を**依拠するデータ源(ログ / 分散トレーシング / 監視)という単一の軸**で整理する。異常検知(第 3 章)と根本原因分析(第 4 章)の双方を同じ軸で貫くため、**同じデータ源が検知と原因特定でどう使い分けられるかが対比できる**構成になっている。各章の Discussion 節では、検知できる異常の型と粒度・導入コスト・精度・説明可能性という実務的な観点で技術群を横並び比較する。
> [!abstract] 概要(abstract の日本語訳)
> マイクロサービスとクラウドネイティブなソフトウェアアーキテクチャが得た勢いは、今日の企業 IT をマルチサービスアプリケーションへと押し進めた。アプリケーション内のサービスとサービス間相互作用の増殖は、しばしば数百の相互作用するサービスから成るまでになり、障害を検知することと、その起こりうる根本原因を同定することを難しくしている。後者は、アプリケーションを速やかに復旧し修正するために決定的に重要である。障害をその症状に基づいて速やかに検知するため、すなわち 1 つ以上のアプリケーションサービスにおける異常な振る舞いを観測することによって検知するため、また、そうしたサービスのログや監視された性能を分析して観測された異常の起こりうる根本原因を判定するために、さまざまな技術が提案されてきた。本サーベイの目的は、現代のマルチサービスアプリケーションにおける異常検知と根本原因分析について、現在利用可能な技術の構造化された概観と定性的な分析を与えることである。分析から浮かび上がるいくつかの未解決の課題と研究の方向についても論じる。
## 書誌情報
- 著者: Jacopo Soldani, Antonio Brogi(University of Pisa, Italy)
- 媒体: ACM Computing Surveys 55(3), Article 59
- 発表: 2021-05-26(arXiv:2105.12378v1)
- URL: https://doi.org/10.1145/3501297
- 構成: 全 11 章(36 PDF ページ)。第 3 章・第 4 章はいずれも 12〜13 ページあり、データ源別の下位節が本サーベイの主軸をなすため節単位に分割した
- 原本: `.raw/theses/survey-soldani-2021-anomaly-detection-rca/`
## 構成と主要テーマ
本サーベイの構成は**単一の軸を 2 回使う**ところに特徴がある。異常検知(第 3 章)と根本原因分析(第 4 章)という別々のタスクを、どちらも**依拠するデータ源(ログ / 分散トレーシング / 監視)**で切り分ける。同じ軸を二度通すことで、**同じデータ源が検知と原因特定でどう使い分けられるか**が対比できる。
> [!note] 章番号について
> 原本の第 3 章・第 4 章はいずれも 12〜13 ページあり、データ源別の下位節が本サーベイの主軸をなす。1 枚に押し込むと分類が失われるため §3.1〜§3.4・§4.1〜§4.4 を独立章として切り出し、全 6 章 → 全 11 章に組み直した。§4.1 と §4.2 は同一 PDF ページから始まるため 1 枚に統合してある。
### 問題設定(第 1〜2 章)
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 1 Introduction]] — サービスとサービス間相互作用の増殖がカスケード障害の切り分けを困難にするという問題設定と、本サーベイの目的・構成。
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 2 Terminology]] — failure / anomaly、application-level / service-level anomaly、root cause analysis 対 debugging、および観測データ(KPI・service logs・application logs・distributed traces)の定義。
### 異常検知(第 3 章)
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 3.1 Log-based Anomaly Detection Techniques]] — 正常運用時ログから制御フローグラフを教師なしで採掘し、逸脱で機能的異常を検知する(OASIS ほか)。
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 3.2 Distributed Tracing-based Anomaly Detection Techniques]] — 教師なし学習(TraceAnomaly)・教師あり学習(MEPFL)・トレース比較の 3 系統。トレース比較のみ計算コストからオフライン限定。
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 3.3 Monitoring-based Anomaly Detection Techniques]] — 教師なし学習・教師あり学習・**SLO Check**・**ハートビート**の 4 型。後 2 者は機械学習を使わない。
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 3.4 Discussion (Anomaly Detection)]] — 25 手法を class / method / type / granularity / needed input の 5 軸で整理し、型と粒度 対 導入コストのトレードオフ、訓練問題、説明可能性を総括する。
### 根本原因分析(第 4 章)
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 4.1 Log-based and Distributed Tracing-based Root Cause Analysis Techniques]] — ログベースは因果グラフ分析の 1 系統のみ、トレースベースは可視化・直接分析・トポロジグラフの 3 系統。
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 4.3 Monitoring-based Root Cause Analysis Techniques]] — 直接分析・トポロジグラフ分析・因果グラフ分析の 3 分類。全 15 手法を入力/グラフ構築/絞り込み/出力で比較する。
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 4.4 Discussion (Root Cause Analysis)]] — 25 手法を 7 軸で整理し、同定できる原因の詳細度 対 導入コスト、相関 ≠ 因果という原理的限界、説明可能性と対処策を総括する。
### 締めくくり(第 5〜6 章)
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 5 Related Work]] — 先行 6 件との守備範囲の比較。異常検知と RCA を一体で詳細に扱う初のサーベイと位置づける。
→ [[@2021__CSUR__Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications - A Survey - Chapter 6 Conclusions]] — 性能の定量比較・経時変化への対応・説明可能性・対処策推薦の 4 方向を今後の課題として挙げる。
## 位置づけと影響
- **同じ軸を検知と診断の両方に通したことで、データ源が何を決めているのかが見える**。ログベースは計装が要らない代わりに粗い粒度の単一根本原因しか返せず、トレース/監視ベースは計装コストと引き換えに詳細でランク付きの根本原因を返す。このトレードオフは、検知側(§3.4.2)と診断側(§4.4.2)で同型に現れる。
- **データ源の内側でさらに粒度が分岐する入れ子構造がある**。監視ベース異常検知は 4 つの型に分かれるが、**SLO Check とハートビートは機械学習を使わず**、SLO Check はアプリケーション全体の粒度に限られる。一方で機械学習系の多くはサービス粒度で検知する。「データ源が粒度を決める」という一段目の観察の内側に、「手法の型がさらに粒度を分ける」という二段目がある。
- **[[Anomaly Detection - A Survey]](Chandola ほか、2009)と切り口が直交する**。Chandola は**手法が置いている仮定**でカテゴリを切り、本サーベイは**依拠するデータ源**で切る。前者は「その技法が成り立つ条件」を、後者は「その技法を動かすのに何が必要か」を問う。両者を交差させた表は未整備で、[[異常検知]] の未解決の問いに記録した。
- **説明可能性の 16 年**: Chandola ほか(2009)にこの論点は存在せず、本サーベイ(2021)が未解決課題として言語化し、2025 年の Trustworthy AI レビューが要件として形式化する。この変遷は [[異常検知]] の横断的知見に記録した。
- **PC アルゴリズムとランダムウォークへの一極集中**: §4.4.1 によれば、因果グラフは LOUD を除く全手法が PC アルゴリズムで構築し、探索は MonitorRank 由来のランダムウォークが最も広く再利用される。手法の多様性が、実は少数の共通部品の組み合わせであることを示す。
- **entity 名の衝突を 2 件検出した**。本サーベイの `Seer`(ASPLOS 系のマイクロサービス性能異常検知)は既存 [[Seer]](Astral のオペレータ予測コンポーネント)と別実体、`Sieve` も同様に既存 entity と衝突するため、いずれも entity 化せず本文中のプレーンテキストにとどめた。
## 関連
- 概念: [[異常検知]] / [[根本原因分析]] / [[Fault Localization]] / [[マイクロサービスアーキテクチャ]] / [[分散トレーシング]] / [[コンテナオーケストレーション]] / [[ログベース異常検知]]
## 出典
- Jacopo Soldani and Antonio Brogi, "Anomaly Detection and Failure Root Cause Analysis in (Micro)Service-Based Cloud Applications: A Survey", *ACM Computing Surveys*, 55(3), Article 59, 2021.