内容简介:作者在基于Spring Cloud微服务的架构时,一直苦于寻找一个可靠的性能监控平台,后在大神的推荐下,详细研究了点评CAT,其满足对应用性能监控的需求(包含SQL性能,URL响应性能等),将踩过的坑进行分享一下。由于微服务集群并不是很庞大,且服务器资源有限,所以暂时只采用了单点部署的CAT,集群部署和使用请参考CAT的github,这里暂不做分享其中com.dianping.cat.configuration.ClientConfigProvider文件中填写完成实现类名称,实现类代码如下:
作者在基于Spring Cloud微服务的架构时,一直苦于寻找一个可靠的性能监控平台,后在大神的推荐下,详细研究了点评CAT,其满足对应用性能监控的需求(包含 SQL 性能,URL响应性能等),将踩过的坑进行分享一下。
下载cat 3.0并启动
由于微服务集群并不是很庞大,且服务器资源有限,所以暂时只采用了单点部署的CAT,集群部署和使用请参考CAT的github,这里暂不做分享
- 配置系统的JDK,以及下载对应的tomcat,本人使用的是JDK8和tomcat8.5.x版本(JDK的配置和tomcat的下载不做详细说明)CAT下载地址http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war
- 修改tomcat的server.xml使其支持中文的URL
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="utf-8" connectionTimeout="20000"
redirectPort="8443" />
<!-- 增加 URIEncoding="utf-8" -->
复制代码
- 创建CAT使用的文件夹,并修改其配置
mkdir /data chmod -R 777 /data/ 复制代码
- 修改CAT配置文件,创建/data/appdatas/cat/client.xml并修改如下
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="127.0.0.1" port="2280" http-port="8080"/>
</servers>
</config>
复制代码
- 修改cat的数据库配置文件/data/appdatas/cat/datasource.xml
<?xml version="1.0" encoding="utf-8"?>
<data-sources>
<data-source id="cat">
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</connection-timeout>
<idle-timeout>10m</idle-timeout>
<statement-cache-size>1000</statement-cache-size>
<properties>
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://127.0.0.1:3306/cat]]></url> <!-- 请替换为真实数据库URL及Port -->
<user>root</user> <!-- 请替换为真实数据库用户名 -->
<password>root</password> <!-- 请替换为真实数据库密码 -->
<connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
</properties>
</data-source>
</data-sources>
复制代码
- 运行CAT的SQL脚本初始化数据库
- 将CAT的war重命名为cat.war放到tomcat的webapps下,并启动tomcat(默认用户名密码admin:admin),即可通过服务器IP:8080/cat进行访问
springboot集成cat client
- maven引入cat client
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-client</artifactId>
<version>3.0.0</version>
</dependency>
复制代码
- 使用SPI方式配置cat client
其中com.dianping.cat.configuration.ClientConfigProvider文件中填写完成实现类名称,实现类代码如下:
public class CatClientConfigProvider implements ClientConfigProvider {
@Override
public ClientConfig getClientConfig() {
List<Server> servers = Lists.newArrayList();
//cat 服务器地址,多个则需要使用,分割
String catServersStr = SpringUtils.getProperties("cat.servers");
if (catServersStr != null) {
String[] catServers = catServersStr.split(",");
for (String catServer : catServers) {
servers.add(new Server(catServer));
}
//domain直接去springboot的application name
String domain = SpringUtils.getProperties("spring.application.name");
ClientConfig config = new ClientConfig();
config.setServers(servers);
config.setDomain(domain);
return config;
}
return null;
}
}
复制代码
app.properties文件中填写app.name=应用名称
- 集成插件使用cat client,插件位置
我们分别使用了mybatis中的sql跟踪,log4j2的CatAppender,springboot的CatFilter,context中的结合feign对链路进行跟踪(cat链路跟踪不是一个完整的功能,如果对链路跟踪没有很高的要求可以进行使用)
注意:如果项目中使用了Hystrix,因为cat使用ThreadLocal保存跟踪的ID,所以如果需要保证链路跟踪的正确性,需要将隔离策略改为SEMAPHORE
CAT基本使用
Problem非常重要这里显示应用的报错,慢SQL,慢URL等,也是作者最常用的模块,其他功能可以参考Documents进行使用,另外作者最近使用Alert功能,能将告警信息发送至钉钉,第一时间响应问题,还是很嗨的!当然需要自己实现一个类似于webhook的服务。
以上所述就是小编给大家介绍的《点评CAT在Spring Cloud中的实践》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 美团点评酒旅数据仓库建设实践
- MCI:移动持续集成在大众点评的实践
- Apache Doris 在美团点评的实践
- 大众点评搜索基于知识图谱的深度学习排序实践
- 大众点评搜索基于知识图谱的深度学习排序实践
- 美团点评基于 Druid 的 Kylin 存储引擎实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Geometric Folding Algorithms
Erik D Demaine / Cambridge University Press / 2008-8-21 / GBP 35.99
Did you know that any straight-line drawing on paper can be folded so that the complete drawing can be cut out with one straight scissors cut? That there is a planar linkage that can trace out any alg......一起来看看 《Geometric Folding Algorithms》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
JSON 在线解析
在线 JSON 格式化工具