日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于实时计算(Flink)与高斯模型构建实时异常检测系统

發布時間:2024/8/23 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于实时计算(Flink)与高斯模型构建实时异常检测系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

案例與解決方案匯總頁:
阿里云實時計算產品案例&解決方案匯總

1. 概述

異常檢測(anomaly detection)指的是對不符合預期模式或數據集(英語:dataset)中其他項目的項目、事件或觀測值的識別。實際應用包括入侵檢測、欺詐檢測、故障檢測、系統健康監測、傳感器網絡事件檢測和生態系統干擾檢測等。

之前我曾經介紹過一種異常檢測的解決方案《準實時異常檢測系統》,但那個架構中Flink主要承擔的還是檢測后的分析,真正的異常檢測被前置到了業務系統中。

在本文中,我將介紹一種直接使用Flink做實時異常檢測的方案。

2. 異常檢測算法

2.1 異常的種類

異常(離群點)分為三種類型:

  • 全局離群點,最基本的異常,即一個單獨的遠離群體的點;
  • 情境(或條件)離群點,該點在全局不算異常,但在某個上下文中卻是異常的,比如人的性別為男性不是異常,但如果選定范圍為女廁所,那么這個就是異常的;
  • 集體離群點,單個點不算異常,但一系列組合起來卻是異常。比如偶爾的服務延遲不是異常,但如果整個系統大部分服務都延遲那就是異常。

本文以說明基本原理為主,所以使用最簡單的全局離群點做例子,即只關注檢測某個單獨的事件是否偏離正常。

完成的異常分類可參考:這里

2.2 異常監測算法

關于異常檢測有大量的算法,詳細理論可參考scikit-learn的《?Novelty and Outlier Detection》一章。

本文選取最簡單的一種算法,基于高斯分布分布的異常檢測算法。

假設我們已經有了一組正常數據,x(1),x(2),..,x(m),那么針對新的數據x,我們判斷這個x是否正常,可以計算x在正常數據中出現的概率如何,如果x出現的概率大于某個閾值,則為正常,否則即為異常,這種方法叫做密度估計。

那么我們可以假設,這些數據遵循高斯分布(正態分布),那么對某個特定的值來說,其在高斯分布的中間部分是比較正常的,在兩端可能是異常的。

通常如果我們認為變量 x 符合高斯分布 x~N(μ,σ2),則其概率密度函數為:

異常檢測算法的步驟為:

  • 對于給定的數據集 x(1),x(2),...,x(m),針對每一個特征計算 μ 和 σ2 的估計值,計算方法如下。
  • 一旦我們獲得了每個特征的平均值和方差的估計值,給定新的一個訓練實例,根據模型計算每一特征的概率再相乘得到整體的概率:

注:可能你要檢測的事件只有一個特征,那么很顯然就不用再乘了。

  • 選擇一個閾值 ε,將 p(x)=ε 作為判定邊界,當 p(x)>ε 時預測數據為正常數據,否則為異常,這樣就完成了整個異常檢測過程。
    注:閾值ε的選擇可以直接估算一個,也可以簡單訓練得出,具體訓練方式這里不再贅述,可參考這里。

總結一下,其實整個模型我們只需要計算正常數據中每個特征的平均值和方差,再加上最終整體閾值,所以模型是非常小的,完全可以把這些數據計算出來后隨代碼一起發布。(當然從解耦性來說,最好能夠獨立存儲,通過注冊或配置的方式來發布)

3. 基于Flink和高斯分布的實時異常檢測系統

前面介紹了異常檢測的基本算法,那么本小節我們就基于Flink和高斯分布設計一個實時異常檢測系統。

假設你是一個公司的運維人員,負責管理全公司的IT資源,為了保證公司IT穩定性,提前發現主機或者系統的問題,你設計了這樣一個實時異常檢測系統。

系統采用Kapp架構,關于Kappa架構的說明可參考:數據倉庫介紹與實時數倉案例。

系統架構與所選軟件如下圖所示:

數據源包括兩個部分,主機運行信息與系統的運行日志,主機運行信息通過collectd?收集,系統運行日志通過Filebeat收集,二者均將數據推送到Kafka。

數據通過Kafka流轉,支持Flink計算過程中的實時分層。

最終數據存儲到Elastic Search中,并通過KIBANA可視化。

異常檢測由實時計算Flink完成,計算過程很簡單:

  • 數據清洗,把原始數據格式化;
  • 計算特征值,計算所選事件的特征,比如某個服務打印日志的頻率就是一個特征,假如系統調用失敗,則會打印一條失敗記錄,那么當系統打印失敗記錄的頻率變高時,系統可能出現了問題;
  • 計算特征統計值,即找到該特征的高斯分布(確定平均值和方差即可確定高斯分布);

這里高斯分布直接在線計算,好處是隨時可更新,沒有顯式的訓練過程,缺點是可能受異常數據影響。另外一種方式是離線選取一些正常數據然后計算高斯分布。

  • 檢測異常值,利用2.2節中的算法原理檢測異常事件;
  • 輸出,最后把檢測出的異常數據寫到下游;

好了,一個簡單的實時異常檢測系統就完成了。

4. 總結

在本文中,在Kappa架構上添加簡單的異常檢測算法即可完成一個簡單有效的實時異常檢測系統。

該架構具備良好的可擴展性,基于Flink的Kappa架構讓系統能夠應對超大規模數據流,并且能夠在數據流轉的過程中完成處理。

此外,雖然本文中直接把異常檢測算法內置到了Flink的邏輯中,但實際的應用中很容易把通過算法API的方式讓系統解耦:算法團隊訓練并提供一個用以判別某個事件或特征是否異常的算法服務,在Flink的處理過程中計算好特征值之后調用這個算法服務進行檢測。

?

原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的基于实时计算(Flink)与高斯模型构建实时异常检测系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。