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文件
配好的cat,使用相当简单,引入jar包,添加过滤,添加一行app.name配置即可完成基础操作
注意
需要将script配置文件放入/data/appdatas/cat中 也可以使用脚本中的一键安装script中(未测)