Cat监控基础使用

[TOC]

1.概念

基于Java开发的实时应用监控平台,提供了全面的监控服务和业务决策支持。

1-1.作用

故障快速发现:主要面向运维,让运维直观到生产环境出现的问题;
系统问题分析:面向开发,让开发能了解自己系统实时运行状态、发现问题。
分布式追踪

1-2.CAT报表展示消息类型

Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间次数

Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要

Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。

Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟

Trace 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息。

1-3.CAT架构图

追求简单、去中心化、分工协作,两层结构,除了依赖外部存储如HDFS和MySQL外,不依赖其他系统,CAT内部全面采用组件化设计和实现。CAT每天消息量巨大,一台机器是不能处理全部流量,必须分片处理,均衡负载。
业务应用目前使用CAT API进行埋点,后台异步线程采用TCP长连接方式,将消息源源不断地传输到后台服务器;CAT具有fail-over(故障切换)机制,在后台服务器不可用时会自动切换到另一台可用服务器。CAT目前使用native协议做序列化和反序列化,将来会考虑支持更多协议,比如thrift。

1-4.消息处理

消息处理分五个阶段:收集、传输、分析、存储和展示。

2.配置

GitHub–>Cat master 安装代码/mvnrepo 依赖jar包(Copy到maven库中)
https://github.com/dianping/cat
搭建教程有很多,如
https://my.oschina.net/fuxingCoder/blog/750639
注意下载master中也有搭建教程,较为详细

3.AOP埋点

master中整合了框架埋点方案
如dubbo/logback/mybatis/aop/url等等,说明书相当完善,自行参考

CAT以上完整分析
https://blog.csdn.net/tankun940507994/article/details/56672385/

4.使用

4-1.设置Cat配置文件

主要是对client.xml/server.xml/datasources.xml进行配置,如果使用公司现成的则该步已经搭建完成,无需配置

4-2.引入master打包生成的jar包

客户端和核心jar

1
2
3
4
5
6
7
8
9
10
11
<!--cat实时监控-->
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-client</artifactId>
<version>2.0.0</version><!--根据自己打包的版本号进行修改-->
</dependency>
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-core</artifactId>
<version>2.0.0</version>
</dependency>

4-3.配置Cat过滤器

这是整合Springboot的配置方案,如果是普通整合,只需要web.xml中添加servlet过滤器即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.dony15.controller;

import com.dianping.cat.servlet.CatFilter;
import com.dony15.exception.ExceptionHandler;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import javax.servlet.DispatcherType;
import java.util.List;

/**
* Created by ying on 2017/1/16.
*/
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {

@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
exceptionResolvers.add(new ExceptionHandler());
}

/**
* cat 过滤器
* @return
*/
@Bean
public FilterRegistrationBean catFilterRegistrationBeanConfig(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new CatFilter());
registrationBean.addUrlPatterns("/*");
registrationBean.setDispatcherTypes(DispatcherType.FORWARD, DispatcherType.REQUEST);
registrationBean.setName("catFilter");

return registrationBean;
}

/**
* 一种增加心跳的方式 也可以用controller来做
* @param registry
*/
@Override
public void addViewControllers( ViewControllerRegistry registry ) {
registry.addViewController( "/heartBeat" ).setStatusCode(HttpStatus.OK);
registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
super.addViewControllers( registry );
}

}

4-5.resources中添加配置

新建META-INF/app.properties文件

1
app.name=demo01

配好的cat,使用相当简单,引入jar包,添加过滤,添加一行app.name配置即可完成基础操作

注意

需要将script配置文件放入/data/appdatas/cat中 也可以使用脚本中的一键安装script中(未测)