1. 程式人生 > >對美團點評應用監控平臺CAT的理解

對美團點評應用監控平臺CAT的理解

原始碼地址

CAT是一個開源的專案,在github上可以找到它的原始碼 https://github.com/dianping/cat

CAT 簡介

CAT 是基於 Java 開發的實時應用監控平臺,為美團點評提供了全面的實時監控告警服務。

CAT 作為服務端專案基礎元件,提供了 Java, C/C++, Node.js, Python, Go 等多語言客戶端,已經在美團點評的基礎架構中介軟體框架(MVC框架,RPC框架,資料庫框架,快取框架等,訊息佇列,配置系統等)深度整合,為美團點評各業務線提供系統豐富的效能指標、健康狀況、實時告警等。

CAT 很大的優勢是它是一個實時系統,CAT 大部分系統是分鐘級統計,但是從資料生成到服務端處理結束是秒級別,秒級定義是48分鐘40秒,基本上看到48分鐘38秒資料,整體報表的統計粒度是分鐘級;第二個優勢,監控資料是全量統計,客戶端預計算;鏈路資料是取樣計算。

Cat 產品價值

  • 減少故障發現時間
  • 降低故障定位成本
  • 輔助應用程式優化

Cat 優勢

實時處理:資訊的價值會隨時間銳減,尤其是事故處理過程中
全量資料:全量採集指標資料,便於深度分析故障案例
高可用:故障的還原與問題定位,需要高可用監控來支撐
故障容忍:故障不影響業務正常運轉、對業務透明
高吞吐:海量監控資料的收集,需要高吞吐能力做保證
可擴充套件:支援分散式、跨 IDC 部署,橫向擴充套件的監控系統

監控模型:

支援 Transaction、Event、Heartbeat、Metric 四種訊息模型。

  • Transaction 適合記錄跨越系統邊界的程式訪問行為,比如遠端呼叫,資料庫呼叫,也適合執行時間較長的業務邏輯監控,Transaction用來記錄一段程式碼的執行時間和次數
  • Event 用來記錄一件事發生的次數,比如記錄系統異常,它和transaction相比缺少了時間的統計,開銷比transaction要小
  • Heartbeat 表示程式內定期產生的統計資訊, 如CPU利用率, 記憶體利用率, 連線池狀態, 系統負載等
  • Metric 用於記錄業務指標、指標可能包含對一個指標記錄次數、記錄平均值、記錄總和,業務指標最低統計粒度為1分鐘

功能模組

  • cat-client: 客戶端,上報監控資料
  • cat-consumer: 服務端,收集監控資料進行統計分析,構建豐富的統計報表
  • cat-alarm: 實時告警,提供報表指標的監控告警
  • cat-hadoop: 資料儲存,logview 儲存至 Hdfs
  • cat-home: 管理端,報表展示、配置管理等

資料流轉

在這裡插入圖片描述

從上圖可以看到,CAT的資料流程:

  1. 分佈在各個伺服器的受監控應用,通過cat的客戶端上報Transaction、Event、Heartbeat、Metric 監控資訊到cat的服務端。
  2. cat服務端收到各個應用上報的監控資訊後,將這些資訊儲存到資料庫或者hdfs中。
  3. 統計分析這些監控資訊生成各種指標的報表。這些報表展現在cat平臺頁面中。

CAT豐富的報表展示

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

如何使用cat客戶端上報Transaction、Event、Heartbeat、Metric 監控資訊

客戶端上報監控資料的行為成為埋點,一下是一個埋點的例子:
在這裡插入圖片描述

應用程式每次執行這段程式碼就會向服務端上報一個樹形訊息,這個訊息中包含了Transaction、Event、Metric資料。而Heartbeat訊息的上報不需要開發者在程式碼中埋點,Cat客戶端會定時每分鐘收集系統的記憶體,硬碟,cpu資訊上報給服務端。

cat的劣勢

由Cat的埋點行為可知,Cat具有很強的侵入性,為了對應用進行監控,開發者需要修改應有的程式碼在自己關注的地方進行埋點。否者cat的作用就僅僅侷限於監控記憶體,硬碟,cpu等系統資訊了資訊。