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,加油吧,少年!!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于