天天看點

日志服務在CDN流量名額中的異常檢測實戰(上)

本次專題主要包括四個方面内容,第一部分介紹AIOps平台,以及具備的能力和功能。第二部分講解阿裡雲日志服務平台的作用,以及支撐AIOps的應用。第三部分為目前關注的異常檢測算法的介紹。第四部分以一個實際的場景作為案例介紹流量場景中的實戰,并加以分析。

本文為第一部分和第二部分,

點選這裡,檢視第三部分和第四部分。 想看精彩直播回放, 請點選這裡。 以下為精彩直播内容整理:

一、AIOps平台

大家眼中的AIOps平台

在最近三年内,AIOps平台被國内的研發團隊所熟知,早在2015年AIOps平台就已經出現,之後做了一些相關整合。根據2017年文獻中相關的定義,AIOps平台作為一個人工智能的系統,可以內建大資料、AI智能算法以及機器學習相關的方法,用以增強IT運維的操作,包括服務的可用性、性能監控、系統中各個事件之間的關聯分析以及IT服務的管理和自動化的運維。

根據2019年相關的資訊可以得知,基于中心化的監控方式和監控工具将會一直存在,并且會一直提供一些基礎的資料采集、加工和分析可視化的方法。同時可能會引入一些流計算和人工智能的方法,通過實時的計算和分析,加上一些算法的輔助,能夠解決一些關于單目标或者相關事件以及不同操作之間的分析邏輯。

日志服務在CDN流量名額中的異常檢測實戰(上)

如上圖所示,最基礎的是資料層面,其中最直接的來源是監控資料,用來采集機器的各種名額、服務的各種名額或者線上的一些日志。日志采集完成之後,經過一些加工轉換,先通過一些簡單的資料統計的方法、查詢的方法或者可視化的方法做成報表。再通過報表和可視化的方法去梳理各個次元、各個業務或者關注的KPI之間的一些關系,實作定位和告警。再向上一層會涉及到一些不同資料源,包括一些事件、程式運作的日志、機器的名額及變更的人員等。将所有的東西關聯在一起進行綜合的分析,得到相應的結果。再向上是針對整個中心會存在一些資源畫像和服務畫像以及各種各樣的profile,通過這些profile可以定期的或實時的報出目前系統的服務品質、狀态以及鍊路是否瓶頸或高危。這些資訊通過機器的方法實作統計、整理及關聯,得到一些初步的結論。最頂層是指将所有的東西放在一起作為一個大腦。因為在語音領域或者圖像領域,通常習慣将資訊做整合,形成一個類似的大腦,将多元的資訊輸入進去,可以對這些資料進行預判,甚至可以進行排程。

目前能達到最終的AIOps系統層面,可能會分為幾個階段,根據查閱相關資料,最開始需要建構出基于服務或機器級的監控名額。第二階段需要有一個能力很強并且能分析大資料的平台,可以通過自己搭建,但是要具備一些較大規模分析資料的能力。針對AIOps場景,首先要明确知道AIOps場景中需要解決的問題,根據這些問題使用的算法特征是通過原始資料進行加工、轉換得到的,涉及到資料清洗的工作。接下來階段五為日志的分析平台,階段六為場景實施,比如巡檢場景或者容量預測場景。階段七為生産的線上運作,涉及到一些操作,包括模型版本的管理、模型的能力是否能夠很好地處理模型的變更、頻繁的變更對模型的影響是否很大。

接下來需要逐漸的完善一些标簽,因為基于現有的建摸能力,有監督學習的領域實作的效果還是很好的,但是實際需要大量的樣本,不斷回報以及建立标簽的過程是長期的并且細緻的工作。最後使用一套AIOps大腦來實作異常的判别,包括異常的時間和原因,以及判别是否需要人工或機器自動的做一些擴縮容、切流量等操作。

我眼中的AIOps平台

日志服務在CDN流量名額中的異常檢測實戰(上)

如上圖所示,最底層與上文所描述的是相似的,應該會有很多的監控日志、事件日志、服務日志及人員日志。人員對系統的影響是很大的,比如釋出變更、平台的操作記錄。不同日志存儲的底層模型是不一樣的,比如監控日志是一個時序資訊,它的底層更多的傾向于時序資料庫。事件日志更多的是一些變更資訊,可能結構會很複雜。服務日志可能多種多樣,比如端的、流的以及服務端的,各種各樣的行為模式日志都要記錄。人員資訊的變更不會很大,是一個結構化的資料。針對這些資料來說,統稱為異構存儲,涉及到比較複雜的資料采集以及第三方資料的接入。

往上一層為算力平台,涉及到異構計算,包括離線計算、實時計算,并且都依賴于底層的資料清洗及加工。不管基于什麼樣的平台,對于複雜結構的日志解析,其效果都不是很好,必須具備一套強大的資料清洗和轉換的功能,使資料規整,通過規整的資料能較好的得到樣本特征。

再往上一層涉及到基于離散或實時樣本的算法研發,算法涉及到一些規則,比如某台機器的CPU很高、主幹服務上的延遲很高,同時會作為異常現象,通過基于簡單的邏輯規則來判斷。不同的服務在不同的規則下會有不同狀态,基于不同規則和狀态下做出的決策就是基于規則的決策。在文本層面和時序層面可能會存在模式的不同,比如版本釋出。

例如在某t1時刻釋出了B版本,B版本上線之後在一分鐘之内可能沒反應,但在5分鐘之内背景可能會出現大量的異常行為,很有可能是由于釋出導緻的問題。預測分為很多種,其中磁盤容量預測使用簡單的線性模型就可以解決。線上記憶體可能存線上性增長,也會出現不定期的下跌情況,這種情況的出現可能是程式的洩露,下跌是因為線上的記憶體垃圾做了些回收。通過發掘出來這些模式,以及模式分析和預測的方法可以定位出機器出現的異常,按照這個趨勢發展,可以知道這台機器很有可能在一個時間點達到系統記憶體的上線,導緻線上服務崩潰。

異常包括單節點異常、多機異常及模式異常等。診斷需要在服務的鍊路層面上解決一些問題。可能發生一個異常,這個異常僅僅是一個結果,想要知道異常的根因,可以檢視上遊服務或者邊界服務,在時間線上分析檢視哪些屬于異常。當系統被入侵後會出現一些異常操作,包括根據時間點進來的端口資訊,這些統稱為溯源。同時涉及一些人工的規則,領域的知識以及資源畫像。資源畫像可以通過AI算法解決一些比較穩定的服務或者主幹服務。一旦畫像發生偏移,機器就會發生故障,同時可以做一些預測。

基于所有的這些資訊,需要做出決策,最初是使用人工決策,就是所謂的自動化運維。根據不同的場景寫很多腳本,并且觸發一些自定義的腳本規則,這些大部分是常見的重複性的運維工作,可以減少運維成本。對于确定性的異常也知道應該怎樣解決,可以提高運維的效率。經驗決策與人工決策大部分是重合的,此外還有一種決策為智能體決策,是指讓AI了解針對異常怎樣做出決策,達到及時止損的目的。目前,智能體決策還是比較難實作的,最常用的還是人工決策和經驗決策。對于任意一種操作,首先要衡量這種操作的風險性以及有效性,需要考慮這種操作是否能快速的止損,往往這種複雜操作不是單點能解決的。

二、阿裡雲的日志服務平台

  • 日志是實體世界的數字化載體
日志服務在CDN流量名額中的異常檢測實戰(上)

日志服務指的是針對文本資料,如上圖中第一張圖是文本日志,第二張是監控日志,第三張為結構化的日志,比如創業資訊。後幾張為監控終端的一些裝置,比如移動端、PC端以及路由器站點的一些日志。還有一些服務存在,這些服務經過采集、加工和轉換後,使用者就可以友善的介入。

  • 讓使用者專注在“分析”上,遠離瑣碎的工作
日志服務在CDN流量名額中的異常檢測實戰(上)

采集的方法有很多種,比如上圖中的Logtail采集,它可以讓使用者的資料能夠低成本的傳到中心化區域。同時基于現有的資料通過一些索引的方法可以實作在日志中的關鍵詞查詢,以及複雜circle的分析,還可以做一些簡單的AI相關操作。在資料分發部分的應用中,可以使用這部分資料做模組化和分析。所有的資料和報表都可以通過圖表的形式展示出來,使得使用者可以靈活的可視化自己的狀态、服務和名額。

  • 面向Sec/Dev/IT Ops日志處理,分析引擎
日志服務在CDN流量名額中的異常檢測實戰(上)

輸入資料源分為很多種,如上圖所示。資料加工主要是針對雜亂無章的資料做一些轉換和清洗的工作。這部分對于結構化的資料分析是非常有意義的。由于雜亂無章的資料很難統一管理,會導緻查詢的效率降低和模組化的複雜度提高。接下來是上下文實時的分析,以及機器學習相關的方法,最後通過一些告警的方法,将一些資訊告知第三方。

掃描下方二維碼,加入開發與運維釘釘交流群,檢視更多精彩内容。

日志服務在CDN流量名額中的異常檢測實戰(上)

繼續閱讀