Windows
Java 8
Maven 3.5
MySQL 5.7
CAT 2.0.0
Dubbo 2.6
Spring 4.3
客户端应用程序接入 CAT
需要在系统的特定路径中部署 client.xml
配置文件。 Windows
系统和 Linux
系统的部署路径不一样,但其内容是一样的。
如果你的客户端程序是运行在 Windows
系统中,例如你的应用程序项目所在的目录路径是 D:/application/workspace/idea/springmvc-dubbo-mybatis-with-cat-sample
。那么,你需要在此项目所在的盘符(即这里的 D
盘)创建 data/appdatas/cat
目录,并将 client.xml
配置文件存放在这个路径中。如作者的客户端配置文件 D:/data/appdatas/cat/client.xml
:
<?xml version="1.0" encoding="utf-8"?> <configmode="client"xmlns:xsi="http://www.w3.org/2001/XMLSchema"xsi:noNamespaceSchemaLocation="config.xsd"> <servers> <serverip="10.10.10.121"port="2280"http-port="8080"/> <serverip="10.10.10.122"port="2280"http-port="8080"/> <serverip="10.10.10.123"port="2280"http-port="8080"/> </servers> </config>
如果你的客户端程序是运行在 Linux
系统中,那么你需要创建 /data/appdatas/cat
目录,并确保运行程序的用户对此目录有读写权限。然后将 client.xml
配置文件存放在这个路径中。配置文件的内容与上同。
在需要接入 CAT
监控平台的项目中新建属性配置文件 src/main/resources/META-INF/app.properties
。其内容如下:
################## CAT会自动加载此文件 ################## # 应用的名称(可以根据此名称在CAT的管理控制台查找对应的信息) app.name=service-article
客户端程序接入 CAT
需要依赖 cat-client
包。由于 cat-client
没有加入 maven
远程中央仓库,因此需要指定 CAT
专用的远程仓库。在需要接入 CAT
监控平台的 web
项目的 pom.xml
中加入如下配置:
<repositories> <!-- CAT client 仓库 --> <repository> <id>unidal-nexus-repo</id> <url>http://unidal.org/nexus/content/repositories/releases</url> </repository> </repositories> <dependencies> <!-- 客户端接入CAT的依赖 --> <dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-client</artifactId> <version>${cat-client.version}</version> </dependency> </dependencies>
然后在 web
项目的 web.xml
配置文件中加入如下配置即可:
<filter> <filter-name>cat-filter</filter-name> <filter-class>com.dianping.cat.servlet.CatFilter</filter-class> </filter> <filter-mapping> <filter-name>cat-filter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
接入后,在 Transaction
中会生成 URL
信息。效果图(缩略图,可右键在新标签页打开图片查看):
项目地址: https://github.com/fanlychie/cat-client-mybatis
你可以检出项目手工执行安装到本地的 maven
仓库。或者使用博主托管在 github
的 maven
仓库:
<!-- CAT mybatis和dubbo 仓库 --> <repositories> <repository> <id>fanlychie-maven-repo</id> <url>https://raw.github.com/fanlychie/maven-repo/releases</url> </repository> </repositories> <dependencies> <!-- mybatis接入CAT的依赖 --> <dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-client-mybatis</artifactId> <version>2.0.0</version> </dependency> </dependencies>
接入方式(这里仅给出 spring 的 xml 配置参考方式):
<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"> <propertyname="dataSource"ref="dataSource"/> <propertyname="typeAliasesPackage"value="org.fanlychie.entity"/> <propertyname="configLocation"value="classpath:mybatis-config.xml"/> <propertyname="mapperLocations"value="classpath*:mapper/*.xml"/> <!-- MyBatis 接入 CAT --> <propertyname="plugins"> <array> <beanclass="com.wanda.cat.sample.plugins.CatMybatisPlugin"></bean> </array> </property> </bean>
接入后,在 Transaction
中会生成 SQL
信息。效果图(缩略图,可右键在新标签页打开图片查看):
项目地址: https://github.com/fanlychie/cat-dubbo-monitor
你可以检出项目手工执行安装到本地的 maven
仓库。或者使用博主托管在 github
的 maven
仓库:
<!-- CAT mybatis和dubbo 仓库 --> <repositories> <repository> <id>fanlychie-maven-repo</id> <url>https://raw.github.com/fanlychie/maven-repo/releases</url> </repository> </repositories> <dependencies> <!-- dubbo接入CAT的依赖 --> <dependency> <groupId>net.dubboclub</groupId> <artifactId>cat-dubbo-monitor</artifactId> <version>0.0.6</version> </dependency> </dependencies>
接入方式:只需要声明依赖包,不需要做任何配置。接入后,在cat中会出现cross报表,dependency,服务端的matrix以及调用链路的trace信息。
效果图(缩略图,可右键在新标签页打开图片查看):
项目地址: https://github.com/fanlychie/cat-client-dubbo
你可以检出项目手工执行安装到本地的 maven
仓库。或者使用博主托管在 github
的 maven
仓库:
<!-- CAT mybatis和dubbo 仓库 --> <repositories> <repository> <id>fanlychie-maven-repo</id> <url>https://raw.github.com/fanlychie/maven-repo/releases</url> </repository> </repositories> <dependencies> <!-- 客户端dubbo接入CAT --> <dependency> <groupId>org.fanlychie</groupId> <artifactId>cat-client-dubbo</artifactId> <version>1.0.0</version> </dependency> </dependencies>
接入方式为,在 web
项目的消费者端 dubbo
配置文件中加入如下配置:
<dubbo:consumerfilter="CatClientFilter"/>
接入后,在 Transaction
的 URL
中会生成 dubbo
调用链路的 trace
信息。
接入前的效果图(缩略图,可右键在新标签页打开图片查看):
接入后的效果图(缩略图,可右键在新标签页打开图片查看):
异常日志信息接入将异常日志上报到 CAT
服务器,方便查看异常日志。
log4j.rootCategory = INFO, ...xxx... , CAT # 异常日志上报到CAT log4j.appender.CAT = com.dianping.cat.log4j.CatAppender log4j.appender.CAT.Threshold = ERROR
当启动两个或以上依赖 cat-client
包的项目的时候,会报出如下错误,致使服务无法正常提供服务:
2018-08-05 23:14:01:326 [main] ERROR [Server:102] - [DUBBO] qos-server can not bind localhost:22222, dubbo version: 2.6.0, current host: 127.0.0.1 java.net.BindException: Address already in use: bind
这是 dubbo
的 qos
服务端口冲突引起的,其默认使用 22222
端口。可以在项目的 dubbo.properties
属性配置文件中修改此端口:
# 避免端口冲突, 默认端口22222 dubbo.qos.port=20221
完整示例项目链接: springmvc-dubbo-mybatis-with-cat-sample
参考文档文献链接: https://github.com/dianping/cat