本文概要:
1、CAT监控系统是什么。
2、CAT监控系统能做什么,能监控些什么。
下面有些截图是CAT 2.0版本的,但和3.0版本没什么区别的。
一、 简介

CAT(Central Application Tracking)是美团开源的基于Java开发的实时分布式应用监控平台,提供了全面的监控服务和业务决策支持。
本文概要:
1、CAT监控系统是什么。
2、CAT监控系统能做什么,能监控些什么。
下面有些截图是CAT 2.0版本的,但和3.0版本没什么区别的。
CAT(Central Application Tracking)是美团开源的基于Java开发的实时分布式应用监控平台,提供了全面的监控服务和业务决策支持。
在理解什么是埋点之前,首先需要了解一些基础知识:(以下摘自:http://www.chinawebanalytics.cn/auto-event-tracking-good-bad-ugly/)
我们能够监测网站上用户的行为,或者app上用户的行为,都需要在网站的每一页或者app中加上一些程序代码(基础代码)。
CAT(Central Application Tracking)是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,基本接入了美团上海侧所有核心应用。
目前在中间件(MVC、RPC、数据库、缓存等)框架中得到广泛应用,为美团各业务线提供系统的性能指标、健康状况、监控告警等。
自2014年开源以来,Github 收获 7700+ Star,2800+ Forks,被 100+ 公司企业使用,其中不乏携程、陆金所、猎聘网、平安等业内知 名公司。
在每年全球 QCon 大会、全球架构与运维技术峰会等都有持续的技术输出,受到行业内认可,越来越多的企业伙伴加入了 CAT 的开 源建设工作,为 CAT 的成⻓贡献了巨大的力量。
https://github.com/dianping/cat/wiki/readme_server 官方文档中很详细,我们实际操作一下。
为了简单,这里采用 docker 部署的方式。
然后你需要在你的项目中创建 src/main/resources/META-INF/app.properties 文件, 并添加如下内容:
app.name={appkey}
CAT(Central Application Tracking),是基于 Java 开发的分布式实时监控系统。
CAT 目前在美团点评的产品定位是应用层的统一监控组件,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能指标、健康状况、实时告警等。
CAT 目前在美团点评已经基本覆盖全部业务线,每天处理的消息总量 3200 亿+,存储消息量近 400TB,在通信、计算、存储方面都遇到了很大的挑战。
感兴趣的朋友欢迎 Star 开源项目 https://github.com/dianping/cat。
spring 的功能非常强大,如何通过 spring 扫描指定包呢?
比如我们想获取指定包下的所有枚举。
package com.github.houbb.spring.tool.utils;
import com.github.houbb.heaven.util.lang.StringUtil;
import com.github.houbb.spring.tool.exception.SpringToolException;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.util.ClassUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* spring 包工具类
*
* @since 1.0.0
*/
public class SpringPackageUtil {
/**
* 扫描
* @param basePackages 基础包信息
* @param resourcePattern 资源正则
*/
public static List scanClassName(String basePackages, String resourcePattern) {
try {
List classNameList = new ArrayList<>();
if(StringUtil.isEmpty(basePackages)
|| StringUtil.isEmpty(resourcePattern)) {
return classNameList;
}
final ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
// 根据classname生成class对应的资源路径,需要扫描的包路径
//ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
String pattern = ClassUtils.convertClassNameToResourcePath(basePackages) + resourcePattern;
// 获取classname的IO流资源
Resource[] resources = resourcePatternResolver.getResources(pattern);
// MetadataReaderFactory接口 ,MetadataReader的工厂接口。允许缓存每个MetadataReader的元数据集
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourcePatternResolver);
for (Resource resource : resources) {
if (resource.isReadable()) {
// 通过class资源(resource)生成MetadataReader
MetadataReader metadataReader = readerFactory.getMetadataReader(resource);
// 获取class名
String className = metadataReader.getClassMetadata().getClassName();
classNameList.add(className);
}
}
return classNameList;
} catch (Exception e) {
throw new SpringToolException(e);
}
}
/**
* 扫描
* @param basePackages 基础包信息
* @param resourcePattern 资源正则
*/
public static List scanClass(String basePackages, String resourcePattern) {
List nameList = scanClassName(basePackages, resourcePattern);
return nameList.stream().map((Function) s -> {
try {
return Class.forName(s);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
}
}
FrontJS 提供准确、实时、完整的程序错误、资源加载、网络请求信息及网站性能监测报告,帮助开发者快速追踪网站故障,及时修复问题,维护网站质量,指导改善用户体验。
如果只是简单使用这个工具,实际上个人的技术收获是比较少的。
从侧面可以看出,监控是可以做到这么简单的。
前端的监控也是非常强的一种需求,值得我们学习这种模式。
Categraf 是一款 All-in-One 的开源的 telemetry 数据采集器,支持指标、日志采集;支持 Tracing 数据的收集;
支持物理机、虚拟机、交换机、容器、K8s、多种中间件/数据库的数据采集,支持混合云架构、云原生架构、多云架构。汇聚领域最佳实践,开箱即用。
安装和配置 Datadog Agent,以便收集并发送数据。
收集关于应用程序、服务和系统的数据。
将 OpenTelemetry 的度量指标、日志和追踪信息传输到 Datadog。
可视化、分析并生成关于数据的洞察。