部署點評Cat監控項目


在項目中監控代碼運行的狀況,可以采用點評的Cat項目來監控整個項目,但是按照官方的文檔來部署cat,總會遇到各種問題,講解的也不夠簡明清楚,現在用一個單機來部署運行cat監控項目。

首先,到項目的Git網頁下載整個項目:

https://github.com/dianping/cat

接着就是進入這個項目的目錄,運行打包安裝命令:

mvn clean install -DskipTests  (需要maven)

執行完成后,運行 CAT 安裝插件命令:

mvn cat:install

會提示輸入MySQL數據庫的連接信息,賬戶和密碼。可能會提示缺少\data\appdatas\cat 目錄,手動添加就可以了。

最后進入cat-home目錄:cd cat-home,運行mvn jetty:run

沒有任何錯誤的提示就可以啟動了。在瀏覽器輸入地址:

localhost:2281會進入界面,這個界面有說明文檔還要演示效果等,沒什么用,關掉。

 

進入項目,拷貝/cat-home/target/cat-alpha-1.3.6-SNAPSHOT.war這個文件到tomcat的webapps里面,修改名字成:cat.war。在tomcat所在的盤根目錄需要有data文件夾,里面有:

\data\appdatas\cat和\data\applogs\cat 文件夾,沒有的話就手動創建。

\data\appdatas\cat文件夾里面的內容在mvn cat:install這個步驟會自動創建出來client.xml、datasources.xml和server.xml三個文件,datasources.xml是數據庫連接信息,不用改變的話就無需修改,client.xml和server.xml兩個文件里,有多少台服務器,就要寫多少台服務器的地址上去。由於我是在本機上做實驗,所以就只有一台機器的地址。

client.xml文件只需改紅色框內的內容就可以了:

server.xml文件改紅色框的內容,有多台機器,就像紅框下面注釋的那樣改就可以了。

修改完,啟動tomcat(bin\startup.bat)

 

沒有任何問題,我們可以根據提示在\data\applogs\cat目錄中查看到日志。

 

 

在瀏覽器里面輸入http://localhost:8080/cat/r,可以看到CAT下面部署后的界面。左上角的“實時”功能才是我們最需要的!

 

 

點擊后發現都是demo的實例,可以查看相應的代碼來學習怎么使用。

 

 

在項目的home模塊里面的test部分,有個com.dianping.cat.demo.TestStorageMessage類,里

面的代碼在我們的界面都可以找到對應的效果。

如sendSQLMsg這個方法,在界面的“Event”監控功能中,會發現監控的名字和方法。

 

[java]  view plain  copy
 
  1. private void sendSQLMsg(String name, String domain, String method, String serverIp) throws InterruptedException {  
  2.         Transaction t = Cat.newTransaction("SQL", "sql.method");  
  3.   
  4.         Cat.logEvent("SQL.Method", method);  
  5.         Cat.logEvent("SQL.Database", String.format(JDBC_CONNECTION, serverIp, name));  
  6.   
  7.         MessageTree tree = Cat.getManager().getThreadLocalMessageTree();  
  8.   
  9.         ((DefaultMessageTree) tree).setDomain(domain);  
  10.         Thread.sleep(500 + new Random().nextInt(1000));  
  11.         int nextInt = new Random().nextInt(3);  
  12.   
  13.         if (nextInt % 2 == 0) {  
  14.             t.setStatus(Transaction.SUCCESS);  
  15.         } else {  
  16.             t.setStatus(String.valueOf(nextInt));  
  17.         }  
  18.   
  19.         t.complete();  
  20.     }  


 

對應代碼里面的這兩行名稱:

 

[java]  view plain  copy
 
  1. Cat.logEvent("SQL.Method", method);  
  2. Cat.logEvent("SQL.Database", String.format(JDBC_CONNECTION, serverIp, name));  

 

因此,我們可根據這個很容易地學習怎么使用。因為Cat項目已經啟動了,整個機器都在監控的范圍內,編寫的項目有指定受cat項目監控便可實現實時監控,分析我們代碼的執行效果了。

新建一個工程,在工程里面加入cat-home\target\cat-home-1.3.6-SNAPSHOT\WEB-INF\lib里面的所有jar包,暫時不知道哪些有用,哪些沒用,所以全部加入工程中是沒錯的了。

在工程里面編寫一個類,內容如下:

[java]  view plain  copy
 
  1. public class MyTest {  
  2.     public static void main(String[] args) {  
  3.         Transaction t = Cat.newTransaction("TEST", "test.method");  
  4.   
  5.         Cat.logEvent("Method_test", "good");  
  6.         Cat.logEvent("Method_event", "bad");  
  7.   
  8.         int nextInt = new Random().nextInt(3);  
  9.   
  10.         if (nextInt % 2 == 0) {  
  11.             t.setStatus(Transaction.SUCCESS);  
  12.         } else {  
  13.             t.setStatus(String.valueOf(nextInt));  
  14.         }  
  15.   
  16.         t.complete();  
  17.     }  
  18. }  

 

運行,發現很快就結束了!輸入提示看日志。

打開日志,發現有如下提示:

[plain]  view plain  copy
 
  1. [07-20 22:05:34.780] [INFO] [DefaultModuleContext] Starting thread(Cat-ModelService-0) ...  
  2. [07-20 22:10:08.922] [INFO] [DefaultModuleContext] Starting thread(Cat-ModelService-1) ...  
  3. [07-20 22:20:00.677] [INFO] [DefaultModuleContext] Current working directory is C:\hadoop_java  
  4. [07-20 22:20:00.699] [INFO] [DefaultClientConfigManager] Global config file(\data\appdatas\cat\client.xml) found.  
  5. [07-20 22:20:00.700] [INFO] [DefaultClientConfigManager] Can't find app.properties in /META-INF/app.properties  
  6. [07-20 22:20:00.711] [WARN] [DefaultTransportManager] CAT was DISABLED due to not initialized yet!  

 

提示很明白,就是沒有app.properties這個文件,在項目的說明文檔里面也有說到,這個文檔主要是指定監控的Cat項目的。因為我們的監控項目改為了cat.war來啟動了,所以就在源代碼的目錄下添加META-INF文件夾,里面添加app.properties這個文件,內容就是很簡單的:

app.name=cat

這個名稱和瀏覽器里面的domain對應,如果要改成其他名稱,那么這個domain的值也要改成對應的名稱。

 

注意:META-INF文件夾必須改為源文件的指定格式的。

 

再次運行代碼,有如下效果,程序不會自動關閉了,說明在監控中……

查看日志,一切正常:

[plain]  view plain  copy
 
  1. [07-20 22:25:58.541] [INFO] [ChannelManager] Connected to CAT server at /127.0.0.1:2280  
  2. [07-20 22:25:58.543] [INFO] [ChannelManager] success when init CAT server, new active holderactive future :/127.0.0.1:2280 index:0 ip:127.0.0.1 server config:null  
  3. [07-20 22:25:58.545] [INFO] [DefaultModuleContext] Thread group(cat) created.  
  4. [07-20 22:25:58.546] [INFO] [DefaultModuleContext] Starting thread(cat-TcpSocketSender-ChannelManager) ...  
  5. [07-20 22:25:58.546] [INFO] [DefaultModuleContext] Starting thread(cat-TcpSocketSender) ...  
  6. [07-20 22:25:58.547] [INFO] [DefaultModuleContext] Starting thread(cat-merge-atomic-task) ...  
  7. [07-20 22:25:58.557] [INFO] [DefaultModuleContext] Starting thread(cat-StatusUpdateTask) ...  

 

刷新cat頁面,發現新建了一個Transaction

 

和兩個event事件了!

到此,應用cat實時監控系統部署成功,剩下的事情就是慢慢研究代碼怎么更好地使用Cat了!

 

 ==========================================================

有時會發現實時監控頁面什么數據都沒有顯示了,查看日志記錄,會發現一大堆找不到10.0.0.1:2280的錯誤:

這需要我們點擊右上角的登陸,用賬號和密碼都是catadmin來登陸,在“配置”的最后一項“全局告警配置”的“客戶端路由”里面改為127.0.0.1:2280后,提交刷新實時頁面,數據又回來了!

<?xml version="1.0" encoding="utf-8"?>  
<router-config backup-server="127.0.0.1" backup-server-port="2280">  
   <default-server id="127.0.0.1" port="2280" enable="true" weight="1.0"/>  
</router-config>  

http://blog.csdn.net/u011439289/article/details/46988993#

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM