SQL老司机,居然是这样智能挖掘异常日志
摘要:?提取異常日志是個(gè)大難題 面對(duì)海量的日志(TB乃至PB級(jí)別),如何從日志中挖掘出異常信息對(duì)于大部分的開發(fā)者而言是一個(gè)大難題。例如,判斷機(jī)器的延時(shí)是否正常,部分request是否正常。通常,我們對(duì)于異常的數(shù)據(jù),要及時(shí)的報(bào)警,以盡快的處理。
提取異常日志是個(gè)大難題
面對(duì)海量的日志(TB乃至PB級(jí)別),如何從日志中挖掘出異常信息對(duì)于大部分的開發(fā)者而言是一個(gè)大難題。例如,判斷機(jī)器的延時(shí)是否正常,部分request是否正常。通常,我們對(duì)于異常的數(shù)據(jù),要及時(shí)的報(bào)警,以盡快的處理。
通常我們是怎么搞得呢? 在以前,依賴于開發(fā)者的經(jīng)驗(yàn),來根據(jù)某些特定的特征,判斷是否達(dá)到了閾值,例如根據(jù)延時(shí)是否達(dá)到了某個(gè)特定的值,或者h(yuǎn)ttp 響應(yīng)碼5xx的比例達(dá)到了某個(gè)閾值。這個(gè)閾值,依賴于資深的開發(fā)者的豐富的經(jīng)驗(yàn)。
AI dev/ops
AI算法的迅猛發(fā)展,給異常日志挖掘提供了新的方向。大名鼎鼎的AI領(lǐng)域?qū)<覅嵌鬟_(dá)(Andrew NG),在他所教授的Machine Learning課程中提供了一種Abnormal Detection算法。算法通過訓(xùn)練數(shù)據(jù)集,獲得一個(gè)正態(tài)分布。然后檢測(cè)目標(biāo)數(shù)據(jù)是否落在了正態(tài)分布的邊緣位置,如果落在了邊緣位置,則認(rèn)為是一個(gè)異常數(shù)據(jù)。
算法步驟:
接下來,我們介紹如何在SQL中使用該算法來檢測(cè)異常。
日志服務(wù)提供的異常檢測(cè)算法
以延時(shí)為例,我們來看哪些延時(shí)是異常的。 延時(shí)的分布一般是這樣的:
不滿足正太的需求,要把上述圖形轉(zhuǎn)化成正太分布,對(duì)latency 求對(duì)數(shù):log(latency)
- 值μ和方差σ^2:
stddev即標(biāo)準(zhǔn)差
variance即方差
avg_ln即ln(latency)的均值
avglatency即latency的均值
- 提取異常數(shù)據(jù)
把方差標(biāo)準(zhǔn)差和均值帶入公式,使用where篩選出來小于0.01的結(jié)果,即異常值??梢钥吹?#xff0c;獲得的結(jié)果,明顯大于軍latency的均值。
原文鏈接
干貨好文,請(qǐng)關(guān)注掃描以下二維碼:
總結(jié)
以上是生活随笔為你收集整理的SQL老司机,居然是这样智能挖掘异常日志的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你的食物变质没?用AI算法来检测一下吧
- 下一篇: Apache旗下顶级开源盛会 HBase