1. 程式人生 > >監控平臺之裝配篇

監控平臺之裝配篇

    一、CAT (Central Application Tracking) 簡介

   CAT 是大眾點評開源的一套基於java的實時應用監控平臺,主要應用於服務中介軟體框架(MVC 框架、RPC 框架、持久層框架、分散式快取框架)的監控,為開發和運維提供各項效能指標、健康檢查、自動報警等視覺化服務

  


 
 

      二、CAT 安裝部署:

      下文將一步步介紹如何安裝服務端、如何接入客戶端、如何檢視一些監控指標

      首先,準備安裝環境

       1.確保待安裝環境已經安裝了jdk(1.6以上版本)、git、maven(maven 版本需要在 3.2.3以上

)mysql、web容器 tomcat,這裡不再贅述

       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 : 服務端元件,負責收集監控資訊,分析處理生成報告、作出警告(<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 : 監控服務代理元件
        將cat-home.war重新命名為cat.war後複製到tomcat 容器webapps目錄下,然後啟動容器,至此服務端已安裝完畢,在瀏覽器中輸入 http://127.0.0.1:8341/cat/r/ 看到下圖,表示安裝成功



 

       接著,客戶端接入

       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監控系統首頁【文件】選項。