當前位置:
首頁 > 最新 > CAT系統的配置與分析

CAT系統的配置與分析

本文作者:張垚傑,從祥,李大江

1 系統介紹

CAT系統原型和理念來源於eBay的CAL的系統,CAT系統第一代設計者吳其敏在eBay工作長達十幾年,對CAL系統有深刻的理解。CAT不僅增強了CAL系統核心模型,還添加了更豐富的報表。自2014年開源以來,CAT在攜程、陸金所、獵聘網、找鋼網等多家互聯網公司生產環境應用。

CAT是一個實時和接近全量的監控系統,它側重於對Java應用的監控,基本接入了美團點評上海側所有核心應用。目前在中間件(MVC、RPC、資料庫、緩存等)框架中得到廣泛應用,為美團點評各業務線提供系統的性能指標、健康狀況、監控告警等。關於該系統的更多背景與原理請參考"深度剖析開源分散式監控CAT"。


2 系統安裝

cat伺服器安裝要求:

·Linux2.6以及之上

·4G內存

·100G硬碟

·處理器越快越好

安裝步驟:

1.安裝一台運行ubuntu16.04的PC

2.更換國內的源(這樣可以使縮短安裝時間),首先將/etc/apt/sources.list文件備份,命令如下:

更換國內的源,命令如下:

3.安裝jdk(java6,7,8)

4.安裝Maven3.3.3

5.安裝tomcat8

6.安裝git、mysql

7. 安裝cat客戶端:

8.還需要安裝jdk、Maven、tomcat、mysql,參考cat服務端的安裝。


3 系統的配置

1.配置cat伺服器:

設置mysql用戶和密碼(因為mysql安裝成功後,默認的用戶密碼為空)

首先從github下載cat源代碼:

切換到cat目錄下,用maven構建項目:

配置cat的環境:

在這個過程中會提示輸入mysql的地址、用戶和密碼,把上面設置的mysql的信息輸入。

創建/data/appdatas/cat 和 /data/applogs/cat目錄,並且賦予讀寫許可權:

sudo chmod a+rx cat

生成war包;

在cat目錄下執行 mvn install -DskipTests;

將cat-home打包出來的war包,重新命名為cat.war,並放入tomcat的webapps中;

啟動tomcat;

訪問http://localhost:8080/cat。

2.配置cat客戶端:與配置cat伺服器類似。


4 應用的設計與實現

4.1應用簡介

使用cat監控框架監測web伺服器的運行,可以有一台或者多台web伺服器,web伺服器上可以同時運行mysql,mysql也可以跑在獨立的伺服器上。

Cat系統可以監控各個web伺服器的資料庫調用,定義的事件,web伺服器cpu、內存等的使用情況還有jvm虛擬機的狀況等信息。


上面代碼展示的是cat提供的一部分的api介面,在被監控端調用。下面是簡短的api用法解釋:

1. Transaction 記錄跨越系統邊界的程序訪問行為,比如遠程調用,資料庫調用等

2. Event 用來記錄一件事發生的次數,比如記錄系統異常,開銷比transaction要小。

3. Metric 用於記錄業務指標、指標可能包含對一個指標記錄次數、記錄平均值、記錄總和,業務指標最低統計粒度為1分鐘。

4. Trace 用於記錄基本的trace信息,類似於log4j的info信息,這些信息僅用於查看一些相關信息


5 實驗設計

cat系統說明書中介紹,cat主要用來監控SpringMVC應用,Dubbo RPC框架和mybatis框架。在本次試驗中我們選擇了SpringMVC應用來進行監控。

下面先簡單的介紹一下在本次試驗中SpringMVC應用的創建。

1、 首先在eclipse中創建maven web工程:

經過之前的步驟得到的工程結構如下所示:

2、 配置springmvc工程

將web.xml文件改為如下內容:

新建spring-servlet.xml文件,並添加如下內容:

3、 添加Controller和view

添加的Controller如下所示

然後添加視圖welcome.jsp

4、 cat框架埋點

在源代碼的目錄下添加META-INF文件夾,裡面添加app.properties這個文件,內容是應用的名稱:

通過攔截器的方式把springmvc與cat進行集成

因為spring的bean都是單例,所以要放在thredlocal中保存。這裡做了兩個Transaction:

tranLocal是統計請求被處理至頁面模板渲染完成的時間

pageLocal是記錄controller處理完成返回頁面至頁面渲染完成的時間。

文件配置如下(Spring-mvc.xml)


6 實驗結果與分析

整個系統搭建完成後,cat可以對客戶端和cat伺服器的狀態信息進行監控,監控的指標主要如下所示:

Transaction表示一段代碼運行的時間、次數,下圖表示的是cat伺服器的transaction:

Event 用來記錄一件事發生的次數,比如記錄系統異常,開銷比transaction要小:

problem表示系統可能出現的異常,包括訪問較慢的程序:

Hearbeat表示JVM內部一些狀態信息,Memory,Thread等。System info表示監控的伺服器的cpu,swap等狀況。GC info表示JVM虛擬機內存回收的狀況:

JVMHead info 表示監控的伺服器上JVM堆的情況:

FrameworkThread info表示框架運行線程的情況,Disk info表示監控的伺服器磁碟的狀況:

下圖表示資料庫的訪問趨勢:

State表示cat服務端的狀態:

下圖表示全部sql執行的數量、比例等信息:

下圖表示一個具體的sql執行花費的時間、失敗、平均時間等

下圖表示web應用不同的url訪問的次數、訪問的比例、失敗的次數、失敗率和花費的時間等信息:


7 總結

應用cat檢測框架的關鍵是埋點工作。Transaction埋點,主要記錄一些跨項目,跨模塊一些調用。最主要有三個,遠程服務,資料庫以及緩存。點評是在中間件上做的埋點,比如PRC框架,數據訪問層框架,緩存框架,然後在業務線全部升級框架。

Event埋點,主要記錄事件以及異常。最常見的場景就是當埋Transaction時候,需要event作為補充,比如記錄當時訪問參數等。代碼一些特殊詭異路徑的分析,還有異常信息記錄。

Metric埋點,主要用於記錄了一些實際的業務指標,用於運維監控。Heartbeat不需要業務埋點。

監控系統需要做成開放式系統,每個核心的report最好能提供api,讓其他程序能夠訪問,每個業務的想看的一些指標展示各不相同,監控是無法完成業務定製化report需求,所以需要每個報表都能api,把自己做成一個數據平台。

CAT不僅僅在生產環境做了部署,在線下以及性能環境也做了部署,qa做壓力測試、功能測試都會去看cat上面的數據,相比於以前測試,可以大量節省時間,跑一次自動化case回歸,看看CAT上面的報錯,響應時間,訪問量,就知道程序是否存在問題。

「大數據與數據科學家」公眾號

主編:王宏志

副主編: 丁小歐

責任編輯: 齊志鑫,宋揚

編輯: 陶穎安

-精彩內容,記得分享到朋友圈-


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大數據與數據科學家 的精彩文章:

TAG:大數據與數據科學家 |