可先了解理论知识
本文测试代码git地址:https://gitee.com/carpentor/framework-cat.git
服务搭建
1、下载源码mvn clean install -DskipTests,如果编译报错直接下载:http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war
2、mysql新建库名:cat;执行源码目录sql:script/CatApplication.sql
3、在tomcat所在磁盘新建目录:\data\appdatas\cat
4、在目录下放下图两个文件,相关文件在git代码根目录\data\appdatas\cat
5、对程序运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限。例如cat服务运行在e盘的tomcat中,则需要对e:/data/appdatas/cat和e:/data/applogs/cat有读写权限。
6、
将war包重命名为:cat.war然后放tomcat启动
文件解释:
1、client.xml:配置cat服务端地址端口,服务端也配置了该文件主要意义是把自身当成一个客户端进行监控--客户端服务端都需要配置2280是cat内部使用端口
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="10.1.1.1" port="2280" http-port="8080"/>
<server ip="10.1.1.2" port="2280" http-port="8080"/>
<server ip="10.1.1.3" port="2280" http-port="8080"/>
</servers>
</config>
2、datasources.xml:配置cat的数据源相关--每个cat服务端都需要配置
启动tomca访问http://127.0.0.1:8080/cat/s/config?op=routerConfigUpdate
进行客户端路由配置
注意:
1、图中ip要改为cat服务端内网ip否则当你访问就会如下图
2、如果cat服务端集群配置可参考如下
<?xml version="1.0" encoding="utf-8"?>
<router-config backup-server="10.1.1.1" backup-server-port="2280">
<default-server id="10.1.1.1" weight="1.0" port="2280" enable="false"/>
<default-server id="10.1.1.2" weight="1.0" port="2280" enable="true"/>
<default-server id="10.1.1.3" weight="1.0" port="2280" enable="true"/>
<network-policy id="default" title="default" block="false" server-group="default_group">
</network-policy>
<server-group id="default_group" title="default-group">
<group-server id="10.1.1.2"/>
<group-server id="10.1.1.3"/>
</server-group>
<domain id="cat">
<group id="default">
<server id="10.1.1.2" port="2280" weight="1.0"/>
<server id="10.1.1.3" port="2280" weight="1.0"/>
</group>
</domain>
</router-config>
配置完后重启cat服务即可使用
项目埋点
本次埋点是抽取公共包cat-http-common,业务项目引用公共包,只要在业务代码启动类上加@EnableCat注解即可
项目是基于http埋点,包含restTemplate
架子如图:
调用顺序:cat-zuul-->cat-http-->cat-http2;
先后启用cat-zuul,cat-http,cat-http2,然后post访问:http://localhost:8003/cat-http/cat-http1
附上几张图自己体会
1、
2=====点击Log view
源码
cat-zuul里新增过滤器,调用端入口调用Cat.logRemoteCallClient(ctx);将message_id放入hander
被调用者过滤器解析header里的message_id发送cat:Cat.logRemoteCallServer(catContext);
详细代码git地址:https://gitee.com/carpentor/framework-cat.git
公众号主要记录各种源码、面试题、微服务技术栈,帮忙关注一波,非常感谢