接入准备工作

添加 app.properties

然后你需要在你的项目中创建 src/main/resources/META-INF/app.properties 文件, 并添加如下内容:

app.name={appkey}

appkey 只能包含英文字母 (a-z, A-Z)、数字 (0-9)、下划线 (_) 和中划线 (-)

配置 client.xml

配置 /data/appdatas/cat/client.xml ($CAT_HOME/client.xml)

此文件用于配置cat-client连接服务端的地址,以10.1.1.1,10.1.1.2,10.1.1.3三台CAT服务器为例

client_cache.xml是路由缓存文件,若路由出现错误,可以删除client_cache.xml,再重启服务

PS D:\data\appdatas\cat> 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>

2280是默认的CAT服务端接受数据的端口,不允许修改,http-port是Tomcat启动的端口,默认是8080,建议使用默认端口

现在java的cat client会自动懒加载,已经没有必要手动初始化客户端。

可以配置多个地址。

项目路径

https://github.com/houbb/cat-client-demo

目录结构

└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─github
    │  │          └─houbb
    │  │              └─cat
    │  │                  └─client
    │  │                      └─demo
    │  │                          │  CatSpringbootApplication.java
    │  │                          │
    │  │                          ├─config
    │  │                          │      CatFilterConfigure.java
    │  │                          │
    │  │                          └─controller
    │  │                                  SampleController.java
    │  │
    │  └─resources
    │      │  application.yml
    │      │
    │      └─META-INF
    │              app.properties

pom.xml

引入 cat 客户端。

<dependency>
    <groupId>com.dianping.cat</groupId>
    <artifactId>cat-client</artifactId>
    <version>3.1.0</version>
</dependency>

其他 springboot 相关不再赘述。

入门测试代码

package com.github.houbb.cat.client.demo.controller;

import com.dianping.cat.Cat;
import com.dianping.cat.message.Event;
import com.dianping.cat.message.Transaction;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RestController
public class SampleController {

    /**
     * http://localhost:8081/myTest
     * @return
     */
    @RequestMapping("/myTest")
    @ResponseBody
    public String home() {
        Transaction t = Cat.newTransaction("MY-TEST-TX", "/test/root/");

        try {
            Cat.logEvent("URL.Server", "serverIp", Event.SUCCESS, "ip=127.0.0.1");
            Cat.logMetricForCount("metric.key");
            Cat.logMetricForDuration("metric.key", 5);

            TimeUnit.MILLISECONDS.sleep(1);

            t.setStatus(Transaction.SUCCESS);
        } catch (Exception e) {
            t.setStatus(e);
            Cat.logError(e);
        } finally {
            t.complete();
        }

        return "Hello World!";
    }

}

springboot URL 监控整合

将CatFilterConfigure.java 放到任意SpringBoot 能扫描到的package下面。

package com.github.houbb.cat.client.demo.config;

import com.dianping.cat.servlet.CatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Created by zhengwenzhu on 2017/1/17.
 */

@Configuration
public class CatFilterConfigure {

    @Bean
    public FilterRegistrationBean catFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        CatFilter filter = new CatFilter();
        registration.setFilter(filter);
        registration.addUrlPatterns("/*");
        registration.setName("cat-filter");
        registration.setOrder(1);
        return registration;
    }

}

自动会把 CatFilter 加载到拦截器中。

效果

直接在 http://127.0.0.1:8080/cat/r/t?domain=cat-demo&ip=All&date=2023091918&reportType=day&op=view 中可以查看效果。

效果如下:

cat-monitor

日志组件整合

Log4j2 配置

如果需要使用Cat自定义的Appender,需要在log4j2.xml中添加如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%-5p]  %c - %m%n" />
        </Console>
        <CatAppender name="CatAppender"/>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="console" />
            <AppenderRef ref="CatAppender" />
        </Root>
    </Loggers>
</Configuration>

参考资料

https://github.com/dianping/cat/blob/master/lib/java/README.zh-CN.md

https://github.com/dianping/cat/blob/master/integration/log4j2/README.md