springmvc+dubbo+mybatis 接入大众点评 CAT 监控平台

 

转自:https://fanlychie.github.io/post/springmvc-dubbo-mybatis-with-cat.html

CAT(Central Application Tracking)是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。关于CAT的具体介绍可移步到CAT官网进行查阅。
CAT平台的搭建可移步到「搭建大众点评CAT监控平台」。

1. 开发环境

Windows Java 8 Maven 3.5 MySQL 5.7 CAT 2.0.0 Dubbo 2.6 Spring 4.3

2. 客户端配置

客户端应用程序接入CAT需要在系统的特定路径中部署client.xml配置文件。Windows系统和Linux系统的部署路径不一样,但其内容是一样的。

2.1 Windows 客户端配置

如果你的客户端程序是运行在Windows系统中,例如你的应用程序项目所在的目录路径是D:\application\workspace\idea\springmvc-dubbo-mybatis-with-cat-sample。那么,你需要在此项目所在的盘符(即这里的D盘)创建data\appdatas\cat目录,并将client.xml配置文件存放在这个路径中。如作者的客户端配置文件D:\data\appdatas\cat\client.xml

 

1

2

3

4

5

6

7

8

 

2.1 Linux 客户端配置

如果你的客户端程序是运行在Linux系统中,那么你需要创建/data/appdatas/cat目录,并确保运行程序的用户对此目录有读写权限。然后将client.xml配置文件存放在这个路径中。配置文件的内容与上同。

3. 配置监控的项目名

在需要接入CAT监控平台的项目中新建属性配置文件src/main/resources/META-INF/app.properties。其内容如下:

 

################## CAT会自动加载此文件 ##################

# 应用的名称(可以根据此名称在CAT的管理控制台查找对应的信息)

app.name=service-article

4. URL 监控埋点

客户端程序接入CAT需要依赖cat-client包。由于cat-client没有加入maven远程中央仓库,因此需要指定CAT专用的远程仓库。在需要接入CAT监控平台的web项目的pom.xml中加入如下配置:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

unidal-nexus-repo

http://unidal.org/nexus/content/repositories/releases

com.dianping.cat

cat-client

${cat-client.version}

然后在web项目的web.xml配置文件中加入如下配置即可:

 

1

2

3

4

5

6

7

8

9

10

 

cat-filter

com.dianping.cat.servlet.CatFilter

cat-filter

/*

REQUEST

FORWARD

接入后,在Transaction中会生成URL信息。效果图(缩略图,可右键在新标签页打开图片查看):

5. mybatis 接入

项目地址:https://github.com/fanlychie/cat-client-mybatis

你可以检出项目手工执行安装到本地的maven仓库。或者使用博主托管在githubmaven仓库:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

fanlychie-maven-repo

https://raw.github.com/fanlychie/maven-repo/releases

com.dianping.cat

cat-client-mybatis

2.0.0

接入方式(这里仅给出 spring 的 xml 配置参考方式):

 

1

2

3

4

5

6

7

8

9

10

11

12

 

接入后,在Transaction中会生成SQL信息。效果图(缩略图,可右键在新标签页打开图片查看):

6. dubbo 接入 (生产者端)

项目地址:https://github.com/fanlychie/cat-dubbo-monitor

你可以检出项目手工执行安装到本地的maven仓库。或者使用博主托管在githubmaven仓库:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

fanlychie-maven-repo

https://raw.github.com/fanlychie/maven-repo/releases

net.dubboclub

cat-dubbo-monitor

0.0.6

接入方式:只需要声明依赖包,不需要做任何配置。接入后,在cat中会出现cross报表,dependency,服务端的matrix以及调用链路的trace信息。

效果图(缩略图,可右键在新标签页打开图片查看):

7. dubbo 接入 (web消费者端)

项目地址:https://github.com/fanlychie/cat-client-dubbo

你可以检出项目手工执行安装到本地的maven仓库。或者使用博主托管在githubmaven仓库:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

fanlychie-maven-repo

https://raw.github.com/fanlychie/maven-repo/releases

org.fanlychie

cat-client-dubbo

1.0.1

接入方式为,在web项目的消费者端dubbo配置文件中加入如下配置:

 

1

 

接入后,在TransactionURL中会生成dubbo调用链路的trace信息。

接入前的效果图(缩略图,可右键在新标签页打开图片查看):

接入后的效果图(缩略图,可右键在新标签页打开图片查看):

8. log4j 接入

异常日志信息接入将异常日志上报到CAT服务器,方便查看异常日志。

 

log4j.rootCategory = INFO, ...xxx... , CAT

# 异常日志上报到CAT

log4j.appender.CAT = com.dianping.cat.log4j.CatAppender

log4j.appender.CAT.Threshold = ERROR

9. 项目启动报错问题

当启动两个或以上依赖cat-client包的项目的时候,会报出如下错误,致使服务无法正常提供服务:

 

1

2

 

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

这是dubboqos服务端口冲突引起的,其默认使用22222端口。可以在项目的dubbo.properties属性配置文件中修改此端口:

 

# 避免端口冲突, 默认端口22222

dubbo.qos.port=20221

完整示例项目链接:springmvc-dubbo-mybatis-with-cat-sample
参考文档文献链接:https://github.com/dianping/cat

你可能感兴趣的:(JAVA,架构服务)