監控平臺之裝配篇
一、CAT (Central Application Tracking) 簡介:
CAT 是大眾點評開源的一套基於java的實時應用監控平臺,主要應用於服務中介軟體框架(MVC 框架、RPC 框架、持久層框架、分散式快取框架)的監控,為開發和運維提供各項效能指標、健康檢查、自動報警等視覺化服務
二、CAT 安裝部署:
下文將一步步介紹如何安裝服務端、如何接入客戶端、如何檢視一些監控指標
首先,準備安裝環境
1.確保待安裝環境已經安裝了jdk(1.6以上版本)、git、maven(maven
版本需要在 3.2.3以上
2.下載cat原始碼:https://github.com/dianping/cat.git,並匯入到eclipse(匯入過程中可能會遇到一些問題,可以不必在此糾結,繼續下一步)
3.下載master打包後的包,https://github.com/dianping/cat/archive/master.zip,並解壓到本地
其次,安裝服務端
1.打war包:進入到解壓後的 原始碼資料夾,執行maven打包命令:
mvn clean install -DskipTests
PS:打包過程中會在原始碼所在碟符建立 data/appdatas/cat目錄,所以確保當前使用者擁有讀寫許可權2. 部署war包:當執行完打包命令,會在每個子模組中,生成打包後的檔案
將cat-home.war重新命名為cat.war後複製到tomcat 容器webapps目錄下,然後啟動容器,至此服務端已安裝完畢,在瀏覽器中輸入 http://127.0.0.1:8341/cat/r/ 看到下圖,表示安裝成功* cat-home.war : 服務端元件,負責收集監控資訊,分析處理生成報告、作出警告(<span style="margin: 0px; padding: 0px; list-style: none outside none; word-break: normal; word-wrap: break-word; font-size: 18px; line-height: 27px;">需要的服務端war包</span>) * cat-agent.war : 監控端元件,負責收集被監控端資訊,並上傳監控資訊到服務端 * cat-client.jar : 客戶端元件,負責與服務端進行連線通訊, * cat-core.jar : 核心處理元件,負責具體的與客戶端通訊服務,解析資料、輸出報告 * cat-consumer.jar : 消費處理元件,負責實際的監控資料分析,處理工作 * cat-hadoop.jar : HDFS儲存元件 * broker-service.war : 監控服務代理元件
接著,客戶端接入
1.待監控專案pom檔案加入依賴
<dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-core</artifactId> <version>1.3.6</version> </dependency>2.待監控專案web.xml 中引入cat 過濾器
<filter> <filter-name>cat-filter</filter-name> <filter-class>com.dianping.cat.servlet.CatFilter</filter-class> </filter> <filter-mapping> <filter-name>cat-filter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>3.引入配置檔案:在src/main/resources/META-INF下建立app.properties或cat/client.xml
app.properties 加入一行app.name=專案名(即domain)
3.加入監控邏輯
@RequestMapping("index")
public ModelAndView index(HttpServletRequest request, HttpServletResponse response){
Transaction t = Cat.getProducer().newTransaction("your transaction type", "your transaction name");
try {
System.out.println("debug...");
Cat.getProducer().logEvent("your event type", "your event name", Event.SUCCESS, "keyValuePairs");
t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
Cat.getProducer().logError(e);//用log4j記錄系統異常,以便在Logview中看到此資訊
t.setStatus(e);
// throw e;
/* (CAT所有的API都可以單獨使用,也可以組合使用,比如Transaction中巢狀Event或者Metric。)
(注意如果這裡希望異常繼續向上拋,需要繼續向上丟擲,往往需要丟擲異常,讓上層應用知道。)
(如果認為這個異常在這邊可以被吃掉,則不需要在丟擲異常。)*/
} finally {
t.complete();
}
return new ModelAndView("main");
}
4.重啟待監控專案,並訪問一個專案的頁面,同時進入監控平臺(預設使用者catadmin/catadmin)http://127.0.0.1:8341/cat/r/,這時我們會發現,下圖中有了資料(profit為專案名)
5.監控埋點
Transaction用來記錄一段程式響應時間
Event用來記錄一行code的執行次數
Metric用來記錄一個業務指標
這些指標都是獨立的,可以單獨使用,主要看業務場景。
最後,安裝總結
本文提到的CAT安裝是簡化版,沒有用到ldap驗證,沒有用到hadoop,比較基礎。其他詳細的安裝細節請參考原始碼和CAT監控系統首頁【文件】選項。