这是什么东西?
CAT 是美团-大众点评用 Java 开发的开源实时应用监控平台(APM)。它从你的服务中收集性能指标、健康状态和告警,并生成实时报表。
这是需要我自己部署的服务端,还是嵌入代码里的类库?
两者都是:既有需要部署的服务端,也有嵌入应用里上报数据的客户端。服务端方面,cat-consumer 负责生成分析报表,cat-alarm 负责实时告警,cat-hadoop 负责把 logview 数据归档到 HDFS。
怎么把它跑起来?
用 --depth=1 克隆仓库(git 历史非常大),运行 script 文件夹里的数据库脚本,然后构建并部署 cat-home 模块——它一次性提供管理控制台、数据服务和告警服务。
它能监控哪些东西——支持哪些语言和技术栈?
官方客户端支持 Java、C/C++、Node.js、Python 和 Go。还有一个集成模块,提供常用中间件的接入:MVC、RPC、数据库和缓存框架、消息队列以及配置系统。
在采用它之前有什么要注意的坑吗?
仓库根目录下的 cat-client 模块已弃用,未来主版本中会被移除——请使用 lib/java 里的新 Java 客户端。另外请以 master 分支的文档为准;较早的第三方配置可能不兼容。
它只适合美团-大众点评那种规模的公司用吗,小团队也能用吗?
它最初是作为美团-大众点评服务端基础设施的基础组件打造的,所以面向大规模生产环境的服务——但它是开源的,其他公司也在用,而且可以登记到使用方列表里。
它能监控哪些类型的数据?
四种消息模型:Transaction、Event、Heartbeat 和 Metric——它们合起来可以捕获调用链路、离散事件、运行状态和度量指标。
数据实际上多快能看到?
非常快:报表粒度是分钟级,但从数据产生到服务端处理完成的整个流程只需几秒——README 里提到几秒前的数据基本上能立刻看到。
它会记录每一个请求,还是只采样一部分?
指标是全量采集的,聚合在客户端预先计算;只有调用链(trace)数据会采样,以控制数据量。
在生产环境大流量下它能扛得住吗?
这正是它的设计目标:面向海量数据的高吞吐、保证监控对业务透明的容错能力,以及在分布式甚至跨机房(跨 IDC)部署下的水平扩展。
What are similar projects?
signoz, pinpoint, skywalking, thanos, zipkin, VictoriaMetrics, xxl-job, jaeger
Which topics is it in?
distributed-tracing, apm, hadoop, tracing, distributed, high-availability, metrics, realtime, infrastructure, observability, distributed-systems, dashboard
