一、傳統(tǒng)監(jiān)控系統(tǒng)的盲區(qū),如何打造業(yè)務(wù)狀態(tài)監(jiān)控。
在系統(tǒng)架構(gòu)設(shè)計(jì)中非常重要的一環(huán)是要做數(shù)據(jù)監(jiān)控和數(shù)據(jù)最終一致性,關(guān)于一致性的補(bǔ)償,已經(jīng)由算法部的大佬總結(jié)過就不在贅述。這里主要講如何去補(bǔ)償?補(bǔ)償?shù)姆桨改男??這就引出來數(shù)據(jù)監(jiān)控系統(tǒng)了。有小伙伴會(huì)問了,為什么業(yè)務(wù)狀態(tài)監(jiān)控系統(tǒng)可以做補(bǔ)償?別急,往下看。
傳統(tǒng)監(jiān)控系統(tǒng)分為兩種,系統(tǒng)監(jiān)控和業(yè)務(wù)監(jiān)控。系統(tǒng)監(jiān)控有并發(fā)量監(jiān)控、異常監(jiān)控、調(diào)用鏈監(jiān)控、端口監(jiān)控、zabbix 監(jiān)控、http監(jiān)控等。業(yè)務(wù)監(jiān)控是指用以監(jiān)控業(yè)務(wù)數(shù)據(jù)是否正常,用戶需要進(jìn)行業(yè)務(wù)埋點(diǎn)進(jìn)行數(shù)據(jù)采集。業(yè)務(wù)監(jiān)控底層常規(guī)依賴日志上報(bào)系統(tǒng),接入業(yè)務(wù)監(jiān)控之前先申請(qǐng)接入日志上報(bào)系統(tǒng)。如圖1
(圖1)
從業(yè)務(wù)監(jiān)控時(shí)序圖中看到一般分為五步:
1.數(shù)據(jù)埋點(diǎn),業(yè)務(wù)端埋點(diǎn)后上報(bào)的日志,也可以是mysql。日志文件最后通過flume或者bin log上報(bào)。
2.數(shù)據(jù)收集,通常都通過kafka做數(shù)據(jù)采集。
3.數(shù)據(jù)清洗,一般都是在ods層用spark-streaming進(jìn)行分流,清洗。
4.數(shù)據(jù)存儲(chǔ),數(shù)據(jù)分流后會(huì)存儲(chǔ)到dw層,最后落到各種庫里面。
5.數(shù)據(jù)展示,開源的很多,用的多還是grafana,還有數(shù)據(jù)大屏等。
看到這里大家有沒有感覺到一絲困惑?有沒有感覺跟鏈路追蹤傻傻分不清楚?業(yè)務(wù)監(jiān)控和鏈路追蹤的區(qū)別就成了侵入式埋點(diǎn)上報(bào)和無侵入式agent抓取上報(bào)。這仿佛沒了靈魂,于是我去問了下AI,AI給出的答案是“業(yè)務(wù)監(jiān)控則是一種用于監(jiān)測(cè)業(yè)務(wù)指標(biāo)和關(guān)鍵業(yè)務(wù)流程的技術(shù),目的在于實(shí)現(xiàn)對(duì)業(yè)務(wù)運(yùn)營(yíng)狀況的實(shí)時(shí)了解和快速響應(yīng)”。
二、新型業(yè)務(wù)監(jiān)控,hunter-monitor的誕生。
站在巨人的肩膀上開始俯視全局,發(fā)現(xiàn)真實(shí)的需求:
1.報(bào)警能力,圍繞業(yè)務(wù),運(yùn)營(yíng)場(chǎng)景。設(shè)置各種預(yù)警的閾值。達(dá)到閾值后要及時(shí)發(fā)出響應(yīng)。
2.數(shù)據(jù)計(jì)算和數(shù)據(jù)統(tǒng)計(jì)能力,根據(jù)埋點(diǎn)計(jì)算整條鏈路上,每個(gè)節(jié)點(diǎn)的異常數(shù)據(jù)。幫做統(tǒng)計(jì)和輸出。
3.觸達(dá)能力,內(nèi)部聊天工具,郵件,必要時(shí)電話,短信,微信都要跟上。
4.數(shù)據(jù)歸檔能力,數(shù)據(jù)歸檔是為了兜底,做最終一致性。是為了異常時(shí)做數(shù)據(jù)比對(duì)。
5.數(shù)據(jù)自理能力,在AI時(shí)代,必須要有自動(dòng)消化處理的能力。
6.報(bào)警規(guī)則能力,“樹”的應(yīng)用,要把整個(gè)系統(tǒng)鏈路串聯(lián)起來的能力。
?
我們是京東保險(xiǎn)平臺(tái)研發(fā)部,承接商城的端延保訂單的流量。流量全是交易數(shù)據(jù)。交易數(shù)據(jù)是不允許丟失。因此我們?cè)杏鲎约旱臉I(yè)務(wù)監(jiān)控系統(tǒng)“監(jiān)控獵手 (hunter-monitor)” 簡(jiǎn)稱hm。hm已經(jīng)實(shí)現(xiàn)了以上6種能力。在出現(xiàn)問題時(shí),會(huì)第一時(shí)間通知業(yè)務(wù)和產(chǎn)品。還提供了異常數(shù)據(jù)統(tǒng)計(jì)、節(jié)點(diǎn)數(shù)據(jù)計(jì)算、回溯、補(bǔ)償?shù)饶芰?。業(yè)務(wù)或產(chǎn)研發(fā)需要時(shí),可以在平臺(tái)上做數(shù)據(jù)對(duì)比。還具備了延展能力,如可以對(duì)接jsf接口。來實(shí)現(xiàn)自動(dòng)補(bǔ)償能力。
hm業(yè)務(wù)狀態(tài)監(jiān)控的核心能力是:數(shù)據(jù)串聯(lián)和數(shù)據(jù)計(jì)算。是可以把業(yè)務(wù)整條鏈路在系統(tǒng)中的埋點(diǎn),已線性串聯(lián)起來。并展示出每個(gè)節(jié)點(diǎn)的異常狀態(tài)數(shù)據(jù)。最終消化掉異常數(shù)據(jù)。
三、三連問:誰適合接入?如何使用?有接入的實(shí)例么?
1、誰適合接入
接入保險(xiǎn)SaaS工作臺(tái)的系統(tǒng)都可以接入業(yè)務(wù)狀態(tài)監(jiān)控。沒介入的呢?只需要在保險(xiǎn)SaaS工作臺(tái)中,創(chuàng)建租戶便可以使用hm業(yè)務(wù)狀態(tài)監(jiān)控。
2、如何使用
2.1 監(jiān)控接入
接入hm只要簡(jiǎn)單的三步即可,創(chuàng)建規(guī)則,創(chuàng)建報(bào)警規(guī)則,業(yè)務(wù)接入埋點(diǎn)。創(chuàng)建方式和常規(guī)的業(yè)務(wù)監(jiān)控系統(tǒng)一樣。
2.2 數(shù)據(jù)處理
異常數(shù)據(jù)最終需要處理掉。在監(jiān)控列表中可以一鍵處理異常數(shù)據(jù)
2.3 定制化
我們支持觸達(dá)內(nèi)容定制化,異常數(shù)據(jù)處理方式定制化,異常數(shù)據(jù)統(tǒng)計(jì)定制化。可以調(diào)用業(yè)務(wù)系統(tǒng)jsf接口完成自動(dòng)處理,也可以根據(jù)需求出異常數(shù)據(jù)報(bào)告,更可以深度幫助業(yè)務(wù)方定制系統(tǒng)鏈路中的異常處理。hm已應(yīng)用到延保交易全鏈路系統(tǒng),履約平臺(tái),業(yè)財(cái)一體平臺(tái)和保險(xiǎn)abTest等系統(tǒng)。我們來看幾個(gè)延保業(yè)務(wù)的接入的場(chǎng)景。
?
3、實(shí)戰(zhàn)!延保業(yè)務(wù)接入場(chǎng)景
3.1 大屏展示:
每周都會(huì)公示出上一周延保業(yè)務(wù)出現(xiàn)的問題,并通過內(nèi)部通訊工具和郵件發(fā)送給業(yè)務(wù)方負(fù)責(zé)人,支持異常投保單的下載。業(yè)務(wù)收到郵件后會(huì)按照郵件中的攻略去操作,完成正確的投保。截止目前幫助業(yè)務(wù)側(cè)完成40萬+的異常投保單的重新投保。幫助業(yè)務(wù)降低了客訴率,也幫助保司拿到保費(fèi)。(圖2)
(圖2)
3.2 自動(dòng)補(bǔ)單:
延保的業(yè)務(wù)上游大多來自商城,業(yè)務(wù)會(huì)在系統(tǒng)里處理訂單分發(fā)到下游,由于量大,操作門檻高,總會(huì)出現(xiàn)異常的情況,比如漏配某個(gè)參數(shù),導(dǎo)致交易失敗或者用戶不能正常履約。以前都是到客戶履約的時(shí)候或者下游交易發(fā)起結(jié)算失敗時(shí),才能發(fā)現(xiàn)的問題。在hm中配置了監(jiān)控后,發(fā)現(xiàn)異常情況會(huì)調(diào)用補(bǔ)單的jsf接口,觸發(fā)自動(dòng)補(bǔ)單。以前出現(xiàn)問題最長(zhǎng)要已天為單位才能解決,現(xiàn)在分鐘級(jí)解決問題。起到了降本增效的效果。
3.3 數(shù)據(jù)歸檔:
hm給延保上游和下游交易提供數(shù)據(jù)了永久歸檔能力,如發(fā)現(xiàn)各種異常類的情況,可以從hm系統(tǒng)里面導(dǎo)出數(shù)據(jù)來作數(shù)據(jù)比對(duì)。如果是金額類的還可以自動(dòng)接入到對(duì)賬系統(tǒng)。在線上查看對(duì)賬結(jié)果,導(dǎo)出對(duì)賬差異數(shù)據(jù)(圖3)。同時(shí)會(huì)發(fā)送異常數(shù)據(jù)郵件,通知對(duì)應(yīng)的產(chǎn)品和業(yè)務(wù)(圖4)。
(圖3)
?
(圖4)
?
四、HM的內(nèi)核,技術(shù)架構(gòu)和實(shí)現(xiàn)方案
如果實(shí)在是沒辦法接入,只能自研怎么辦?沒關(guān)系,我把技術(shù)方法列出來。給大家提供解決方案的思路。
1.技術(shù)架構(gòu)
hm架構(gòu)上化繁為簡(jiǎn),單刀直入。從最核心的業(yè)務(wù)數(shù)據(jù)下手,在業(yè)務(wù)應(yīng)用中埋點(diǎn),通過樹型節(jié)點(diǎn)nodeId串起整條鏈路。埋點(diǎn)數(shù)據(jù)統(tǒng)一進(jìn)數(shù)倉清洗后。由調(diào)度中心定時(shí)觸發(fā)去做數(shù)據(jù)計(jì)算和數(shù)據(jù)統(tǒng)計(jì),展示到前端。我們先來看一張架構(gòu)圖。圖5
(圖5)
2.核心技術(shù)
2.1 規(guī)則引擎
規(guī)則引擎是指埋點(diǎn)的規(guī)則。規(guī)則引擎參考了Jaeger源碼,用來生成我們的規(guī)則編碼nodeId。(圖6)構(gòu)建成hm的規(guī)則樹。最終緩存到工作業(yè)務(wù)臺(tái)展示(圖7)。
(圖6)
(圖7)
2.2 報(bào)警引擎
報(bào)警引擎是指配置報(bào)警的一系列的規(guī)則,數(shù)據(jù)計(jì)算的規(guī)則,觸達(dá)的方式。創(chuàng)建好規(guī)則后,要對(duì)每一個(gè)規(guī)則進(jìn)行詳細(xì)的報(bào)警配置,包括觸發(fā)報(bào)警的類型,報(bào)警規(guī)則,操作閾值,處理方式等。(圖8)報(bào)警類型指觸達(dá)方式,繼承了保險(xiǎn)SaaS-msg的能力,支持郵件、內(nèi)部聊天工具、微信、電話等觸達(dá)方式。任務(wù)系統(tǒng)使用Easy-Job來動(dòng)態(tài)管理任務(wù)。處理方式可以對(duì)接業(yè)務(wù)方Jsf 來完成閉環(huán),也可以設(shè)置成歸檔,以便后續(xù)的有導(dǎo)出或?qū)?shù)的需求。
(圖8)
2.3 數(shù)據(jù)埋點(diǎn)
在保險(xiǎn)工作臺(tái)配置好埋點(diǎn)規(guī)則和報(bào)警規(guī)則后,就可以在業(yè)務(wù)方去埋點(diǎn),區(qū)別于鏈路追蹤或傳統(tǒng)的基于Agent系統(tǒng),它們都是無侵入埋點(diǎn)系統(tǒng)。hm則屬于強(qiáng)侵入式埋點(diǎn)系統(tǒng),在這里我們定制了一套埋點(diǎn)規(guī)范,“必須啟用異步線程,進(jìn)行發(fā)送MQ或者調(diào)用API接口”。埋點(diǎn)支持兩種方式,一種是send msg to topic,mq支持jmq2/jmq4。另一種就是通過調(diào)用API去初始化hunter-expoxt的實(shí)體類。由hm來發(fā)送消息。
2.4 數(shù)據(jù)清洗
hm的主要職責(zé)在業(yè)務(wù)數(shù)據(jù)的歸納、分揀。除了埋點(diǎn)接入外還支持,mq、數(shù)據(jù)庫等數(shù)據(jù)源的接入。所有的數(shù)據(jù)統(tǒng)一有集團(tuán)的DP(DataPilot )平臺(tái)的DataBus系統(tǒng)的DTS完成,統(tǒng)一進(jìn)數(shù)倉的FDM/BDM層。再由集團(tuán)的調(diào)度中心Buffalo(EMR),配置的spark任務(wù)執(zhí)行數(shù)據(jù)分揀。最終數(shù)據(jù)進(jìn)入doris/hive/es中存儲(chǔ)。
2.5 數(shù)據(jù)計(jì)算
hm只記錄異常數(shù)據(jù),發(fā)力在異常數(shù)據(jù)的統(tǒng)計(jì)和計(jì)算上。在配置好規(guī)則節(jié)點(diǎn)和系統(tǒng)埋點(diǎn)后,hm會(huì)去計(jì)算每個(gè)節(jié)點(diǎn)的異常數(shù)據(jù)。根據(jù)報(bào)警規(guī)則來進(jìn)行處理,或通知業(yè)務(wù)和產(chǎn)研,或調(diào)用業(yè)務(wù)系統(tǒng)的jsf接口去做異常數(shù)據(jù)的自動(dòng)處理,又或者根據(jù)規(guī)則自行處理數(shù)據(jù)。
2.6 數(shù)據(jù)統(tǒng)計(jì)
hm每周會(huì)出數(shù)據(jù)統(tǒng)計(jì)報(bào)表發(fā)送給業(yè)務(wù)和產(chǎn)研。報(bào)表中會(huì)體現(xiàn)他負(fù)責(zé)的業(yè)務(wù)線下所有系統(tǒng)的異常數(shù)據(jù),包括處理過的異常數(shù)據(jù)和未處理的異常數(shù)據(jù),A業(yè)務(wù)線和B業(yè)務(wù)線異常對(duì)比數(shù)據(jù),業(yè)務(wù)系統(tǒng)與業(yè)務(wù)系統(tǒng)的異常對(duì)比數(shù)據(jù)等??梢愿鶕?jù)業(yè)務(wù)需求定制報(bào)表。幫助業(yè)務(wù)和產(chǎn)研更好掌握系統(tǒng)的最新狀況。
2.7 任務(wù)中心
任務(wù)中心是指xxljob任務(wù)指調(diào)度中心,它和報(bào)警規(guī)則強(qiáng)綁定的。調(diào)度任務(wù)分為兩類,一類是業(yè)務(wù)類任務(wù),是動(dòng)態(tài)去創(chuàng)建的任務(wù),按照設(shè)置的corn執(zhí)行。另一類是平臺(tái)任務(wù)。用于維護(hù)業(yè)務(wù)類任務(wù)的,比如定期去刪除沒有異常的任務(wù)等。(圖9)
(圖9)
2.8 觸達(dá)展示
觸達(dá)方式支持了保險(xiǎn)工作臺(tái)、內(nèi)部聊天工具、郵件、企業(yè)微信、電話語音等。根據(jù)業(yè)務(wù)方需求來選擇。
2.9 處理方式
如果觸達(dá)3次還沒有做異常的處理數(shù)據(jù),會(huì)進(jìn)行自動(dòng)升級(jí),在下次觸達(dá)時(shí)會(huì)抄給本部門的上一級(jí)。異常數(shù)據(jù)需要在hm列表頁里做數(shù)據(jù)狀態(tài)變更。
2.10 開源能力:jaeger
hm底層參考了jaeger-core,重寫了jaegerSpan和jaegerTracer類。并把jaeger-core和opentracing-api重新打包-形成自己的jar(hunter-api)
審核編輯 黃宇
-
監(jiān)測(cè)
+關(guān)注
關(guān)注
2文章
3499瀏覽量
44397 -
狀態(tài)監(jiān)控
+關(guān)注
關(guān)注
0文章
15瀏覽量
10795
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論