## Memo
- [[MetricSifter]]に似ている。
## Memo with LLM
https://claude.ai/chat/7c96b117-2e4d-4085-bdbf-424fbc6b011f
# KIMetrixの論文分析: クラウドマイクロサービス向けメトリック重要度識別システム
## 論文情報
- **タイトル**: Metric Criticality Identification for Cloud Microservices
- **著者と所属**:
- Akanksha Singal (IBM Research - India and IIIT Delhi, India)
- Divya Pathak (IBM Research - India, India)
- Kaustabha Ray (IBM Research - India, India)
- Felix George (IBM Research - India, India)
- Mudit Verma (IBM Research - India, India)
- Pratibha Moogi (IBM Research - India, India)
- **カンファレンス/ジャーナル名**: arXiv:2501.03547v1 [cs.DC]
- **発表年**: 2025年(1月7日に投稿)
## 論文概要
この論文では、クラウドマイクロサービス環境において、膨大な監視メトリックの中から重要なメトリックを特定するKIMetrixというシステムを提案しています。KIMetrixは、情報理論的手法とマイクロサービスのトポロジーを活用して、サイト信頼性エンジニア(SRE)がアラート設定を行うために必要な重要なメトリックセットを特定し、監視の有効性を向上させることを目的としています。
## 詳細解説
### 問題設定
- **入力**:
- マイクロサービスベースのアプリケーションのトポロジー(有向非巡回グラフ(DAG)として表現)
- 各マイクロサービスから収集された時系列メトリックデータ
- マイクロサービス間の実行トレースデータ
- **出力**:
- 各マイクロサービスに対する重要なメトリックの最小部分集合のマッピング(Γ*A: M → P(σ))
- **必要なデータ**:
- アプリケーショントポロジー A(M, E):マイクロサービス集合 M と通信エッジ E
- 各マイクロサービス m に関連するメトリック集合 Ψm
- マイクロサービス間の実行パスの確率分布(トレースから抽出)
- **主な課題**:
- マイクロサービスアーキテクチャでは、従来のモノリシックアプリケーションと比較して、監視データ量が膨大
- マイクロサービス間の複雑な呼び出し関係と確率的な実行性質を考慮する必要がある
- 専門家の知識に依存せず、最小限かつ効果的なメトリック集合を自動的に特定する必要がある
### 提案手法
KIMetrixは以下の3つの主要アルゴリズムで構成されています:
1. **Algorithm 1: Microservice Metric Subset Selection**
- エントロピーと相互情報量を用いて単一マイクロサービスのメトリック部分集合を選択
- 各メトリックのエントロピーを計算し、高いエントロピーを持つメトリックを優先
- ピボットセットと相互情報量を用いて冗長性の高いメトリックを除外
2. **Algorithm 2: Topology Aware Subset Selection**
- アプリケーショントポロジーを考慮したメトリック選択
- トポロジーソートを行い、ルートから順に各マイクロサービスを処理
- 先行マイクロサービスの選択メトリックをピボットセットとして利用
- 実行パス確率に基づいて閾値εを調整(確率の低いパスに対してはεを高く設定)
3. **Algorithm 3: AIMD Approximate Minimal Subset Construction**
- Additive Increase Multiplicative Decrease (AIMD)アプローチによる閾値εの自動調整
- 相関係数を用いてカバレッジパーセンテージを計算
- 部分集合サイズと許容範囲τを用いて、閾値εを加算的に増加(β)または乗算的に減少(α)させる
- 最もカバレッジの高い最小部分集合を選択
KIMetrixの主要な数式:
- メトリックψkのエントロピー: H(ψk) = -∑ P(ψk = ψᵢk) log₂P(ψk = ψᵢk)
- メトリック間の相互情報量: M(ψ1,ψ2) = ∑ P(ψ1,ψ2) log[P(ψ1,ψ2)/(P(ψ1)P(ψ2))]
- 最小メトリック部分集合問題: Γ*A = argmax_{ΓA} ∑_{m∈M} ∑_{ψ1,ψ2∈ΓA(m),ψ1≠ψ2} M(ψ1,ψ2)
- パスの確率: P(m1 → m2 → ... → mn) = P(m1) · ∏ᵢ₌₂ⁿ P(mᵢ| mᵢ₋₁)
- 部分集合のカバレッジ: C(Γ) = |{ψk ∈ σ | ψk ∈ Γ ∨ ∃ψm ∈ Γ : Θ(ψk,ψm) > θ}| / |σ|
### 新規性
1. **情報理論に基づくメトリック選択**:
- エントロピーと相互情報量を用いてメトリックの重要度を定量化(従来の相関係数のみの手法と異なる)
- メトリック間の冗長性を効果的に特定し、最小部分集合を抽出
2. **トポロジー認識型アプローチ**:
- マイクロサービス間のトポロジーと実行パス確率を考慮した部分集合選択
- パス確率を用いた動的閾値調整により、頻度の高いパスと低いパスの両方に対して適切なメトリック選択を実現
3. **教師なし学習アプローチ**:
- 専門家の知識やラベル付きデータに依存せず、メトリックデータとトレースのみから重要なメトリックを特定
- AIMDアプローチによる適応的な閾値調整で、最適な部分集合サイズを自動的に決定
4. **問題の定式化**:
- 最小メトリック部分集合問題をNP完全問題として定式化し、証明
- 現実的な近似解法を提案
### 実験設定
- **アプリケーション**: [[Quote of the Day]] (QoTD) マイクロサービスアプリケーション
- 8つのマイクロサービス(Web, Quote, Ratings, Author, Pdf, Engraving, Qrcode, Database)
- OpenShiftクラスタ上でホスティング
- [ ] [[Prometheus]]とinstanaを使用してメトリックとトレースを収集
- **負荷生成**:
- 10〜30分間隔でランダムなユーザーリクエストパターンを生成
- 7つの異なるユースケースを通じてアプリケーションを包括的にテスト
- ウォームアップ、安定、クールダウンフェーズを含む実世界のユーザー行動を模倣
- **異常注入**:
- QoTD APIを使用して1〜10分間のランダムな期間で異常を注入
- CPU使用率、メモリ消費、エンドポイントレイテンシ、エラーなど40種類の異常を導入
- 異常後、10〜30分間の健全状態を経て繰り返し
- **データセット**:
- Healthy: 変動する負荷のみで異常がない状態で収集したメトリックとトレース
- Mix: 変動する負荷と異常注入を組み合わせて収集したメトリックとトレース
- 3秒間隔で1日間収集、合計253の一意なメトリック
- **評価指標**:
- C: 全メトリックに対するカバレッジパーセンテージ
- CA: 異常影響メトリックに対するカバレッジパーセンテージ
- 相関係数の種類:相互情報量、ピアソンR、スピアマンランク、ケンドールランク
### 実験結果
- **メトリック削減率**:
- Healthyデータでは、相関手法に応じて約60-70%(81.35%のカバレッジCで)
- Mixデータでは、相関手法に応じて約62-73%(86.90%-90.08%のカバレッジCで)
- **トポロジー認識型アプローチの効率性**:
- Healthyデータでの実行時間:Flat 12.00時間 vs. Topology 5.15時間
- Mixデータでの実行時間:Flat 6.90時間 vs. Topology 0.60時間
- トポロジー認識型アプローチは大幅な実行時間短縮を実現
- **既存の特徴選択手法との比較**:
- KIMetrixは全体カバレッジCにおいて他の手法を大幅に上回り、86.90%-90.08%を達成
- 異常影響メトリックに対するカバレッジCAも76.85%と高く、SelectKBest(73.15%)やmRMR(73.15%)よりも優れた性能
- 教師あり学習手法(SelectKBest、mRMR)はCAでは高いが、Cでは低い
- 教師なし学習手法(Boruta、Max Weighted Clique)はサブセットサイズを自動的に返すが、KIMetrixよりもカバレッジが低い
- **AIMDパラメータの影響**:
- 高いα(乗算係数)とβ(加算係数)値はより速い収束をもたらす
- Healthyデータは相関が高いため、Mixデータよりも多くの反復が必要
- 最小部分集合サイズはα-βペアによって異なるが、カバレッジは安定している
総じて、KIMetrixはマイクロサービスアプリケーションの監視に必要なメトリックを大幅に削減しながら、高いカバレッジを維持できることが示されました。特にトポロジー認識型アプローチは実行効率を大幅に向上させ、教師なし学習アプローチは専門家の知識を必要とせずに効果的なメトリック集合を特定できます。
## Abstract
サイト信頼性エンジニアにとって、アラートは通常、システムが期待通りに動作していない可能性を示す最初の、そしてしばしば主要な兆候です。アラートがトリガーされると、サイト信頼性エンジニアは、システムの問題を診断するために、メトリクス、ログ、トレースなど、さまざまなモダリティにわたる詳細なデータを掘り下げます。しかし、大規模なクラウドネイティブシステムでは、マルチモーダルな観測可能データポイントが大量にあるため、最適なアラートセットを定義することはますます困難になっています。一般的に、アラートは手作業でキュレーションされ、主にメトリクス・モダリティで定義され、マルチモーダル観測可能性データの複雑な関係の大きな状態空間を手作業でナビゲートする専門家に大きく依存しています。このようなプロセスでは、アラートの定義が不十分となり、重要なイベントを見逃してしまう可能性があります。従来のモノリシック・アーキテクチャからマイクロサービス・ベースのアーキテクチャへの移行に伴い、アラートの定義はさらに困難になっています。これは、常に確率的な環境におけるアプリケーション・トポロジーに支配されたマイクロサービス間の複雑な相互作用のためです。この問題に取り組むために、我々はデータ駆動型のアプローチを取り、過去のメトリックデータと軽量のマイクロサービスの[[Distributed Tracing|分散トレース]]のみに依存してマイクロサービスのメトリックの重要性を特定するシステムであるKIMetrixを提案する。KIMetrixは、アラートを定義するための重要なメトリクスセットを特定することで、サブジェクト・マター・エキスパートを大幅に支援します。K