運維大數據日記:故障根源分析之關聯規則挖掘

當運維工程師每天面對來自不同監控系統中數量龐大、類型複雜的故障告警時,是否感到心有餘而力不足呢?

當這些故障告警來自各個不同的廠家設備且類型不一,需要你對各種異構設備都非常瞭解且完全憑藉個人經驗時,你是否變得無所適從?

1240

當你從應用系統預警追查到其所在服務器,從中間件服務追查到數據庫集羣,再從某個數據庫節點的緩存命中指標降低追查到是因爲存儲磁盤的IOPS指標出現了瓶頸,才導致應用所涉及的設備都產生不同程度告警時,你是否曾經祈禱過——當應用系統因訪問過慢預警時,上帝能否直接告訴我,就是存儲磁盤的IOPS指標出現了問題呢?

答案是肯定的。ITBA運維大數據分析——“故障根源分析”爲你揭開神祕的面紗。

1240

在實際運維過程中,現場各種專業監控工具多達十餘種,在每天產生紛繁複雜的告警數據中,存在大量的冗餘告警信息,它們之間隱藏着一些具有強關聯性的告警規則,也就是說某些設施的某些指標告警是由於別的指標告警引起的。

不同類型的設備與設備之間,設備的指標與指標之間,都存在着這樣的關係,我們只有找到產生告警的根本原因,才能快速、有效地排除故障,確保業務系統安全穩定運行。

告警關聯分析通過融合並轉化多條有聯繫的告警,將它們轉換成一條或少量幾條包含更多故障信息的告警,以此達到降低活動告警的種類和數目,減輕運維人員的工作壓力,提高故障精確定位效率,使系統運行更快恢復正常。

1240

關聯規則挖掘是在給定數據集中搜索反覆出現的聯繫。“故障根源分析”旨在發現“告警事務”中“有趣”的相關聯繫。什麼是“告警事務”?所謂事務就是幾乎在同一時刻同時發生的事情,我們把幾乎在同一時刻發生的告警集合當作一個告警事務,由於告警的產生以及告警數據的傳輸都會存在一定的時間滯後或者誤差,所以把某一“時間窗”(如10分鐘)內產生的告警近似爲同一告警事務。何爲“有趣”的聯繫呢?我們主要對那種常常(置信度高)在同一事務中出現,並且在歷史事務中出現頻率較高(支持度大)的指標告警數據感興趣,其數學描述如下闡述。

關聯規則是形如下圖的蘊涵表達式,其中x和y是不相交的項集,即關聯規則的強度可以用它的支持度和置信度度量,支持度(s,support)和置信度(c,confidence)這兩種度量的形式定義如下:

1240

N爲歷史時間段內總的事務數,σ(x∪y)爲支持度計數,表示x和y在N次事務中同時出現的次數。置信度實際上是一個條件概率,表示事件x已發生的條件下事件y發生的概率。

關聯規則的發現,給定事務的集合T,發現滿足最小支持度閾值Minsup的所有項集(頻繁項集),並從頻繁項集中提取所有滿足最小置信度閾值Minconf的規則。從大型數據集中挖掘頻繁項集的主要挑戰是,這種挖掘常常產生大量滿足最小支持度(Minsup)閾值的項集,當Minsup設置得很低時尤其如此,一個寬度爲100的項集產生可能的頻繁項集個數爲

1240

頻繁項集的複雜度是指數級的。

ITBA關聯分析採用的是Apriori算法(Agrawal和R.Srikant於1994年提出),通過限制候選產生髮現頻繁項集,如果一個項集是頻繁的,則它的所有子集也是頻繁的(先驗原理),若{a,b,c}是頻繁項集,那麼{a,b}、{a,c}、{b,c}都是頻繁項集。Apriori算法的核心思想是根據先驗原理的逆否命題(如果一個項集是非頻繁項集,那麼它的超集也不是頻繁項集)來進行候選頻繁項集的剪枝。

1240

                                                                   關聯指標拓撲圖

當我們從所有歷史告警數據中挖掘出形如A->B,B->C,C->D這樣的強關聯規則時,我們可以把這三條規則合併爲一條規則,隨着時間的推移,告警數據量越來越大,且上述關聯規則依然有效時,我們就有充分的理由認爲告警D是由告警A引起的,而不必去關心告警B和C,從而大大減輕運維人員的工作量,提高了排查故障的準確率和時效性。

1240

                                                                         關聯指標組排查

隨着ITBA運維大數據分析平臺的廣泛推廣和深入應用,不同用戶、不同業務系統發現的告警關聯規則可以逐步提煉爲知識,對IT運維具有深遠的指導意義。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章