在项目中监控代码运行的状况,可以采用点评的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”监控功能中,会发现监控的名字和方法。

  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. }

对应代码里面的这两行名称:

  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包,暂时不知道哪些有用,哪些没用,所以全部加入工程中是没错的了。

在工程里面编写一个类,内容如下:

  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. }

运行,发现很快就结束了!输入提示看日志。

打开日志,发现有如下提示:

  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文件夹必须改为源文件的指定格式的。

再次运行代码,有如下效果,程序不会自动关闭了,说明在监控中……

查看日志,一切正常:

  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监控项目的更多相关文章

  1. 部署点评Cat监控项目(转)

    原文地址:http://www.bubuko.com/infodetail-986338.html 在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat, ...

  2. 美团点评CAT监控平台研究

    1. 美团点评CAT监控平台研究 1.1. 前言 此文根据我对官方文档阅读并记录整理所得,中间可能会穿插一些自己的思考和遇坑 1.2. 简介 CAT 是基于 Java 开发的实时应用监控平台,为美团点 ...

  3. 大众点评cat监控平台搭建

    参考官方文档:https://github.com/dianping/cat/wiki/readme_server 1.数据库相关 (1)创建数据库cat,并执行以下sql创建相关表: CREATE ...

  4. 搭建大众点评CAT监控平台

    CAT(Central Application Tracking)是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控.关于CAT的具体介绍可移步到CAT官网进行查阅. 1. 环境清单 C ...

  5. 深入详解美团点评CAT跨语言服务监控(一) CAT简介与部署

    前言: CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,除了与点评RPC组件融合的很好之外,他将会能与Spring.MyBatis.Dubbo 等框架以及Log4j 等结合,支持P ...

  6. 大众点评cat实时监控简介及部署

    简介 背景 CAT(Central Application Tracking)是由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全面 ...

  7. Centos 7部署大众点评CAT(一)——单服务器部署

    前一篇拙作上传的时间已经过去2个月了,中间并不是闲着...主要是忙着学习各种组件的安装,写了几篇安装心得存在硬盘里. 最近尝试了点评开源的CAT监控平台的安装,并且希望能够引入到工作中.在部署实践的过 ...

  8. 点评cat系列-服务器开发环境部署

    我们有三种部署方式:1. docker 部署2. 采用官方的 war 包部署. 3. 源码部署 很显然 docker 部署是最简单的, 我尝试了多次, 都在 cat docker 容器镜像的编译过程失 ...

  9. 大众点评CAT开源监控系统剖析

    参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监控系统的设计与实现 深度剖析开源分布式监控CAT [分布式监控CAT] Client端源 ...

随机推荐

  1. nfc近场通信

    NFC简介: Near Field Communication 近场通信,是一种数据传输技术. 与wifi.蓝牙.红外线等数据传输技术的一个主要差异就是有效距离一般不能超过4cm. NFC支持3种工作 ...

  2. Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!

    Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...

  3. C++之继承

    #include <iostream> using namespace std ; class Animal { private: int age ; protected: int id ...

  4. SharePoint 自定义列表页面定制续—[保存模板后不能正常使用]

    背景:SharePoint列表的四个基本页样式不是特别的好,所以很多情况都需要重新定制,然而经过定制后,又发生了新的问题,就是存成模板,再建新的列表的时候,定制的页面不能正常显示了. 1. 定制后的页 ...

  5. 【15】-java实现二分查找

    二分查找在面试中经常被遇到,这个方法十分优雅 介绍 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它.一开始,范围覆盖整个数组 ...

  6. ubuntu12.04:Mysql数据库:自动安装

    打开终端,输入下面命令: 1 sudo apt-get install mysql-server 2 sudo apt-get install mysql-client 一旦安装完成,MySQL 服务 ...

  7. The 6th tip of DB Query Analyzer

      The 6th tip of DB Query Analyzer MA Gen feng (Guangdong Unitoll Services incorporated, Guangzhou ...

  8. jquery性能优化的38个建议

    一.注意定义jQuery变量的时候添加var关键字 这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下: $loading = $('#loading'); ...

  9. Linux的pwd命令详解

    在Linux层次结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录.然而,没有提示符来告知用户目前处于哪一个目录中.想要知道当前所处的目录, ...

  10. jbpm 工作流(二)

    1           概述 本文主要介绍如何将JBPM+Struts+Spring+Hibernate整合在一块.并通过一个简单实例来说明.此实例为一个申请审批的简单流程,并将申请人和审批人记录到数 ...