## Memo
### Summary on Tweet
#SRE論文紹介
> アラートストーム」に着目した初の研究で、アラートストームを正確に特定するための異常検出と、故障診断のためにアラートストームから代表的なアラートを選択するための要約手法が提案されている。中国の銀行のシステムでの評価の結果、ストーム内のアラートのうちエンジニアが検査すべきアラート数を2%まで低減できている。アルゴリズムは極値理論のSPOTとJaccard距離とDBSCANによるクラスタリング。/ ICSE/FSE'20 "Understanding and Handling Alert Storm for Online Service Systems"
> https://twitter.com/yuuk1t/status/1648558134481547264
### 0. Metadata
- [[NetManAIOps]]グループからのICSE/SEIPのポスター論文。
### 1. Contributions
1. 数百のサービスと数千のサーバーかな成る商業銀行(China Everbright Bank)システムの合計3年間300万回のアラートデータから「アラートストーム」(1分あたりのアラート数が500より大きい現象)を理解するための最初の実証研究を実施した。
2. アラートストームを正確に特定するための異常検出と、故障診断のためにアラートストームから代表的なアラートを選択するための要約手法を提案した。
3. アラートストーム検出法の性能はF1スコアが0.9以上であり、要約法は調査する必要のあるアラートの数を98%以上を削減した。
### 2. Standpoints
- 問題意識:圧倒的な数のアラートに直面したとき、エンジニアが各アラートを手動で検査して故障を特定するには、非常に時間がかかる。
- アラート集約[22]、アラート相関[19]、アラートランキング[10]、アラートクラスタリング[11]の研究はあるが、「アラートストーム」を調査する研究はない。
- 著者らのアラートストームの実証研究では、アラートストームは週1回程度発生し、アラートストームに数人のエンジニアが対処するのに1時間程度要する。手動で固定閾値を設定するだけでは正確な検出は難しく、さらに、アラートには障害とは無関係な規則的なものと、障害に関連し相関(テキスト相関とトポロジカル相関)をもつものがある。
- そこで、固定閾値ではなくデータから閾値を決定し、アラートのノイズを除去し、相関するアラートをグループとして識別する必要がある。
### 3. Major Ideas
![[Pasted image 20230419131916.png|600]]
- アラートストーム検出:固定閾値の代わりに [[極値理論]]に基づく[[SPOT]]により、正常時の1分あたりのアラート数を学習し、オンライン異常検出する。図7は、提案法の閾値が動的に変化する例を示している。
- ![[Pasted image 20230419132637.png|400]]
- アラートストーム要約:
- ![[Pasted image 20230419132830.png|500]]
- (1) 無関係なアラートをフィルタリングするアラートノイズを除去
- ![[Pasted image 20230419133123.png|400]]
- 図4の定期アラートと通常アラートを除去するために、One-Class SVやLocal Outlier Factorと比較し、計算量が小さく精度が高い[[Isolation Forest]]を用いる。
- トークンを正規化済みのアラート内容、サーバ、サービス、タイプ、アラート時間(時間、 曜日、週末、非週末)、頻度の8つを特徴量として用いる。
- $n_{anomaly} = n_{test} − \cfrac{timespan_{test}}{time span_{train}} \times ntrain$で、top $n_{anomaly}$の異常スコアが最大のアラートを 保持し、他のアラートをフィルタリングする。
- (2) テキストとトポロジーの相関関係に基づいてクラスタリング
- 類似度指標として、アラートテキストのbag of wardsに対する[[ジャカード距離|Jaccard index]]を採用する。また、トポロジーの類似性は、サービス/サーバのトポロジーグラフ上の2つのノード間の最短経路長で計算できる。
- 最終的な類似度は重み$\alpha$ に対して、$similarity(a,b) = α ×textual(a,b)+(1−α)×topological(a,b)$で計算できる。
- クラスタリングアルゴリズムは、データに基づいてkを推論可能な[[DBSCAN]]を用いる。minPtsを2とし、elbow法を用いてεの値を設定する。
- (3) [[重心法|Centroid method]]によりクラスタの代表メトリクスを選出する。
### 4. Experimental design & Results
- データセット:166件のアラートストーム(最小アラート数は410、最大は8739)を含む。
- アラートストーム検出にて、固定閾値法と比較したときの精度は、表3のように0.9以上である。固定閾値法では、A->B->C(時間経過)に従い精度が低下する理由は、システム規模増大により、アラート数が増加するため。
- ![[Pasted image 20230419134630.png|400]]
- エンジニアが検査する必要のあるアラート数(労力)の評価
- Severity(Critical,warningなど)での識別では、90%未満の労力削減に対して、要約法では、98%以上の労力削減ができており、アラートストーム内の2%のアラートを検査すればよいことになる。
- ![[Pasted image 20230419134931.png|400]]
- アラートストーム要約法の精度:表5のように、提案法でもprecision値が0.75であり、ベースラインよりは高いが、絶対値としてさほど高くはない。ノイズ除去法が偽陰性をもつため、無関係または相関のあるアラートがわずかに存在するためである。
- ![[Pasted image 20230419135350.png|400]]
- ノイズ除去法の評価:OCSVMとLOFと比べて、Precision/Recall/F1-scoreすべてよい。
- クラスタリングの評価:Accuracyと正規化相互情報(NMI, 真のクラスと結果のクラスタの[[相互情報量]]に基づく情報理論的な尺度)を採用した。KDD-Cluster、[[k-means]]、[[階層型クラスタリング|階層的クラスタリング]]と比べて、提案法であるDBSCANの性能が優れている。
- ![[Pasted image 20230419135945.png|200]]
- 距離重み$\alpha$は0.6のときが最良である。
- 実行時間の評価:アラート数1000回未満では、7秒未満となり、十分に高速である。計算量は$O(n^2)$。
- ![[Pasted image 20230419140130.png|200]]
### 5. Discussions & Limitations
- 本研究の妥当性について、データセットのラベリングにおけるノイズ、データセットの選択バイアス、エンジニアの労力削減の評価メトリクスと、DBSCANや重み$\alpha$などのパラメータ設定により結果が変動する可能性がある。
### 6. Thoughts
- 実世界の現場の運用状況を定量的に調査し、調査から得られた課題に対して、機械学習手法を組み合わせるプラクティスを重視する種別の研究の中では理想的なものである。機械学習手法自体は、よく知られた簡易的なものの組み合わせである。
- 表4のSeverityの評価で、Severityという広く普及した方法で、提案法より低いとはいえ9割労力が削減できているので、提案法をよく見せすぎているのではないかと疑いがある。と思ったが、提案法が98%という100%に近い数字に達していることに凄みがあるように思えてきた。
- アラートストーム要約処理のノイズ除去とクラスタリング+代表アラート選択は、[[research/tsifter/TSifter]]のフェーズ1とフェーズ2の相似形である。TSifterでは、アラートではなくメトリクスを対象とするが、この論文を関連研究として引用して位置づけを示せるとよさそう。
## Abstract
アラートは、オンラインサービスシステムの監視システムにおいて、サービス部品の異常を記録し、エンジニアに報告するための重要なデータソースの一種である。一般に、サービス障害の発生は、大量のアラートを伴う傾向があり、これをアラートストームと呼ぶ。しかし、このような大量のアラートをエンジニアが手作業で調査するのは時間と手間がかかるため、[[Alert Storm]]は障害診断に大きな課題をもたらします。アラートストームを実際に理解するために、我々は大規模な実世界のアラートデータに基づくアラートストームの最初の実証研究を実施し、いくつかの貴重な洞察を得ました。この研究から得られた知見に基づき、アラートストームを処理するための新しいアプローチを提案します。具体的には、アラートストームを正確に特定することを目的としたアラートストーム検出と、障害診断のためにエンジニアに代表的なアラートの小さなセットを推奨することを目的としたアラートストーム要約がこのアプローチに含まれます。実世界のデータセットを用いた実験により、我々のアラートストーム検出が高いF1スコア(0.9以上)を達成できることが実証された。さらに、我々のアラートストーム要約は、検査が必要なアラートの数を98%以上削減し、代表的なアラートを正確に発見することができます。我々は、我々のアプローチを大規模商業銀行(China EverBright Bank)のサービスメンテナンスに適用することに成功し、また、業界における成功事例と教訓を共有することができます。
[[2020__ICSE-SEIP__Understanding and Handling Alert Storm for Online Service Systems__translation]]