javaDEMO
本网站记录了最全的各种 JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring 的, Mybatis 的等等各种,助力你从菜鸟到大牛,记得收藏哦~~
https://www.javastudy.cloud
CAT 总述
官方参考地址:
https://github.com/dianping/cat
CAT 是大众点评开源一款监控组件,这款监控以整体监控为主,即不能对每个请求,远程调用都做详细记录,只保留了错误的,长调用等典型的调用以供开发人员查看
CAT 中大致就两大部分, 一个是服务端,需要连接数据库, 一个就是发送数据的客户端
CAT 服务端搭建
服务端我们依然选用 Docker 来搭建,先把 cat 整个项目下载从官网下载下来,地址:https://codeload.github.com/dianping/cat/zip/master
数据库配置
在数据库中创建一个名为 cat 的数据库
可使用 sql 语句,也可以用可视化界面,注意编码要选 utf8mb4
create schema cat default character set = utf8mb4;
然后把 script/CatApplication.sql 导入到数据库中
导入之后的表结构,如下图所示:
修改 docker 配置文件
然后我们需要修改以下配置文件
- client.xml
修改 ip 为自己电脑的 ip
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="192.168.40.107" port="2280" http-port="8080"/>
</servers>
</config>
- datasources.xml
这里要注意!!!! 一定要使用 mysql 5.7 的版本!!!!!
中间的 url, user, password , 换成自己数据库的地址,用户名和密码
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://192.168.40.107:33309/cat]]></url>
<user>root</user>
<password>javastudy</password>
<connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
</properties>
- Dockerfile
50 行下面添加
ADD docker/client.xml /data/appdatas/cat/client.xml
把第 51 行的 ADD docker/datasources.sh /datasources.sh
删掉,因为这个是搜索 jdbc-url,user,passwd 把这些改成用环境变量来传递,我们上面改过 datasources.xml 之后,就不用这个了
最后两行, 改成:
# 端口加一个 2280
EXPOSE 8080 2280
# 执行tomcat的启动命令
CMD catalina.sh run
从 45 行开始的 Dockerfile 如下:
开始 docker 镜像文件构建
这里要注意了, 要在 cat-master 目录执行这个命令
# 在dockerfile 的上级目录,也就是cat-master这个目录执行这个命令
# 用 -f 指定dockerFile的路径
docker build -f docker/Dockerfile -t cat:0.1 .
因为是从源码来编译,下载依赖,所以过程会有些慢
最后可看到已成功打好镜像
运行镜像
# 需要绑定两个端口,8080 和 2280
docker run -d --name cat-server -p 8080:8080 -p 2280:2280 cat:0.1
浏览器输入地址: http://192.168.40.107:8080/cat/r
可看到 CAT 界面
CAT 客户端
CAT 客户端只有几以下几个部分组成
- 引入 CAT 的依赖
- 针对要监控的不同模块,做不同的集成方案
可集成的模块可参考以下文档:
https://github.com/dianping/cat/tree/master/integration , 这里我们以 springboot 为例
添加 cat 依赖
这里要注意,cat-client 并没有发布到中央仓库,有两种方法:
一.把 cat-client.jar 下载下来,然后上传到自己的私服
二.配置 unidal 的仓库地址:
repositories {
mavenCentral()
//重点在这里,添加unidal的地址
maven {
url 'http://unidal.org/nexus/content/repositories/releases/'
}
}
在原有 web 的基础上 Cat 只用添加这一个依赖就可以了
compile group: 'com.dianping.cat', name: 'cat-client', version: '3.0.0'
完整依赖如图:
添加测试的 Controller 代码
因为 cat 已启用 8080 端口,所以这里把程序端口改成了 9090
server.port=9090
测试的 Controller 代码
@RestController
public class TestController {
@GetMapping("testCat")
public String testCat(){
return "in testCat";
}
}
整合进 Cat 的代码
Cat 与 springboot,web 的集成以过滤器的形式,我们在 Main 函数所在类中中添加:
@Bean
public FilterRegistrationBean catFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
CatFilter filter = new CatFilter();
registration.setFilter(filter);
registration.addUrlPatterns("/*");
registration.setName("cat-filter");
registration.setOrder(1);
return registration;
}
在客户端配置 cat 服务端信息
现在要告诉客户端,服务端在哪里, 信息要往哪里发送
1.新建 app.properties
如上图,在 resources 下新建 META-INF 文件夹,然后新建 app.properties 文件
# 向cat 指定自己应用的名称
app.name=java-study
2.在电脑中建一个 cat 文件夹,把源码中的 docker/client.xml 拷贝到 cat 文件夹下
client.xml 内容如下:
指定 cat 服务器的相关信息
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="192.168.40.107" port="2280" http-port="8080"/>
</servers>
</config>
- 配置运行项
在 idea 右上角运行配置中,设置 CAT_HOME 变量,指向我们刚才建 cat 目录的位置
然后运行
结果测试
在浏览器输入 http://localhost:9090/testCat
能看到相应的返回结果.
在 Cat 面板中
点进去可看到详情
DEMO 总评
CAT 的官方文档比较少,深入集成的坑比较多,但是 CAT 功能又是非常之强大,要注意 CAT_HOME 的坑, 要注意 Mysql 版本的坑, 等等, 同样, 本 DEMO 只用于学习测试, 在生产环境,还需要集群式部署 cat,加油吧,少年!!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于