成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

換種監控姿勢:基于深度學習+流處理的時序告警系統

安全 應用安全
告警系統是運維人員的“眼”,是維護生產安全的第一層保障。傳統基于規則的告警系統是通過同比、環比、差分、設置閥值等手段來判斷當前指標是否存在異常,但往往不盡人意,存在維護成本高、準確率低等問題。隨著人工智能的興起,大數據運維也迎來了新的契機,同時也對自身告警系統的實時性提出了更高的需求。

背景

告警系統是運維人員的“眼”,是維護生產安全的第一層保障。傳統基于規則的告警系統是通過同比、環比、差分、設置閥值等手段來判斷當前指標是否存在異常,但往往不盡人意,存在維護成本高、準確率低等問題。隨著人工智能的興起,大數據運維也迎來了新的契機,同時也對自身告警系統的實時性提出了更高的需求。

于是我們結合Tensorflow深度學習算法,基于大數據平臺天然原生的分布式流處理框架Spark,打造了一套高覆蓋性與強實時性的告警系統,有效的減少了人工規則的參與,并降低了維護成本。

本文主要從“基于深度學習的時序預測算法”和“算法結合Spark流處理的實時告警”兩個方面對本套告警系統進行介紹。框架圖如下圖所示:

一、基于深度學習的時序預測算法

使用算法監控時序數據的常規思路,是通過本時刻實時值與用前幾個時間點的時序數據對本時刻的預測值進行比較。因此,告警的第一步是做好時序預測工作,即時序分析。

引用一段百度文庫對時序分析原理的介紹:“承認事物發展的延續性, 事物的現實是歷史發展的結果,而事物的未來又是現實的延伸,事物的過去和未來是有聯系的。時間序列分析預測法的哲學依據,是唯物辯證法中的基本觀點,即認為一切事物都是發展變化的,事物的發展變化在時間上具有連續性。”

時序分析的過程分為以下三個操作步驟:

  • 第一步:數據預處理;
  • 第二步:核心指標分類;
  • 第三步:選擇算法訓練模型。

下面對以上步驟展開敘述。

1、數據預處理

利用好數據的前提是數據是好用的,因此所有的數據分析工作第一步一定要先經過數據預處理,主要包括數據清洗和特征提取。

時序預測基于歷史數據預測未來,歷史數據中的“空值”、“異常值”將會極大的影響到預測的質量,因此在訓練預測模型前需要對訓練集時序數據進行清洗。可以先對數據繪圖直觀的看一下是否有周期性,然后對于空值采取補齊的方式,具體補齊方式可以根據原序列有明顯周期性則可以用歷史多個周期在這一個時間點的平均值,無明顯周期性則可以用前后兩點的均值代替,對于異常值同理。

時序分析的特征提取,業界多采用滑動窗口時序特性分析的方法,也即多個時間窗口之間數據做統計上的均值、方差、協方差等對比,分解出時間序列的成分。時間序列的成分則分為3種:

  • 長期趨勢(T):一段時間后序列總體呈現的上升或下降的趨勢;
  • 季節性(S):周期性固定的變化;
  • 余項(I):時間序列除去趨勢、季節性后的偶然性波動,稱為隨機性(random),也稱不規則波動,是常態。

長期趨勢(T)

季節波動(S)

余項(I)

不同于分類場景中將提取的特征用于模型訓練,這里特征提取的季節波動和余項都將服務于下一步的指標分類。

2、核心指標分類

對核心指標的時序預測,則需要事先分解時序數據的成分并進行預分類。參照業界時序預測指標分類的方式,用是否具有周期性和是否穩定兩個標準可分為以下四類,以集群環境真實指標圖解說明:

(1)周期性穩定

(2)周期性非穩定

(3)非周期性穩定

(4)非周期性非穩定

從算法角度上,我們提出了一種基于時序分解,對周期分量進行觀察并對余項進行方差分析的指標類型判定方式:

Step 1:時序分解算法將時序數據分解出“趨勢分量”、“周期分量”和“余項”

通過觀察周期分量,上述第三張圖(Seasonality)具有明顯規律性波動才被認為具有周期性。

Step 2:對時序分解法分解出的“余項”做方差分析

首先對“余項”進行預處理,采用“歸一化”的處理方式將“余項”歸一化到[0,1]區間。再計算出“歸一化余項”的方差,只有方差在一定閾值以內才被認定為穩定。具體閾值的大小沒有一個統一標準,在對多達近百個指標進行如上分析,最終閾值取了0.2。

至此,完成黃金指標的類型分類。對于非周期性指標的監控,業界內暫時也沒有一個好的方案,主要還是采用同比環比、差分、設置閥值等經典規則方法。同一種方法,不可能解決所有類型指標的監控,使用新算法并不意味著完全摒棄一些舊方式,這里不做進一步探討。對于周期性非平穩序列,則可以通過粗粒度時窗,比如原本1分鐘一個的點,現統計每5分鐘的值進行求和或者求均,都可以處理成周期平穩序列。因此,本文主要針對通過以上方式分類和處理得到的周期性平穩數據。

3、基于LSTM算法的時序預測

時序預測的算法整體上有兩大類:基于統計學的傳統機器學習算法(注:簡稱機器學習算法,下同);基于神經網絡的深度學習算法。常用的機器學習算法,如指數平滑法(holt-winters)、移動平均自回歸模型(ARIMA)以及添加了周期性成分的季節性移動平均自回歸模型(SARIMAX);常用的深度學習算法,如深度神經網絡(DNN)、循環神經網絡(RNN)以及解決了RNN存在長期依賴問題的長短時記憶網絡(LSTM)。

考慮到平臺部署、穩定性等實用性因素,并對統計學模型兩種算法ARIMA、SARIMAX跟深度學習模型LSTM算法的實時性進行對比,在真實環境下,進行多次對比取均值,得出以下結論:

可以看到,LSTM模型不僅在訓練跟預測上所花費的時間均遠低于其他兩個模型,其他兩個模型的實時性無法滿足需求;同時在資源消耗以及丟失值敏感問題上也要優于其他。因此,最終選擇的是深度學習算法——LSTM。

1)LSTM簡介

近幾年,隨著計算能力的迅猛提升,上個世紀末研究到一半的深度學習(Deep Learning,簡稱DL)在今天重新“翻熱”,并在各個領域大放異彩。深度學習模仿大腦的神經元之間傳遞,處理信息的模式,對其算法思想的理解需要有一定機器學習的基礎,下面只做簡要介紹。

深度學習隸屬于機器學習,與基于人工規則定義特征的傳統機器學習相比,DL明確了特征學習的重要性。簡單的深度學習算法有深度神經網絡DNN,它通過逐層特征變換,將樣本在原空間的特征表示變換到一個新特征空間,通過組合低層特征形成更加抽象的高層表示屬性類別或特征。

隨著深度學習的進一步研究,除了DNN以外還有較多應用于圖像識別的卷積神經網絡CNN以及自然語言處理NLP常用到的循環神經網絡RNN等等。RNN又因為其輸入是同一事物的多個時間點的數據,通過不停的將信息循環操作,保證信息持續存在,從而可以利用前面的事件信息的特性被應用于時序分析。本文中的LSTM是一種特殊的循環神經網絡RNN,它既有RNN保存歷史信息的功能,還解決了普通RNN存在的梯度消失跟梯度爆炸問題。LSTM也有很多變種,這里只給出樸素LSTM的網絡結構圖。

2)LSTM模型訓練操作過程

LSTM 算法的時序預測方式是先基于指標的歷史數據訓練出模型,再根據當前數據預測指標未來。以下具體的操作使用的是Tensorflow框架,Tensorflow是Tensor(張量:可類比多維數組)以數據流圖的形式進行數值計算。

Step 1:已經預處理過的數據轉換為Tensorflow可接受的張量形式

  • A:數據歸一化(方便模型訓練快速收斂);
  • B:訓練數據轉換格式(X:x(1),……,x(n);Y:x(n+1));
  • C:Reshape成指定形狀的張量。

以上過程舉例說明,假設有時序數據(1,2,3,4,5,6,7,8,9),設n為3。那么對這個序列進行處理得到(1,2,3;4),(2,3,4;5),……,(7,8,9;10)共7個訓練樣本。然后再轉換為張量格式類似下圖所示:

兩個6維三階張量X

兩個1維二階張量Y

Step2:定義網絡結構

  • A:選擇網絡:這里使用的是LSTM網絡;
  • B:設置參數:輸入層(層數,隱層神經元個數)、輸出層、timestep;
  • C:初始化各個神經元之間的連接(權重)跟偏置。

Step3:網絡訓練

  • A:設置優化器、損失函數、學習率、激活函數…;
  • B:設置訓練方式(epoch,batch_size)。

Step4:生產預測

  • A:保存模型;
  • B:復用模型進行預測,注意需要反歸一化。

經過以上過程,即完成了LSTM模型的訓練,此時得到的網絡結構格式如下(這里以一個簡單的單隱藏層的LSTM網絡進行圖解,非集群使用真實模型):

二、算法結合Spark流處理的實時告警

上一章節中,通過深度學習算法有效的對指標進行預測,本章節則將其通過與Spark流處理框架的結合應用到告警系統的生產部署中。限于Spark已有的機器學習庫MLlib里沒有深度學習算法,以及大數據組件跟深度學習算法之間的語言兼容問題。因此嘗試在Spark中調用訓練好的Tensorflow模型,即“Tensorflow離線訓練,Spark實時預測“的AI生產部署模式。

具體分為以下幾步:模型上傳至HDFS;Yarn調度Spark Streaming加載PB模型;數據的實時消費與告警。涉及到以下引擎層和Hadoop底層:

1、模型上傳至HDFS

把一章節中的深度學習算法模型輸出為可上傳至HDFS文件系統格式的文件并上傳至集群HDFS。首先對深度學習模型的保存方式做了簡單對比分析:

通過以上對比分析,根據場景適用性、接口豐富性、開發語言兼容性等優勢,最終選用PB格式的保存方式。PB模型實質是一個PB文件,是深度學習算法最終生成的一個二進制文件,需要Tensorflow框架進行讀取、編譯,最后在程序中形成一個預測模型。對其上傳則通過crontab定期執行上傳即可,上傳周期可調。

2、Spark加載PB模型

首先將PB文件存儲在HDFS上,通過Spark Streaming程序可以直接讀取到HDFS上的PB文件,然后利用Tensorflow框架將所有讀取到的PB文件,還原成之前訓練好的神經網絡模型,用于深度學習的預測。因為在生產環境中,程序是On Yarn模式,以此來保證程序的高可用和高性能,所以所有的PB模型都是通過Spark程序的Driver組件統一生成,然后在向下分發至各個Executor,預測過程將在各個Job中執行。

此外,因為選用的是Spark Streaming框架,所以支持動態PB模型加載,即如果想更新PB模型,可以直接替換HDFS上的PB文件,程序即可識別新的PB文件,生成新的PB模型為后面的數據進行預測。動態更新PB模型遍于調整預測規則,根據指標數據的實時變動,更加有效的更改調節算法策略,使得預測結果更加精準。

整套程序上基于Spark Streaming框架開發的,所以在實時性能夠得以保證,在數據平臺搭建完善的基礎上,所有的實時數據指標信息都會存放在Kafka消息隊列中。程序在實時消費Kafka獲取當前指標數據,每一次預測都會根據當前的指標數據計算,得到的預測結果會更加貼合真實值。

上圖為Spark Streaming基本內部原理,SparkStreaming從實時數據流接入數據,再將其劃分為一個個小批量供后續Spark engine處理,所以實際上,Spark是按一個個小批量來處理數據流的。這正是符合我們的實際應用場景,數據實時接收,一批批處理,再結合深度學習算法,實現了智能AI實時預測的功能。

3、數據的實時消費與告警

為防止瞬時異常導致的模型失真問題,因此需要有個替換邏輯來保證模型的穩定。我們利用了外部應用Redis,因Redis是內存數據庫,其速度快、多類型存儲以及其他豐富特性,能夠完全支持我們的存儲需求。

對每一個需要預測的指標數據設計了三個不同的數據集,分別為forecast隊列、real隊列和pb隊列:

  • forecast隊列即為預測值隊列,此隊列中存放的是根據深度學習算法生成的預測值;
  • real隊列即為真實值隊列,此隊列中存放的是從Kafka消息隊列中消費得來的真實數據;
  • pb隊列即為模型輸入隊列,此隊列是用來灌輸到PB模型中的數據隊列。

三個隊列互相協作,保證模型的穩定。首先在程序第一次啟動時,需要先積累足夠多的原始數據,填入到real隊列和pb隊列中,當積累了t分鐘后,有了足夠多的數據可以預測時,將pb隊列中的數據填入PB模型中,預測t+1分鐘的數據,將t+1分鐘的預測值填入到forecast隊列中。

在t+1分鐘時,拿到了t+1分鐘的真實值,用t+1分鐘的真實值與t分鐘預測出來的t+1分鐘的預測值根據特定的比對規則比對,如果真實值與預測值符合比對要求,那么將t+1分鐘的真實值填入到pb隊列中,反之則用t+1分鐘的預測值填入到pb隊列中,并且保持pb模型要求的長度,去掉pb隊列中時間最早的數據,用替換更改過后的pb隊列填入到PB模型中,預測t+2分鐘的預測值。

當以上步驟進行了足夠多的時候,那么real隊列與forecast隊列都已經積累的足夠多的數據,并且時間都會互相匹配,即real隊列的數據為t分鐘至t+n分鐘的真實值,forecast隊列的數據為t+1分鐘至t+n+1分鐘的預測值,那么在t+n+1分鐘時,拿到了t+n+1分鐘的真實數據,即可按照每個時間的真實值和預測值互相對比,判斷此指標數據是否出現異常,如果比對結果中的異常時間點超過既定個數,那么此指標則被判定有異常發生,立刻會發出告警,提醒運維人員檢查修復。

對于每個隊列的長度和應用都做成可隨時更改的配置項,里面有詳細的要求和規則來規定和約束每個不同的預測模型的數據隊列便于模型定制化調整,真正的實現了特定預測,特殊預測和準確預測。

三、總結

整個告警系統平臺,采用深度學習算法提高了預測的準確性,再結合Spark Streaming流處理框架保障了告警的實時性,減少了人為規則的參與,降低運維人員維護的時間投入。

從2019年年底正式上線,現已穩定支撐某運營商包括Kafka、HBase等多個大數據技術棧的核心指標業務的實時監控。從平臺正式運行至今,總的查全率能達到98%以上;由于核心業務更注重查全率,因此查準率稍低,查準率大約維持在90%的水平;同時集群環境提供的容錯性,以及Spark Streaming流處理提供的實時消費能力極大的降低了告警的時間延遲,理論上可以達到與指標采集頻率相差毫秒級的延遲。

 

責任編輯:武曉燕 來源: DBAplus社群
相關推薦

2024-05-17 13:17:39

2022-09-02 08:24:07

前端通用數據特定數據

2022-07-26 06:23:04

搭建前端監控前端應用

2010-06-10 09:49:38

UML時序圖

2017-08-28 15:00:02

深度學習DeepSense傳感器

2025-01-14 08:59:16

2023-05-22 08:00:00

深度學習機器學習人工智能

2020-12-30 05:34:25

監控PrometheusGrafana

2022-10-26 15:41:38

深度學習Deepfake機器學習

2024-11-04 08:14:48

2022-04-17 23:09:07

深度學習人工智能芯片

2022-03-09 09:56:14

深度學習算法人工智能

2023-11-13 11:01:25

數據技術

2017-02-05 21:02:44

大數據深度學習推薦系統

2022-07-29 21:23:54

Grafana微服務

2017-05-22 13:15:45

TensorFlow深度學習

2022-09-04 23:24:45

Go語言監控

2017-07-06 15:02:53

OpenGL ES架構GPU

2021-09-27 19:41:31

監控Sentry Alerts

2021-11-03 09:00:00

深度學習自然語言機器學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 高清成人免费视频 | 亚洲国产精品一区二区www | 久久久久久久久国产精品 | 91精品国产91久久久久福利 | 精品国产精品三级精品av网址 | 久久久高清| 亚洲深夜福利 | 精品国产99 | 欧美精品乱码久久久久久按摩 | 亚洲不卡在线观看 | 亚洲乱码一区二区三区在线观看 | 免费av播放| 日本色综合 | 亚洲导航深夜福利涩涩屋 | 欧美中文一区 | 永久av | 日韩1区| 国产成人精品久久久 | 久久精品伊人 | 中文字幕成人免费视频 | 日韩电影免费在线观看中文字幕 | 欧美日本在线 | 黄色免费在线观看网址 | 97精品国产97久久久久久免费 | 在线视频中文字幕 | 天堂一区二区三区四区 | 精品视频一区二区三区在线观看 | 亚洲91精品| 日本在线观看视频 | 久久精品一区二区三区四区 | 亚洲高清一区二区三区 | 国产探花在线精品一区二区 | 国产99久久 | 久久久久九九九女人毛片 | 不卡一区 | 久久久久久久国产 | 久久精品| 三级黄色网址 | 亚洲第一黄色网 | 国产精品视频久久 | 麻豆a级片 |