点评CAT在Spring Cloud中的实践

栏目: Java · 发布时间: 5年前

内容简介:作者在基于Spring Cloud微服务的架构时,一直苦于寻找一个可靠的性能监控平台,后在大神的推荐下,详细研究了点评CAT,其满足对应用性能监控的需求(包含SQL性能,URL响应性能等),将踩过的坑进行分享一下。由于微服务集群并不是很庞大,且服务器资源有限,所以暂时只采用了单点部署的CAT,集群部署和使用请参考CAT的github,这里暂不做分享其中com.dianping.cat.configuration.ClientConfigProvider文件中填写完成实现类名称,实现类代码如下:

作者在基于Spring Cloud微服务的架构时,一直苦于寻找一个可靠的性能监控平台,后在大神的推荐下,详细研究了点评CAT,其满足对应用性能监控的需求(包含 SQL 性能,URL响应性能等),将踩过的坑进行分享一下。

下载cat 3.0并启动

由于微服务集群并不是很庞大,且服务器资源有限,所以暂时只采用了单点部署的CAT,集群部署和使用请参考CAT的github,这里暂不做分享

  1. 配置系统的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
  2. 修改tomcat的server.xml使其支持中文的URL
<Connector port="8080" protocol="HTTP/1.1"
          URIEncoding="utf-8"    connectionTimeout="20000"
              redirectPort="8443" />
<!-- 增加  URIEncoding="utf-8"  -->
复制代码
  1. 创建CAT使用的文件夹,并修改其配置
mkdir /data
chmod -R 777 /data/
复制代码
  1. 修改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>
复制代码
  1. 修改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>
复制代码
  1. 运行CAT的SQL脚本初始化数据库
    点评CAT在Spring Cloud中的实践
  2. 将CAT的war重命名为cat.war放到tomcat的webapps下,并启动tomcat(默认用户名密码admin:admin),即可通过服务器IP:8080/cat进行访问

springboot集成cat client

  1. maven引入cat client
<dependency>
    <groupId>com.dianping.cat</groupId>
    <artifactId>cat-client</artifactId>
    <version>3.0.0</version>
</dependency>
复制代码
  1. 使用SPI方式配置cat client
    点评CAT在Spring Cloud中的实践

其中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=应用名称

  1. 集成插件使用cat client,插件位置
    点评CAT在Spring Cloud中的实践

我们分别使用了mybatis中的sql跟踪,log4j2的CatAppender,springboot的CatFilter,context中的结合feign对链路进行跟踪(cat链路跟踪不是一个完整的功能,如果对链路跟踪没有很高的要求可以进行使用)

注意:如果项目中使用了Hystrix,因为cat使用ThreadLocal保存跟踪的ID,所以如果需要保证链路跟踪的正确性,需要将隔离策略改为SEMAPHORE

CAT基本使用

Problem非常重要这里显示应用的报错,慢SQL,慢URL等,也是作者最常用的模块,其他功能可以参考Documents进行使用,另外作者最近使用Alert功能,能将告警信息发送至钉钉,第一时间响应问题,还是很嗨的!当然需要自己实现一个类似于webhook的服务。

点评CAT在Spring Cloud中的实践

以上所述就是小编给大家介绍的《点评CAT在Spring Cloud中的实践》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Music Recommendation and Discovery

Music Recommendation and Discovery

Òscar Celma / Springer / 2010-9-7 / USD 49.95

With so much more music available these days, traditional ways of finding music have diminished. Today radio shows are often programmed by large corporations that create playlists drawn from a limited......一起来看看 《Music Recommendation and Discovery》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试