0006-攜程酒店智能監(jiān)控平臺

作者簡介

林晨曦,攜程酒店研發(fā)部資深測試開發(fā)工程師,主要從事測試框架和平臺的研發(fā),現(xiàn)在負責監(jiān)控系統(tǒng)與性能平臺,熱衷于研究技術(shù)提升測試工作效率。

一、前言

攜程酒店業(yè)務量巨大,產(chǎn)生海量的埋點數(shù)據(jù),以應用為單位接入公共日志平臺;常規(guī)監(jiān)控系統(tǒng)無法精確定位業(yè)務問題,測試人員花費大量時間查詢與判斷異常數(shù)據(jù),低效且反應滯后。

為此我們根據(jù)測試痛點設(shè)計了一系列面向具體業(yè)務指標的監(jiān)控,并在此基礎(chǔ)上搭建了系統(tǒng)級的監(jiān)控平臺。本文將介紹酒店的智能監(jiān)控系統(tǒng),并詳細闡述其中核心部分:針對酒店Clog和ES埋點數(shù)據(jù)的智能實時監(jiān)控。

二、酒店監(jiān)控系統(tǒng)

1、監(jiān)控現(xiàn)狀

酒店業(yè)務眾多,關(guān)系鏈復雜,目前應用數(shù)量已經(jīng)超過2000個,即使經(jīng)過一系列線下測試,在上線以后還是要如履薄冰,業(yè)務人員要時刻關(guān)注各項指標,對波動及時查明原因,防止線上故障。

公共方面已有Sitemon,Hickwall等監(jiān)控報表系統(tǒng),我們結(jié)合了業(yè)務需求,在測試工作中構(gòu)建了為測試工作服務的一些監(jiān)控系統(tǒng):

Smart:智能監(jiān)控平臺,基于主動健康監(jiān)測和日志收集的智能保障系統(tǒng)

Mdata:性能埋點平臺,針對具體業(yè)務指標在ES&Dashboard里埋點數(shù)據(jù)進行條件聚合用于性能預警與數(shù)據(jù)展示

ArtemisAPI自動化監(jiān)控平臺,通過自動化運行收集數(shù)據(jù)進行監(jiān)控,并對ES埋點涉及多個不同數(shù)據(jù)Index的業(yè)務指標進行邏輯處理的ES監(jiān)控

2、監(jiān)控工作簡介

為什么要設(shè)計自己的監(jiān)控系統(tǒng)?海量數(shù)據(jù)帶來了一系列挑戰(zhàn):

數(shù)據(jù)量大:

通過CAT系統(tǒng)采集到每天埋點數(shù)據(jù)

-2000+億條日志

-100+T業(yè)務日志通過CAT進入ES

維度多:

如此海量數(shù)據(jù),在數(shù)據(jù)大盤里即使已有過濾條件搜索仍如同大海撈針,以下為監(jiān)控難點:

日志平臺記錄大量零散數(shù)據(jù),查詢不便

不能配置細粒度規(guī)則,用戶難以定制符合業(yè)務需求預警

無法判斷是否遺留問題

沒有分析模塊,不能跟蹤用戶分析行為

業(yè)務人員只關(guān)注生產(chǎn)環(huán)境,測試環(huán)境日志信息未起到先驗效果

我們希望監(jiān)控實現(xiàn)目標:

監(jiān)控為業(yè)務服務,以具體業(yè)務需求為切入點,持續(xù)集成,快速交付

構(gòu)建可擴展監(jiān)控體系,避免為業(yè)務調(diào)整增加大量項目復雜度

監(jiān)控盡量實時,提供信息量全面

覆蓋面廣,自動部署,減少人工值守時間

集中式管理,方便配置

在搭建監(jiān)控系統(tǒng)過程中,我們主要是通過兩種方式:

主動檢測式監(jiān)控: 通過自動化手段模擬用戶行為進行采點分析,統(tǒng)計Badcase

埋點收集方式: 與開發(fā)配合,在代碼里埋點關(guān)鍵數(shù)據(jù),通過數(shù)據(jù)采集處理進行監(jiān)控

監(jiān)控系統(tǒng)以應用為維度,方便業(yè)務人員明確排查范圍

埋點數(shù)據(jù)采集監(jiān)控占了很大監(jiān)控比重,數(shù)據(jù)真實性高,也方便做實時預警,處理埋點數(shù)據(jù)過程中采用了對已有Clog&ES&Dashboard埋點平臺做二次挖據(jù)方式。

之所以不直接通過Kafka消費原始數(shù)據(jù),因為Clog&ES&Dashboard已有可以配置條件的索引過濾掉用戶無需關(guān)心數(shù)據(jù),盡管數(shù)據(jù)落地有延遲,但是與需要過濾數(shù)據(jù)的量級相比,這種不利因素可以接受。以下介紹重點針對Clog與ES埋點監(jiān)控內(nèi)容。

3、監(jiān)控效果

酒店監(jiān)控平臺目前已經(jīng)配置了30多種主動式自動化監(jiān)控,并有以下系統(tǒng)級監(jiān)控:

Clog監(jiān)控

ES&Dashboard規(guī)則監(jiān)控

機器狀態(tài)監(jiān)控

Job監(jiān)控

Badsql監(jiān)控

ART報表監(jiān)控

DB數(shù)據(jù)庫一致性監(jiān)控

CAT服務響應時間監(jiān)控

監(jiān)控獲得收益:

覆蓋所有酒店核心應用

系統(tǒng)靈敏度高,出現(xiàn)問題立即暴露,及時解決

發(fā)現(xiàn)需要分析問題>60000,平臺自動創(chuàng)建CP4 Bug>4000

三、Clog監(jiān)控的前世今生

我們從Clog系統(tǒng)能獲取到的信息:

日志信息: AppID、服務器、標題、來源、信息、錯誤類型、CatId

日志級別: DEBUG、INFO、WARN、ERROR、FATAL

日志類型: APP、URL、WEB_SERVICE、SQL、MEMCACHED

借助CAT獲取詳細信息

Clog監(jiān)控系統(tǒng)根據(jù)日志信息指標配置成規(guī)則,采用了兩種監(jiān)控方式:

1.0監(jiān)控:應用級日志監(jiān)控, 用戶配置應用信息,設(shè)置閾值與過濾項,掃描應用日志根據(jù)歷史比對發(fā)現(xiàn)新錯誤信息,超過閾值的錯誤量,需要關(guān)注錯誤內(nèi)容預警到關(guān)注用戶。

1.0規(guī)則配制圖

2.0監(jiān)控:重要Issue部門級智能監(jiān)控,用戶配置錯誤類型,設(shè)置需要關(guān)注應用信息,掃描所有關(guān)注應用里匹配該錯誤類型信息并預警到關(guān)注用戶,生成缺陷到CP4。

2.0規(guī)則配置圖

監(jiān)控初期1.0的預警對象是錯誤量和新問題,從1.0到2.0的擴展是一次從問題收集到智能篩選的過程,如空指針引用、內(nèi)存問題都是開發(fā)需要重點關(guān)注并解決的缺陷,這些處理也是可以明確為程序問題并直接開Bug的,從而減少了用戶分析時間,而且部門級監(jiān)控可以拉取所有酒店應用信息無需單獨配置。

監(jiān)控原理:

用戶在系統(tǒng)中配置監(jiān)控規(guī)則

主服務器根據(jù)用戶配置自動生成執(zhí)行任務,并調(diào)度分布式執(zhí)行機執(zhí)行,執(zhí)行機分生產(chǎn)與測試環(huán)境,可收集不同環(huán)境數(shù)據(jù)

執(zhí)行機配置管理圖

執(zhí)行機上數(shù)據(jù)監(jiān)視器通過配置規(guī)則批處理運行任務,該過程包括數(shù)據(jù)采集、算法過濾、歷史比對、系統(tǒng)掃描,異常數(shù)據(jù)傳至郵件服務器預警并推送到CP4,目前日運行任務數(shù)>30萬,最小時間粒度可至20秒

1.0預警郵件

2.0預警郵件

監(jiān)控缺陷數(shù)據(jù)處理環(huán)節(jié),生成質(zhì)量閉環(huán)報告,數(shù)據(jù)直接推送給質(zhì)量平臺,長期追蹤解決結(jié)果。

Clog監(jiān)控系統(tǒng)架構(gòu)圖

指標監(jiān)控->全鏈路監(jiān)控:

為幫助業(yè)務人員分析問題,需要提供盡可能詳細的信息,讓用戶從多維角度快速定位問題來源,預警信息集成了以下信息:

CAT系統(tǒng)獲取應用上下游調(diào)用關(guān)系與波動程度

NOC系統(tǒng)獲取到配置修改信息

發(fā)布系統(tǒng)獲取最新發(fā)布狀態(tài)

SLB系統(tǒng)獲取機器狀態(tài)信息

Clog監(jiān)控還提供了一些輔助功能:

集成TTS電話系統(tǒng),重要預警可電話到負責人

集成Trace功能,有性能問題機器會被自動拉出集群采集Trace用于性能分析

對用戶而言,使用Clog監(jiān)控需要處理的內(nèi)容:

配置規(guī)則

處理預警郵件,在平臺及時完成分析

查看個人未解決問題

推動開發(fā)解決未完成Bug

四、從Mdata到Artemis:深度挖掘ES

ES數(shù)據(jù)量巨大,但是它自帶的聚合功能可以大大減少數(shù)據(jù)量,用戶關(guān)注的其實還是符合特征的數(shù)值指標。

根據(jù)特征聚合ES數(shù)據(jù),我們設(shè)計了早期Mdata平臺的ES監(jiān)控,用戶直接配置Json到規(guī)則,后臺Job定時執(zhí)行抓取數(shù)據(jù)源數(shù)據(jù)。平臺有以下特征:

配置簡單,用戶只需復制ES里的Json內(nèi)容

形式多樣,可以配置百分比與數(shù)值形式

監(jiān)控采用系統(tǒng)默認與用戶配置兩種,系統(tǒng)默認采用環(huán)比增量預警方式

數(shù)據(jù)采集時間<10分鐘

半小時與按天預警同時設(shè)置

集成系統(tǒng)發(fā)布信息與用戶歷史分析內(nèi)容

性能問題直接創(chuàng)建缺陷到CP4關(guān)聯(lián)到性能負責人

存儲時間長,系統(tǒng)保留超過半年數(shù)據(jù),可以查看長期趨勢與歷史分析內(nèi)容

大量使用后的業(yè)務痛點:

預警郵件多,對于波動較大指標很難界定

性能問題成因復雜,定位困難

預警閾值不好控制,業(yè)務變更造成前后不一致內(nèi)容多,寬嚴兩難

在進一步分析與調(diào)整中,采用了區(qū)別對待的處理方案,對于核心應用關(guān)鍵指標更多采用上下限閾值處理,并且預警時間達到<10分鐘。一般指標預警規(guī)則也更嚴格,達到連續(xù)增長趨勢才會觸發(fā)報警。

業(yè)務的發(fā)展帶來很多難以界定的指標,數(shù)據(jù)埋點往往不能用單一規(guī)則來處理,需要對ES數(shù)據(jù)做更深的挖掘,在原來單指標監(jiān)控基礎(chǔ)上我們發(fā)展出了Artemis ES自定義指標監(jiān)控,監(jiān)控內(nèi)容有以下擴展:

對抓取ES數(shù)據(jù)做了邏輯處理,包括對不同Index的數(shù)據(jù)進行聚合,項目復雜度有所增加,更多應用于數(shù)量有限的關(guān)鍵業(yè)務指標

配置規(guī)則多樣化,提供了更多閾值檢查

維度更接近業(yè)務內(nèi)容,用戶有更多篩選方式

實時度高,抓取數(shù)據(jù)時間<2分鐘

目前對ES數(shù)據(jù)的挖掘還有很多系統(tǒng),公共Sitemon,Hickwall上也能配置ES規(guī)則與報警,我們的主動式自動化監(jiān)控也有一些是對更細的包括未聚合具體埋點內(nèi)容的分析,數(shù)據(jù)挖掘還有很多內(nèi)容可以探索。

五、尾聲

監(jiān)控的目標是為了提高系統(tǒng)預警準確率與實時性,從而提高測試效率,減少人工值守時間。而監(jiān)控全面化帶來了一系列新的問題,目前公共Sitemon上已有超過10000個監(jiān)控指標,大量告警需要更好的降噪處理。

從方法角度看,只有指標越細覆蓋越廣才能達到更高精度,而這需要大量邏輯處理提高了系統(tǒng)復雜度?,F(xiàn)在流行的機器學習是個可以突破的方向,通過模型處理數(shù)據(jù)來提高報警精度,這也是監(jiān)控下一步的工作目標,讓預警更快更準,監(jiān)控更智能化,在這個過程中需要更多思維突破與創(chuàng)新,讓質(zhì)量真正閉環(huán)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容