時(shí)下數(shù)據(jù)科學(xué)是一個(gè)熱點(diǎn)話題,各個(gè)行業(yè)里面也有一些比較成熟的應(yīng)用,在這個(gè)大的背景下,我們?cè)诖蠹s一年前就開始有意識(shí)地把數(shù)據(jù)技術(shù)、數(shù)據(jù)分析、數(shù)據(jù)挖掘這些技術(shù)融合到運(yùn)維領(lǐng)域的應(yīng)用。在這個(gè)過程中,我們做的時(shí)間其實(shí)不很長(zhǎng),比較短,目前只是做了一些相對(duì)來(lái)說較為簡(jiǎn)單的一些事情,但取得的成果在公司內(nèi)部感覺還是比較好的。今天我就跟大家分享一下我們?cè)趹?yīng)用開發(fā)過程中的一些案例,也就是說,如何讓數(shù)據(jù)技術(shù)在運(yùn)維實(shí)踐中得到充分的應(yīng)用,希望對(duì)大家的工作有一些參考價(jià)值。
分享目錄:
1.數(shù)據(jù)處理技術(shù)應(yīng)用
2.數(shù)據(jù)分析技術(shù)應(yīng)用
3.數(shù)據(jù)挖掘技術(shù)應(yīng)用
4.應(yīng)用生態(tài)建設(shè)及規(guī)劃
前言
在運(yùn)維中我們會(huì)碰到各種各樣的問題,但有些問題我們經(jīng)常重復(fù)遇到,并且形成了一些提問范式,如:
-
“有問題或故障發(fā)生嗎?”,這個(gè)提問轉(zhuǎn)換成數(shù)學(xué)問題就是建立“異常檢測(cè)”模型;
-
當(dāng)我們確認(rèn)有問題時(shí),我們本能地會(huì)問“哪里出了問題”,這便是一個(gè)“根因分析”問題;
-
對(duì)于一家電商公司來(lái)說,促銷前總是要對(duì)線上系統(tǒng)進(jìn)行容量評(píng)估和擴(kuò)容,這里便有一個(gè)“預(yù)測(cè)”模型需要被建立;
-
當(dāng)我們每做完一個(gè)項(xiàng)目,需要對(duì)項(xiàng)目需要達(dá)成的目標(biāo)進(jìn)行定量的評(píng)估,這便是一個(gè)“績(jī)效分析”的問題。
目前各類數(shù)學(xué)模型的輸出在我們的具體工作中主要被用作輔助決策來(lái)使用,有兩個(gè)原因使我們還不能直接把結(jié)果自動(dòng)地用于決策:一是我們對(duì)數(shù)據(jù)的使用能力還不能做到面面俱到,很多業(yè)務(wù)知識(shí)還無(wú)法用算法描述;二是算法的輸出結(jié)果一般都是有概率的,在很多需要“絕對(duì)正確”的場(chǎng)合只能作為參考。在實(shí)際工作中,算法和業(yè)務(wù)規(guī)則庫(kù)都會(huì)進(jìn)行建設(shè),用來(lái)幫助運(yùn)維人員更容易和正確地做出決定。
基于此,今天給大家重點(diǎn)介紹“數(shù)據(jù)處理技術(shù)”、“數(shù)據(jù)分析技術(shù)”、“數(shù)據(jù)挖掘技術(shù)”這三個(gè)方面在唯品會(huì)的應(yīng)用實(shí)踐,主要會(huì)講到一些應(yīng)用場(chǎng)景,最后談下“數(shù)據(jù)技術(shù)”在唯品會(huì)運(yùn)維的生態(tài)建設(shè)和一些規(guī)劃。
1.數(shù)據(jù)處理技術(shù)應(yīng)用
對(duì)于數(shù)據(jù)處理技術(shù)來(lái)說,我們主要是需要解決以下五個(gè)方面的問題:
-
數(shù)據(jù)的準(zhǔn)確性、及時(shí)性
-
海量數(shù)據(jù)的實(shí)時(shí)計(jì)算
-
多維數(shù)據(jù)的實(shí)時(shí)監(jiān)控
這里有些問題在行業(yè)里已有比較成熟的解決方案,有些可能就不是每個(gè)公司都會(huì)碰到。
數(shù)據(jù)采集
首先我們看數(shù)據(jù)采集,對(duì)唯品會(huì)來(lái)說,我們主要是兩類數(shù)據(jù),一類是日志數(shù)據(jù),一類是數(shù)據(jù)庫(kù)數(shù)據(jù)。
對(duì)于日志數(shù)據(jù)來(lái)說,我們有兩類采集,一類是客戶端的日志采集,一類是服務(wù)器端的日志采集。對(duì)于服務(wù)器端的日志采集,實(shí)際上是比較簡(jiǎn)單的,一般來(lái)說就是落到本地盤之后,通過Flume傳送到公司的Kafka集群,然后大家在上面消費(fèi)。對(duì)于客戶端行為的采集,分成兩種,一種是Web端的采集,一般來(lái)說就是通過異步請(qǐng)求在Nginx上落日志;第二個(gè)是APP端的采集,一般是通過一個(gè)接口調(diào)用的方式,把這些數(shù)據(jù)落到服務(wù)端,再由服務(wù)端把這個(gè)數(shù)據(jù)收集起來(lái)。對(duì)于數(shù)據(jù)庫(kù)的采集,實(shí)際上我們也是有兩種方法的,一種是直接在從庫(kù)上來(lái)做這種指標(biāo)的計(jì)算,還有一種就是對(duì)于復(fù)雜的應(yīng)用,我們會(huì)把DB的Binlog做一些解析,解析完了之后放到一個(gè)消息總線上,實(shí)際上就放到Kafka上,然后讓大家來(lái)進(jìn)行一個(gè)消費(fèi),每個(gè)應(yīng)用都是根據(jù)自己的特點(diǎn),重構(gòu)自己的數(shù)據(jù)結(jié)構(gòu)。有些會(huì)還原數(shù)據(jù)庫(kù),有些就直接用消息來(lái)計(jì)算指標(biāo),具體要根據(jù)情況進(jìn)行分析。
上圖主要描述了唯品會(huì)用到的一些主要開源產(chǎn)品,基本上是這樣。
數(shù)據(jù)計(jì)算
數(shù)據(jù)計(jì)算是比較重要的一環(huán),實(shí)際上要兼顧性能和靈活性兩個(gè)方面。對(duì)日志的處理,會(huì)有一個(gè)日志解析程序來(lái)消費(fèi)Kafka的消息,“日志解析”實(shí)現(xiàn)一個(gè)實(shí)時(shí)ETL的過程,我們會(huì)根據(jù)配置(基本配置也跟ETL差不多)去生成預(yù)定義的標(biāo)準(zhǔn)格式,后續(xù)就交給Spark做聚合。“日志解析”由于日志之間沒有相關(guān)性,可以Map之后并行計(jì)算,吞吐量和資源的投入是成正比的,這樣效率就沒有什么太多的問題。
對(duì)于Spark的聚合配置,一般來(lái)說我們會(huì)把日志解析完的數(shù)據(jù)進(jìn)行定義,定義各個(gè)字段是維度或是指標(biāo),然后會(huì)做一個(gè)全維度的聚合。這里面實(shí)際上也是有個(gè)要求的,我們要求所有的指標(biāo)在各個(gè)維度上都具有累加性,如果不具備累加性(比如百分比這種指標(biāo)),我們?cè)赟park里是不做聚合的,只是在展現(xiàn)的時(shí)候重新計(jì)算。計(jì)算好的數(shù)據(jù)會(huì)放到一個(gè)OLAP和MOLAP的數(shù)據(jù)庫(kù)里。
還有一種情況,是通過腳本在數(shù)據(jù)庫(kù)從庫(kù)上直接進(jìn)行指標(biāo)的計(jì)算,一般用于只有時(shí)間維度的指標(biāo)計(jì)算,配置好的計(jì)算腳本,我們會(huì)用公司開源的一個(gè)產(chǎn)品Saturn來(lái)進(jìn)行一個(gè)分布式調(diào)度。Saturn這個(gè)東西還是不錯(cuò)的,推薦大家去嘗試一下。對(duì)于日志的詳細(xì)查詢,我們還是放到ES里,通過全文檢索的方式來(lái)查詢。
數(shù)據(jù)展現(xiàn)
數(shù)據(jù)展現(xiàn)是最終的結(jié)果輸出,實(shí)際工作中,我們對(duì)結(jié)果數(shù)據(jù)的查詢效率要求比較嚴(yán)苛。因?yàn)檫@些結(jié)果數(shù)據(jù)不僅用于前端,還用于告警輸出等各個(gè)方面。對(duì)于告警的數(shù)據(jù)我們需要做到毫秒級(jí)響應(yīng),前端界面一般要求是在3秒內(nèi)渲染完成。為了完成這個(gè)要求,我們構(gòu)建了一個(gè)ROLAP數(shù)據(jù)庫(kù),還有一個(gè)MOLAP的數(shù)據(jù)庫(kù),在ROLAP的數(shù)據(jù)庫(kù)里,一般只存當(dāng)天的多維數(shù)據(jù),而在MOLAP的數(shù)據(jù)庫(kù)里,會(huì)存歷史數(shù)據(jù)。對(duì)于MOLAP數(shù)據(jù)庫(kù)的檢索,由于應(yīng)用主要是切片方面的需求,基本上都是K-value模式的一個(gè)檢索,所以它比較快。MySQL里一般是存放單維度指標(biāo),應(yīng)該這么講,它不是多維數(shù)據(jù)。Redis緩沖里,一般會(huì)存放我們的秒級(jí)數(shù)據(jù),還有一些配置信息。這個(gè)架構(gòu)中,最后通過Application Server進(jìn)行一個(gè)數(shù)據(jù)的整合,來(lái)滿足前端數(shù)據(jù)的一個(gè)展示要求。
這是一個(gè)多維分析案例的界面,左邊是我們的分析平臺(tái),右邊是我們的實(shí)時(shí)監(jiān)控平臺(tái),從這上面大家能看到,我們實(shí)際提供的功能主要是對(duì)數(shù)據(jù)切片的能力,這個(gè)能力基本可以滿足我們目前所有的需求。
對(duì)于數(shù)據(jù)分析來(lái)說,基于A/B測(cè)試的對(duì)比分析是一種重要的方法。因?yàn)锳/B測(cè)試對(duì)比的結(jié)果容易被業(yè)務(wù)理解,如果沒有A/B測(cè)試,你說我做了一件事情,這件事情帶來(lái)了一個(gè)好的效果,還是很難經(jīng)得起挑戰(zhàn)的。在A/B測(cè)試中,它需要一些技術(shù)來(lái)支撐的,因?yàn)槲覀冊(cè)诰上同時(shí)會(huì)有很多A/B測(cè)試的案例同時(shí)在跑,你自己的A/B測(cè)試不應(yīng)該被別人干擾,在這種情況下實(shí)際上是要求各個(gè)A/B測(cè)試之間的用戶分布得具有正交性,也就是說別人的A/B測(cè)試集用戶應(yīng)該平均分布在你的A/B測(cè)試集上。
這種實(shí)現(xiàn)我們大約有兩種方法,一種是會(huì)在APP端設(shè)置開關(guān),每個(gè)開關(guān)管理一個(gè)A/B測(cè)試的實(shí)驗(yàn)。更多的A/B測(cè)試,是統(tǒng)一請(qǐng)求后端的A/B測(cè)試分組服務(wù),這個(gè)服務(wù)通過算法來(lái)保證各個(gè)試驗(yàn)之間相互獨(dú)立。一般來(lái)說,當(dāng)客戶端發(fā)起A/B測(cè)試場(chǎng)景的時(shí)候,就會(huì)向A/B測(cè)試分組服務(wù)發(fā)個(gè)請(qǐng)求,然后A/B分組服務(wù)會(huì)返回這個(gè)用戶是屬于A組還是B組,一般是這樣的。
2.數(shù)據(jù)分析技術(shù)應(yīng)用
這部分會(huì)簡(jiǎn)單介紹具體的分析方法,并主要說下應(yīng)用場(chǎng)景和案例�?偟膩�(lái)說,我們的運(yùn)維數(shù)據(jù)分析技術(shù)主要是用于解決兩方面的問題,一方面是“績(jī)效分析”,一方面是“根因分析”。
績(jī)效分析
以前我們做了挺多的項(xiàng)目,這些項(xiàng)目一般來(lái)說WBS分解之后,我們會(huì)對(duì)項(xiàng)目的結(jié)果做一個(gè)簡(jiǎn)單的跟蹤,只是說做完了,還是沒做完,一般也不會(huì)對(duì)它做一些定量的分析或者說對(duì)這個(gè)質(zhì)量有一個(gè)看法。這種情況在我們的項(xiàng)目中非常常見,這種項(xiàng)目一般來(lái)說比較小,都是靠個(gè)人技術(shù)能力就能控制住。
但在大型項(xiàng)目中這種做法就很困難,它會(huì)面臨更多的一個(gè)挑戰(zhàn),尤其是跨部門合作等情況,因?yàn)榇蠹业臏贤ㄊ址ú粌H僅是技術(shù)的,可能還有一些管理上的,這時(shí)就需要大家用數(shù)據(jù)在各個(gè)部門之間作為一個(gè)溝通的橋梁。
-
績(jī)效分析-全站HTTPS項(xiàng)目案例
于是數(shù)據(jù)分析人員就已經(jīng)開始介入來(lái)進(jìn)行分析體系的設(shè)計(jì),主要包括:分析指標(biāo)的設(shè)計(jì)和分析維度的設(shè)計(jì),同時(shí)和研發(fā)確認(rèn)數(shù)據(jù)采集方案、A/B測(cè)試方案、統(tǒng)計(jì)口徑等。
指標(biāo)主要是根據(jù)項(xiàng)目中各項(xiàng)工作都關(guān)注什么問題來(lái)設(shè)計(jì),而維度的設(shè)計(jì)是從當(dāng)指標(biāo)不滿意時(shí),可以在哪些方面著手改進(jìn)來(lái)進(jìn)行。
在這個(gè)項(xiàng)目中可預(yù)見的是,由于證書握手的原因,TCP連接時(shí)間會(huì)變長(zhǎng),可能會(huì)影響用戶體驗(yàn),同時(shí)也會(huì)減少劫持從總體上提高用戶體驗(yàn),所以項(xiàng)目的目標(biāo)設(shè)置為轉(zhuǎn)化率至少不下降,最好能有上升。
我們實(shí)際上是做了一個(gè)HTTPS的全站項(xiàng)目,在項(xiàng)目開始之初,我們就有意識(shí)地把數(shù)據(jù)分析團(tuán)隊(duì)和技術(shù)人員整合到一起跟進(jìn)項(xiàng)目,取得了不錯(cuò)的結(jié)果。數(shù)據(jù)分析人員在項(xiàng)目的初期就已經(jīng)開始介入,來(lái)進(jìn)行分析體系的設(shè)計(jì),主要包括:分析指標(biāo)的設(shè)計(jì)和分析維度的設(shè)計(jì),同時(shí)和研發(fā)確認(rèn)數(shù)據(jù)采集方案,A/B測(cè)試方案,統(tǒng)計(jì)口徑等。
分析人員會(huì)把這些工作做好,可他們?cè)趺磥?lái)設(shè)計(jì)這個(gè)項(xiàng)目的一些指標(biāo)呢?一般來(lái)說,在WBS分解之后,我們關(guān)注什么問題,就會(huì)把這個(gè)問題變換成一個(gè)主要的監(jiān)控指標(biāo)。那如何去設(shè)定這些維度呢?
改善的地方。
首先HTTPS項(xiàng)目,不知道大家有沒有了解,如果了解可能知道HTTPS項(xiàng)目,因?yàn)門CP握手時(shí)間會(huì)延長(zhǎng),這一點(diǎn)上可能會(huì)損失一部分的用戶體驗(yàn),但在防劫持等方面,又會(huì)加強(qiáng)整體的用戶體驗(yàn),在這種情況下,我們項(xiàng)目設(shè)立了一個(gè)最終的主要目標(biāo),也就是保證轉(zhuǎn)化率,這個(gè)轉(zhuǎn)化率不能下降,最好還有一點(diǎn)點(diǎn)提升,在這個(gè)主要目標(biāo)上,我們就控制這個(gè)主要目標(biāo),不停地灰度放量,不停地調(diào)整,這個(gè)效果是比較好的,因?yàn)樵谶@個(gè)過程中我們發(fā)現(xiàn)了很多的問題,同時(shí)這個(gè)項(xiàng)目持續(xù)了大約8個(gè)月,在8個(gè)月中我們沒有發(fā)生過任何重大的故障。
這個(gè)案例是對(duì)錯(cuò)誤率的分析和監(jiān)控,有一次發(fā)現(xiàn)我們的錯(cuò)誤碼是HTTPS的證書認(rèn)證過不去,這種情況在某個(gè)省某個(gè)運(yùn)營(yíng)商大規(guī)模地發(fā)生,我們從分析的角度看這些節(jié)點(diǎn)IP是不是我們自己的IP,這樣我們就知道在這個(gè)地方發(fā)生了大規(guī)模的DNS劫持問題,于是就去協(xié)調(diào)當(dāng)?shù)氐倪\(yùn)營(yíng)商把這個(gè)事情搞定。數(shù)據(jù)分析也會(huì)發(fā)現(xiàn)一些代碼中的問題,我們做HTTPS項(xiàng)目,可能要對(duì)代碼進(jìn)行一些修改,比如說在整個(gè)HTML里是不能存在HTTP協(xié)議的硬編碼,但由于歷史原因,這種地方還是比較多的,開發(fā)人員很難排查完,實(shí)際上需要分析人員通過數(shù)據(jù)分析手段去查,把這些沒有改過的代碼找出來(lái)。
還有一些圖片的問題,我們發(fā)現(xiàn)一些圖片的拼接錯(cuò)誤,當(dāng)然是報(bào)了404,報(bào)了404之后,我們對(duì)這個(gè)錯(cuò)誤碼分析,發(fā)現(xiàn)突然多了,把報(bào)錯(cuò)的URL做一個(gè)排序后發(fā)現(xiàn)一些是拼接的錯(cuò)誤,還有一些是由于特殊字符引起而導(dǎo)致了無(wú)法生成正確的請(qǐng)求。我們對(duì)TCP的握手時(shí)長(zhǎng)也會(huì)進(jìn)行跟蹤,在做灰度選型階段,我們?cè)诓煌娜肟诓捎昧瞬煌募夹g(shù)類型,通過分析各個(gè)入口的握手時(shí)長(zhǎng)來(lái)輔助運(yùn)維人員進(jìn)行一個(gè)加速卡的選型,還有一些參數(shù)調(diào)整等工作。
這個(gè)項(xiàng)目進(jìn)行完成之后,我們總結(jié)了很多經(jīng)驗(yàn),慢慢地在其它的項(xiàng)目中也逐漸有意識(shí)地運(yùn)用數(shù)據(jù)分析技術(shù),把數(shù)據(jù)分析人員和技術(shù)人員有效地結(jié)合在一起。
這里面也有幾個(gè)案例,比如說CDN廠商切換時(shí),我們要跟蹤錯(cuò)誤率、響應(yīng)時(shí)間這樣的一些指標(biāo),來(lái)決定切換是否需要回滾;促銷前的一些流量調(diào)度,我們也要分析調(diào)度策略的預(yù)期結(jié)果,比如說各個(gè)入口的流量是不是按我們的計(jì)劃把這個(gè)流量調(diào)度到位了;每次APP版本的更新,我們也需要不停地來(lái)跟蹤它的訪問連通率、網(wǎng)絡(luò)連通率等一些關(guān)鍵指標(biāo)。
根因分析
在數(shù)據(jù)的基礎(chǔ)上,我們也可以做一些原因的查找,通過數(shù)據(jù)分析進(jìn)行的原因查找有時(shí)可以直接幫我們定位到問題,在更多的時(shí)候可以有效地幫我們縮小問題的范圍。通過數(shù)據(jù)來(lái)查找原因,這其實(shí)是有一定局限性的,局限性就在于數(shù)據(jù)的維度,因?yàn)槲覀冎荒茉诜治龅木S度上來(lái)進(jìn)行查找,如果故障的原因沒有在我們已知維度上,實(shí)際上是找不出來(lái)的,但大部分時(shí)候還是能起到比較關(guān)鍵的作用。
對(duì)于直接利用多維數(shù)據(jù)進(jìn)行問題的分析,我們大約有三個(gè)步驟,第一個(gè)步驟就是要確定問題,確定問題之后,就確定了是哪個(gè)指標(biāo)有問題,第二步是做一些數(shù)據(jù)上的分析,最后找到問題之后,我們要做數(shù)據(jù)和業(yè)務(wù)上的一些驗(yàn)證,主要的方法有兩種:
第一種是排序表,這個(gè)最簡(jiǎn)單了,就是人眼看,通過排序我們可以解決70-80%的問題。第二種就有點(diǎn)自動(dòng)化的意思了,我們叫數(shù)據(jù)探索,它有一個(gè)原理,實(shí)際上并不是所有的數(shù)據(jù)都能進(jìn)行探索,我們目前就是假設(shè)這個(gè)數(shù)據(jù)在任意切片上,在時(shí)間維度上它是屬于均勻分布的,在這種情況下我們認(rèn)為這個(gè)誤差值是符合正態(tài)分布的,就可以比較容易地做一個(gè)異常的檢測(cè)來(lái)看每個(gè)數(shù)據(jù)切片上是否有問題,當(dāng)所有的數(shù)據(jù)被探索完之后,問題的原因也基本能找到。
這是非實(shí)時(shí)根因分析的一些案例:
我們有一次網(wǎng)絡(luò)連通率連續(xù)三個(gè)月下降,我們分析到最后,發(fā)現(xiàn)這個(gè)APP的版本有些問題,某天之后所有新發(fā)布的APP版本連通率下降都比較大,跟研發(fā)反饋之后,他們就在SDK做了一些調(diào)整,實(shí)際上真正錯(cuò)在哪,我們并不知道,我們只能知道這個(gè)版本有問題,更多地去幫助技術(shù)人員縮小這個(gè)范圍。再就是圖片錯(cuò)誤率上升,剛才已經(jīng)介紹過了。
再就是實(shí)時(shí)的根因分析,剛才講的其實(shí)都是一些平時(shí)的案例,而實(shí)際上我們也做實(shí)時(shí)的系統(tǒng),這些實(shí)時(shí)的系統(tǒng)就是希望利用多維數(shù)據(jù),在系統(tǒng)告警候,能夠幫助大家更快定位一些問題。這里也有兩個(gè)例子:
一個(gè)就是連通率下降之后,我們會(huì)發(fā)現(xiàn)某類錯(cuò)誤碼是影響的一個(gè)主要因素,有針對(duì)性地解決問題后,發(fā)現(xiàn)連通率恢復(fù)了,這樣基本上可以定位故障。
再有就是某一個(gè)應(yīng)用的錯(cuò)誤率有上升,我們會(huì)看到有些省份影響比較大,具體看是一些CDN節(jié)點(diǎn)的故障,切換后,故障得到恢復(fù)。總體看,實(shí)時(shí)分析還是能夠比較快地幫助運(yùn)維人員定位問題。
3.數(shù)據(jù)挖掘技術(shù)應(yīng)用
對(duì)于數(shù)據(jù)挖掘來(lái)說,我們目前所應(yīng)用的場(chǎng)景,或者說能幫我們解決的問題主要有三類:一類是預(yù)測(cè),一類是異常檢測(cè),異常檢測(cè)主要是用來(lái)做告警閾值自動(dòng)的設(shè)置。第三類是做一些根因的分析,它的目的和剛才講的基于數(shù)據(jù)分析的根因分析是一樣的,但在實(shí)現(xiàn)上算法有些不同。
預(yù)測(cè)
我們現(xiàn)在的預(yù)測(cè),主要是做了一些業(yè)務(wù)指標(biāo)的預(yù)測(cè),比如像PV、UV、訂單、購(gòu)物車這樣的一些業(yè)務(wù)指標(biāo),下面我講一下訂單的預(yù)測(cè)。
這是我們的訂單預(yù)測(cè)圖。當(dāng)時(shí)做這個(gè)預(yù)測(cè),實(shí)際是有應(yīng)用的場(chǎng)景,當(dāng)故障發(fā)生時(shí),需要實(shí)時(shí)跟蹤預(yù)計(jì)的損失,以便于我們確定故障的等級(jí),還有就是調(diào)度解決故障需要的資源量。大家可以看到,這種預(yù)估我們還是比較容易可以算出來(lái)的,在什么時(shí)候這個(gè)故障已經(jīng)好了,什么時(shí)候它的損失達(dá)到什么程度,我們的故障是不是需要升級(jí)。
這里面有一個(gè)技術(shù)點(diǎn)需要解決,就是說我們?cè)诠收系臅r(shí)候,實(shí)際值已經(jīng)掉下去了,而我們的預(yù)測(cè)算法需要前一分鐘和前幾分鐘的數(shù)據(jù),為了不把故障的數(shù)據(jù)引入到算法中,在故障的時(shí)候,是用預(yù)測(cè)值代替真實(shí)值。具體來(lái)說,就是用上一周的數(shù)據(jù)做一些平均的加成來(lái)替換,然后再做下一次的預(yù)測(cè)。
對(duì)于預(yù)測(cè)算法,我們開始采用的是時(shí)間序列中的holt-winters算法,因?yàn)槲覀児镜臄?shù)據(jù)周期性比較明顯,我們?cè)跁r(shí)間序列上做擬合時(shí)還是比較準(zhǔn)確的,應(yīng)該來(lái)說效果還比較好。但這個(gè)算法到了一定時(shí)候,我們就碰到了一些問題,一個(gè)就是促銷和平時(shí)不太一樣,也就是說促銷的數(shù)據(jù),我們是擬合不上的。第二個(gè)就是在告警和一些夜晚流量低峰時(shí),這個(gè)數(shù)據(jù)波動(dòng)還是比較大的,告警的準(zhǔn)確率也不是很高,我們?cè)趺磥?lái)解決這個(gè)問題呢?
先看促銷。對(duì)訂單量來(lái)說,訂單達(dá)到高峰之前,我們的PV、UV包括收藏?cái)?shù)等業(yè)務(wù)指標(biāo)已經(jīng)開始啟動(dòng)了,我們就會(huì)把這些業(yè)務(wù)指標(biāo)引入我們的分析模型,也就是我們會(huì)把PV、UV、收藏?cái)?shù),包括上周同期的這些數(shù)據(jù),和上周我們要預(yù)測(cè)那個(gè)時(shí)間點(diǎn)的訂單數(shù)全部都引進(jìn)來(lái),然后用一個(gè)機(jī)器學(xué)習(xí)的辦法,基本上就可以解決這個(gè)問題。在雙11促銷后觀察了一下預(yù)測(cè)的情況,現(xiàn)在促銷預(yù)測(cè)的數(shù)值還是比較準(zhǔn)的。
當(dāng)基于預(yù)測(cè)進(jìn)行告警時(shí),碰到主要問題是夜晚低峰時(shí)數(shù)據(jù)波動(dòng)較大,如果按每個(gè)時(shí)間點(diǎn)的指標(biāo)直接進(jìn)行告警非常容易誤報(bào)。我們采用的辦法是預(yù)估損失累計(jì)的報(bào)警方法,當(dāng)累計(jì)預(yù)估損失達(dá)到100單時(shí)就進(jìn)行告警,這樣調(diào)整后,我們從上線到現(xiàn)在基本已經(jīng)沒有了誤告。這個(gè)100單的設(shè)置,跟我們公司的制度有關(guān),因?yàn)槲覀児具_(dá)到了200單、300單,那就是重大故障了,我們?cè)?00單的時(shí)候,就把這個(gè)警報(bào)給拉起來(lái),是可以防止重大故障發(fā)生的。
根因分析
最后在數(shù)據(jù)挖掘這部分的應(yīng)用,給大家介紹一下根因分析。
我們這套算法經(jīng)過幾個(gè)案例的嘗試,基本上都能找出原因,首先就是它跟多維分析的“根因分析”不太一樣,多維分析的“根因分析”是建立在已經(jīng)計(jì)算好的多維數(shù)據(jù)基礎(chǔ)上,而這個(gè)算法實(shí)際上是從原始數(shù)據(jù)來(lái)抽樣的。比如說,像錯(cuò)誤率上升的一個(gè)根因分析,我們首先會(huì)抽一些數(shù)據(jù),把錯(cuò)的和正確的日志各抽50%,對(duì)非數(shù)據(jù)列進(jìn)行預(yù)編碼。預(yù)處理之后,我們會(huì)用Spearman和Mutual Information這兩種算法來(lái)計(jì)算各個(gè)維度和結(jié)果之間的相關(guān)性程度,如果這兩種方法結(jié)果一致,則直接按相關(guān)性值大小進(jìn)行排序,然后會(huì)用One hot encoding做一個(gè)轉(zhuǎn)碼,轉(zhuǎn)碼之后放入邏輯回歸模型中,選擇L1的懲罰項(xiàng),如果它的系數(shù)算出來(lái)是負(fù)值,這個(gè)負(fù)值所代表的維度就是原因所在。如果上述方法兩個(gè)結(jié)果不一致,采用random forest和adaboost的方法構(gòu)建樹模型,查看模型給出的維度重要性,這里我已經(jīng)畫得很清楚了,如果兩個(gè)模型的重要性排序一致,就走上次那個(gè)步驟,如果不同,則用該模型對(duì)數(shù)據(jù)進(jìn)行預(yù)測(cè),選擇預(yù)測(cè)結(jié)果較高的相關(guān)性排序。
4.應(yīng)用生態(tài)建設(shè)及規(guī)劃
最后跟大家一起討論一下,如何讓數(shù)據(jù)成為運(yùn)維的大腦。根據(jù)我們的經(jīng)驗(yàn),首先從組織結(jié)構(gòu)上來(lái)說,我們需要一個(gè)獨(dú)立的分析團(tuán)隊(duì)。因?yàn)樵谶@個(gè)分析團(tuán)隊(duì)成立之前,公司的運(yùn)維體系實(shí)際上也在使用數(shù)據(jù),使用數(shù)據(jù)的方法和分析團(tuán)隊(duì)后來(lái)使用分析數(shù)據(jù)的方法也是大同小異,但因?yàn)樗旧硎且粋(gè)自發(fā)的,沒有一些強(qiáng)制性的要求。在把數(shù)據(jù)分析融入到工作流程之后,我們發(fā)現(xiàn)效率會(huì)得到一個(gè)比較大的提升,同時(shí)知識(shí)的傳承,包括統(tǒng)計(jì)口徑等這些比較令人困惑的問題也都可以得到一個(gè)比較好的管理和解決。
這樣的組織架構(gòu)在我們的實(shí)踐中,感覺可以更好地幫助運(yùn)維專家來(lái)解決問題。
從平臺(tái)建設(shè)上來(lái)說,應(yīng)該是說現(xiàn)在已經(jīng)開始了,著力打造的其實(shí)是兩個(gè)平臺(tái),一個(gè)是數(shù)據(jù)分析的平臺(tái),數(shù)據(jù)分析平臺(tái)說到底就是運(yùn)維的
數(shù)據(jù)倉(cāng)庫(kù),它使用現(xiàn)在大數(shù)據(jù)的一些傳統(tǒng)技術(shù)來(lái)做這件事情,第二個(gè)是統(tǒng)一信息的平臺(tái)。“統(tǒng)一信息平臺(tái)”主要考慮到在互聯(lián)網(wǎng)公司,不管是不是在野蠻成長(zhǎng)階段,待過的人都會(huì)知道,系統(tǒng)特別多,信息也是特別分散,我們還是想把這些分散的關(guān)鍵信息看怎么收集起來(lái),然后看能不能做一些事情。目前我們會(huì)把發(fā)布平臺(tái)的一些發(fā)布信息,還有ITIL平臺(tái)的一些事件信息、變更信息,CMDB的一些基礎(chǔ)架構(gòu)信息,再有就是各種各樣的監(jiān)控系統(tǒng)的值班表信息和告警信息(這種監(jiān)控系統(tǒng)我們有好幾十套),我們都會(huì)把它們放到信息庫(kù)里面。在信息庫(kù)建設(shè)之后,我們算法雖然可以實(shí)際有效地解決點(diǎn)上的問題,但還沒能很好地解決關(guān)聯(lián)性上的問題,這塊還是挺困難的。只能是說當(dāng)前是一件事情一件事情去解決,那這種復(fù)雜的關(guān)聯(lián)性我們靠什么呢?
靠的是規(guī)則庫(kù),用業(yè)務(wù)知識(shí)補(bǔ)充當(dāng)前階段算法上的一些不足。也就是說在整個(gè)系統(tǒng)建設(shè)中,實(shí)際上算法庫(kù)和規(guī)則庫(kù)都是一起建設(shè)的,不會(huì)說,就用算法就不要規(guī)則了,或只有規(guī)則,算法也沒什么用,它是一體建設(shè)的,而且它們能解決的問題不一樣,算法我們是解決點(diǎn)上的問題,規(guī)則我們是用來(lái)解決這種關(guān)聯(lián)性的問題,尤其復(fù)雜業(yè)務(wù)關(guān)聯(lián)的問題,都靠規(guī)則來(lái)配置的。
整個(gè)這套平臺(tái)的建設(shè)它主要有兩個(gè)目標(biāo),短期目標(biāo)就是說對(duì)告警進(jìn)行有效的一個(gè)壓制、管理、合并,第二個(gè)目標(biāo)就是想能夠解決自動(dòng)故障定位的問題。目前是有一定的成效,但準(zhǔn)確率還沒有那么高,以后能做得好的時(shí)候,我們會(huì)想通過ITIL平臺(tái)來(lái)驅(qū)動(dòng)自動(dòng)化平臺(tái)對(duì)現(xiàn)網(wǎng)的故障進(jìn)行自動(dòng)化的處理,比如說像重啟、降級(jí),限流,磁盤空間管理,流量調(diào)度等工作。應(yīng)該是說為了自動(dòng)化運(yùn)維、解決故障一起努力吧!
以上就是我們對(duì)數(shù)據(jù)應(yīng)用在未來(lái)一個(gè)時(shí)期內(nèi)的定義,也是想在未來(lái)大約半年到一年能夠看到更多成果的一個(gè)實(shí)踐。今天分享就到這里,謝謝大家!
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標(biāo)題:唯品會(huì)運(yùn)維數(shù)據(jù)技術(shù)實(shí)踐的三重境界
本文網(wǎng)址:http://www.guhuozai8.cn/html/consultation/10839324474.html