1. 美團點評CAT監控平台研究
1.1. 前言
- 此文根據我對官方文檔閱讀並記錄整理所得,中間可能會穿插一些自己的思考和遇坑
1.2. 簡介
- CAT 是基於 Java 開發的實時應用監控平台,為美團點評提供了全面的實時監控告警服務
- CAT 作為服務端項目基礎組件,為美團點評各業務線提供系統豐富的性能指標、健康狀況、實時告警等
- CAT 很大的優勢是它是一個實時系統,CAT 大部分系統是分鍾級統計,但是從數據生成到服務端處理結束是秒級別,秒級定義是48分鍾40秒,基本上看到48分鍾38秒數據,整體報表的統計粒度是分鍾級;第二個優勢,監控數據是全量統計,客戶端預計算;鏈路數據是采樣計算
1.3. 價值
- 減少故障發現時間
- 降低故障定位成本
- 輔助應用程序優化
1.4. 優勢
- 實時處理:信息的價值會隨時間銳減,尤其是事故處理過程中
- 全量數據:全量采集指標數據,便於深度分析故障案例
- 高可用:故障的還原與問題定位,需要高可用監控來支撐
- 故障容忍:故障不影響業務正常運轉、對業務透明
- 高吞吐:海量監控數據的收集,需要高吞吐能力做保證
- 可擴展:支持分布式、跨 IDC 部署,橫向擴展的監控系統
1.5. 模型設計
1.5.1. 監控模型
支持 Transaction、Event、Heartbeat、Metric 四種消息模型
- Transaction 適合記錄跨越系統邊界的程序訪問行為,比如遠程調用,數據庫調用,也適合執行時間較長的業務邏輯監控,Transaction用來記錄一段代碼的執行時間和次數
- Event 用來記錄一件事發生的次數,比如記錄系統異常,它和transaction相比缺少了時間的統計,開銷比transaction要小
- Heartbeat 表示程序內定期產生的統計信息, 如CPU利用率, 內存利用率, 連接池狀態, 系統負載等
- Metric 用於記錄業務指標、指標可能包含對一個指標記錄次數、記錄平均值、記錄總和,業務指標最低統計粒度為1分鍾
1.5.2. 消息樹
- CAT監控系統將每次URL、Service的請求內部執行情況都封裝為一個完整的消息樹、消息樹可能包括Transaction、Event、Heartbeat、Metric等信息
1.6. 模塊簡介
1.6.1. 功能模塊
- cat-client: 客戶端,上報監控數據
- cat-consumer: 服務端,收集監控數據進行統計分析,構建豐富的統計報表
- cat-alarm: 實時告警,提供報表指標的監控告警
- cat-hadoop: 數據存儲,logview 存儲至 Hdfs
- cat-home: 管理端,報表展示、配置管理等
1.6.2. 其他模塊
- cat-doc:服務端報表使用文檔
- integration:cat和一些第三方工具集成的內容(此部分一部分是由社區貢獻,一部分官方貢獻)
- lib:CAT 的客戶端,包括 Java、C/C++、Python、Node.js、Go
- script:CAT 數據庫腳本
1.7. 服務端部署
1.7.1. CAT安裝環境
- 在寫到這部分的時候,我找到了前面我疑惑的一個點:
cat-hadoop
模塊是必須有的嗎?這里給出答案,Hadoop是可選項,一般規模較小公司可以直接使用磁盤模式,可以申請CAT服務端,500GB磁盤或者更大磁盤,這個磁盤掛載在/data/目錄上
1.7.2. 安裝CAT集群步驟概覽
- 初始化Mysql數據庫,一套CAT集群需要部署一個數據庫,數據庫腳本script/CatApplication.sql
- 初始化/data/目錄,配置幾個配置文件/data/appdatas/cat/*.xml 幾個配置文件,具體下面有詳細說明
- 打包並重命名為cat.war,放入tomcat容器webapps根目錄下,並啟動tomcat
1.7.3. 詳細步驟
- 點擊這里
- 這一步后就可以正常打開管理控制台了
1.8. 坑
- 這里我遇到個坑點,本機部署時tomcat和/data目錄必須在一個盤,否則日志會報datasource不存在
- 這里我還遇到了個maven相關的坑點,不能夠正常下載對應jar包,原因是maven中
D:\Program Files\apache-maven-3.3.3\conf
目錄下的settings.xml
干擾,需要刪除或重命名它
今天就到這里,明天搞客戶端