監控全覆蓋,接入只需5分鐘:愛奇藝內容中臺基於CAT的服務監控實踐

系統監控一直是項目完整性的一個要素,“不讓沒有監控的系統上線”,這條準則也逐漸得到越來越多的人的認可。如果一個系統監控缺失,我們就無法知道系統的運行狀態,以及業務的各個方面的情況,甚至系統出現宕機或者重大故障也不得而知,以至於造成重大損失。


愛奇藝樂道中臺是由愛奇藝內容中臺團隊建設的集視頻、音頻、字幕、圖片等內容的全流程生產、發佈及運營的中臺服務。隨着業務發展及微服務化的逐漸深入,系統項目越來越多,目前已有微服務100+,需要維護內容也越來越多,鏈路越來越長,現有的監控手段已不能滿足業務發展的需要,湧現出更多更迫切的監控需求,如:


1、高效及時的發現、定位系統異常問題

系統出現異常時需要立刻感知,在業務反饋之前發現問題,定位問題需要更加高效,可視化,不能僅去服務器查日誌定位問題,這樣通常需要花費很長時間才能定位原因,甚至如果日誌過多還不能準確定位。


2、上線過程可監測,出現問題第一時間回滾

每次系統發佈上線都是一次bug降生的窗口期,相當比例線上問題都是上線導致或者引入的,因爲一個穩定的服務,你不去更新系統代碼,正常情況下不會自發的產生問題。我們需要可監測的上線過程,及時修復問題。


3、全面準確的度量系統服務、接口、數據庫等性能

我們需要更加全面和方便的監測整個系統對外提供的服務接口和系統依賴的外部服務接口性能,QPS、慢查詢等其他性能指標,性能如果有潛在問題可能在關鍵時候,如流量突增,導致數據庫連接池打滿、長事務、拖垮整個網關等重大故障。


4、更加及時和穩定的監測服務健康情況

雖然目前部署的服務都是雙份或者多備份部署,可用性有保證,但是還是往往會出現其中部分服務出現宕機等情況,我們需要第一時間感知到這種問題,並具有持續的穩定監測。


5、及時監測機器(容器)性能變化
當系統遇到突發流量或者攻擊等原因時很可能導致連接池打滿、OOM,數據庫打滿,CPU、內存、磁盤打滿等基礎問題,這些都會導致重大事故,無法及時的監控到,就無法及時的處理,導致重大線上故障。

6、更加完善清晰的業務監控
以上敘述了系統監控方面的迫切需求,在業務方面如果沒有監控,如節目生產數量、成功率、時效等,那麼整體業務運行情況對於維護者而言就是一個黑盒,這就會陷入一個被動局面,業務的發展是技術保障的目標,不知道目標發展情況,就會讓許多工作失去意義。

在業務量較少,系統較少,微服務較少的時候,我們對於監控系統的需求越少,隨着業務、系統爆炸性的發展就會維護起來越來越喫力,我們需要建立完備的監控體系去補齊這個短板,對各個服務、業務心中有數,爲業務快速發展提供保障。

監控內容及技術選型


經過梳理,目前我們服務系統需要監控的具體內容有:

1、機器監控
最基礎的監控,主要監控承載各個系統的虛擬機或者容器的運行情況,主要有CPU、內存、磁盤、網絡等大的方面,具體指標如:cpu.busy、cpu.idle、cpu.load.5min.per.core、mem.memfree、net.if.in.bytes、df.statistics.used.percent等。

2、系統監控
各個系統所有接口、服務的監控,主要如服務狀態、qps、接口性能、成功率、錯誤日誌等。

具體如:服務健康情況、服務api接口qps、服務api接口性能、成功率、集羣中各個機器qps、集羣中各個機器訪問量、整個集羣qps壓力、整個系統異常日誌趨勢等數據。

3、業務監控
根據各個服務承載的具體業務,建立業務數據大盤及相對應的監測報警策略,方便觀測業務發展情況、系統運行情況、以及爲業務發展決策提供參考和幫助。

在本着不重複造輪子的原則下,首先我們調研了公司內部現有基礎監控系統的功能、接入方式、侵入性、優缺點等,由於公司內部監控系統功能比較分散、單一,無法滿足我們所需的全面監控需求,所以我們傾向於自建,於是調研了常見的開源監控系統:

1、OpenFalcon
OpenFalcon是小米開源的監控系統,能夠提供豐富的基礎監控指標。
優勢:易於接入,基本無入侵,可自定義上報數據
劣勢:主要監控機器指標,系統監控不足

2、Prometheus
Prometheus是由前谷歌員工2015年正式發佈的開源監控系統。它和OpenFalcon最大不同在於:數據採集是基於Pull模式的,而不是Push模式,並且架構非常簡單。
優勢:查詢引擎強大,支持PromQL,可以對數據做各種實時計算。
劣勢:不易用,學習成本高,功能不夠完善,基本需要搭配Grafana創建儀表盤以及查看指標。

3、開源監控系統CAT
CAT 是美團點評開源的實時應用監控平臺,提供了比較全面的實時監控告警服務。
優勢:監控功能強大,基本上可以覆蓋各種監控場景
劣勢:接入成本較高、對業務代碼侵入較大

經過多方面比對以及結合我們系統業務的監控需求,最重要的是監控功能的全面、穩定、成熟的UI、報表、告警,所以我們最後選型CAT作爲我們各個系統微服務的監控系統。

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快速接入及埋點方式,形成了從業務快速接入——監控快速埋點——告警配置——告警觸達——告警處理一整條監控鏈路,完整的填補了監控體系的空白。


其中具體是:

  1. CAT接入方式多樣,對接成本低,一個新業務接入在5min之內可以完成。

  2. 結合cat-client-proxy依賴包,埋點配置幾乎可以做到無入侵,而且整個配置快速高效。

  3. 微服務系統從硬件指標、健康情況、異常情況、性能、業務等能夠被全方位的監控,幾乎覆蓋了所有的方面。

  4. 強大的告警配置能夠實時推送系統異常信息,使問題被快速感知,及時處理。

圖 6 各監控指標圖


圖 7 熱聊告警

圖 8 配置接入

從最小化部署實驗,到功能升級改造,再到團隊推廣及同事認可,LEDAO-CAT逐步發展壯大,目前樂道中臺整個團隊統一使用LEDAO-CAT作爲監控工具,目前分別部署了大陸和海外兩大集羣,保障線上服務穩定高效運行,爲快速發展的業務保駕護航。



總結展望

監控系統一直是業務發展過程中不可或缺的重要一部分,對於服務穩定運行提供極其重要的保障作用,對於不同的業務系統當然也會有不同的與其適配的監控系統,目前在國內和國外,不同公司都提供了一些開源的監控服務,CAT作爲一款優秀的開源監控系統,提供了非常全面和強大的監控功能,基本能夠滿足我們目前所有的監控需求。

本文大概介紹了CAT在愛奇藝樂道中臺的一次落地實踐,主要介紹了我們監控的需求、解決方案、優化改造以及階段性成果,雖然目前的功能大概滿足我們的需求,但是還是有如下幾點不足仍在研究,如分佈式Transaction、業務監控大盤、與nacos的深度整合等,這些都是後續我們要做的方向,使整個監控體系更加完善,更快更好更新的支撐業務快速發展。

也許你還想看
移動端APM網絡監控與 優化實踐
愛奇藝微服務監控的探索與實踐
 掃一掃下方二維碼,更多精彩內容陪伴你!

本文分享自微信公衆號 - 愛奇藝技術產品團隊(iQIYI-TP)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章