系統監控一直是項目完整性的一個要素,“不讓沒有監控的系統上線”,這條準則也逐漸得到越來越多的人的認可。如果一個系統監控缺失,我們就無法知道系統的運行狀態,以及業務的各個方面的情況,甚至系統出現宕機或者重大故障也不得而知,以至於造成重大損失。
愛奇藝樂道中臺是由愛奇藝內容中臺團隊建設的集視頻、音頻、字幕、圖片等內容的全流程生產、發佈及運營的中臺服務。隨着業務發展及微服務化的逐漸深入,系統項目越來越多,目前已有微服務100+,需要維護內容也越來越多,鏈路越來越長,現有的監控手段已不能滿足業務發展的需要,湧現出更多更迫切的監控需求,如:
1、高效及時的發現、定位系統異常問題
系統出現異常時需要立刻感知,在業務反饋之前發現問題,定位問題需要更加高效,可視化,不能僅去服務器查日誌定位問題,這樣通常需要花費很長時間才能定位原因,甚至如果日誌過多還不能準確定位。
2、上線過程可監測,出現問題第一時間回滾
每次系統發佈上線都是一次bug降生的窗口期,相當比例線上問題都是上線導致或者引入的,因爲一個穩定的服務,你不去更新系統代碼,正常情況下不會自發的產生問題。我們需要可監測的上線過程,及時修復問題。
3、全面準確的度量系統服務、接口、數據庫等性能
我們需要更加全面和方便的監測整個系統對外提供的服務接口和系統依賴的外部服務接口性能,QPS、慢查詢等其他性能指標,性能如果有潛在問題可能在關鍵時候,如流量突增,導致數據庫連接池打滿、長事務、拖垮整個網關等重大故障。
4、更加及時和穩定的監測服務健康情況
雖然目前部署的服務都是雙份或者多備份部署,可用性有保證,但是還是往往會出現其中部分服務出現宕機等情況,我們需要第一時間感知到這種問題,並具有持續的穩定監測。
監控內容及技術選型
LEDAO-CAT監控系統的落地
1、部署與迭代
CAT的部署最初是以GitHub開源代碼以及相關文檔進行最小化部署和試用,最初用於虛機上的少量業務系統,通過實驗發現試用效果很好,滿足我們對於監控系統最初的需求,隨後我們對CAT進行了若干次的升級改造,來逐漸優化以適用樂道中臺的業務和環境。
目前整個樂道中臺部署的CAT監控系統分別服務於海外、中國大陸,每個區域都部署了一個集羣服務於對應的業務系統,如圖1所示,其中目前以中國大陸的集羣服務最多,國內集羣微服務接入量100+、TPS 1w+,每日處理數據量1.5TB 左右,業務系統與CAT監控系統的交互如圖2所示👇
圖 1 LEDAO-CAT部署
圖 2 交互流程
其中,目前CAT支持的業務應用包括物理機、虛機、QAE容器等系統運行環境,服務通過引入ledao-cat-client包後進行簡單的環境配置和監控配置即可接入監控系統,對相關的服務進行全方面的監控。
主要流程是cat-client-proxy收集監控配置,與服務端建立連接,通過讀取需要監控的項的配置,對要監控的數據進行上報,上傳到CAT服務端後對於原始數據處理、聚合、告警等。
2、升級和改造
(1)CAT接入方式和監控埋點升級
原生CAT在系統接入時的方式是在每各應用所在的虛機固定路徑上配置client.xml,其中內容主要是服務端的連接地址和端口,這樣就需要在服務部署的每臺機器都去配置文件,運維成本極高,在公司無統一運維的情況下,接入和維護成本都很高,而且這種方式不適用於QAE容器部署。爲了解決上述問題,我們對CAT接入配置模塊進行了改造,使其支持三種方式的接入配置:傳統xml文件,QAE環境變量,系統配置文件properties(xml),使其配置與宿主機解耦,只依賴於應用本身。
另外,CAT監控是具有侵入性的監控系統,需要在監控的地方埋點上報數據進行監控,原生的埋點方式基本是切面方式,爲了簡化和細化監控埋點工作,我們開發了proxy代理包,方便用戶接入,其中主要擴展的埋點方式爲:傳統切面、聲明式註解(service、method、controller、dao),以及批量配置文件方式(properties),具體如圖3所示👇
圖 3 接入方式
(2)新增CAT健康檢查模塊
CAT的各項監控功能已經非常全面,但是卻沒有應用健康的監控,監控的方式是由客戶端進行數據上報,當服務宕機時,業務不可用時往往就會停止數據上報,但是CAT目前無法檢測到這種客戶端宕機異常,所以我們對原生CAT進行了升級,加入cat-health健康檢查模塊到CAT系統中,通過CAT配置健康檢查,以及客戶端上報的應用信息,健康檢查模塊會定時從不同機房撥測應用來檢測應用的健康狀況,如果多次反覆檢測到應用異常,會根據一定的判定規則進行告警通知,通過新建健康檢查模塊填補了原生CAT監控的空白。具體如圖4所示👇
圖 4 健康檢查
(3)告警方式升級
此外,在原有開源CAT告警方式基礎上,結合愛奇藝自有的告警體系,我們將兩者進行了融合對接,通過整合完備了整個監控系統的告警體系,支持以愛奇藝郵件、熱聊、短信的方式進行對異常、健康、業務等各方面的告警發送,大大提高了告警信息的觸達率,使異常實時可見,及時處理和恢復。
圖 5 告警升級
實踐成果
通過對原生CAT的部署及相關改造升級,我們逐步建設了一套完整的樂道中臺微服務監控體系,從機器指標監控、服務健康監控、系統異常監控、系統性能監控、慢查詢監控等到相關業務監控,結合CAT強大的告警配置以及愛奇藝告警方式的多樣,以及優化後的CAT快速接入及埋點方式,形成了從業務快速接入——監控快速埋點——告警配置——告警觸達——告警處理一整條監控鏈路,完整的填補了監控體系的空白。
其中具體是:
CAT接入方式多樣,對接成本低,一個新業務接入在5min之內可以完成。
結合cat-client-proxy依賴包,埋點配置幾乎可以做到無入侵,而且整個配置快速高效。
微服務系統從硬件指標、健康情況、異常情況、性能、業務等能夠被全方位的監控,幾乎覆蓋了所有的方面。
-
強大的告警配置能夠實時推送系統異常信息,使問題被快速感知,及時處理。
圖 6 各監控指標圖
總結展望
本文分享自微信公衆號 - 愛奇藝技術產品團隊(iQIYI-TP)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。