1. 程式人生 > >部署點評Cat監控項目

部署點評Cat監控項目

-c 賬戶 font throw 提交 transacti 手動添加 ger 命令

在項目中監控代碼運行的狀況,可以采用點評的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. Cat.logEvent("SQL.Method", method);
  4. Cat.logEvent("SQL.Database", String.format(JDBC_CONNECTION, serverIp, name));
  5. MessageTree tree = Cat.getManager().getThreadLocalMessageTree();
  6. ((DefaultMessageTree) tree).setDomain(domain);
  7. Thread.sleep(500 + new Random().nextInt(1000));
  8. int nextInt = new Random().nextInt(3);
  9. if (nextInt % 2 == 0) {
  10. t.setStatus(Transaction.SUCCESS);
  11. } else {
  12. t.setStatus(String.valueOf(nextInt));
  13. }
  14. t.complete();
  15. }


技術分享

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

[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. Cat.logEvent("Method_test", "good");
  5. Cat.logEvent("Method_event", "bad");
  6. int nextInt = new Random().nextInt(3);
  7. if (nextInt % 2 == 0) {
  8. t.setStatus(Transaction.SUCCESS);
  9. } else {
  10. t.setStatus(String.valueOf(nextInt));
  11. }
  12. t.complete();
  13. }
  14. }

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

技術分享

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

[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#

部署點評Cat監控項目