Cat监控是什么?有哪些特点?
CAT简介
CAT(Central Application Tracking)是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务, 包括实时应用监控,业务监控。
CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是 48 分钟 40 秒,基本上看到 48 分钟 38 秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。
Cat应用价值
减少故障发现时间
降低故障定位成本
辅助应用程序优化
Cat的优势
实时处理:信息的价值会随时间锐减,尤其是事故处理过程中
全量数据:全量采集指标数据,便于深度分析故障案例
高可用:故障的还原与问题定位,需要高可用监控来支撑
故障容忍:故障不影响业务正常运转、对业务透明
高吞吐:海量监控数据的收集,需要高吞吐能力做保证
可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统
Cat模型设计
1. 监控模型
支持 Transaction、Event、Heartbeat、Metric 四种消息模型
Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数
Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小
Heartbeat 表示程序内定期产生的统计信息, 如CPU利用率, 内存利用率, 连接池状态, 系统负载等
Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟
2. 消息树
CAT监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括Transaction、Event、Heartbeat、Metric等信息
Cat模块简介
1. 功能模块
cat-client: 客户端,上报监控数据
cat-consumer: 服务端,收集监控数据进行统计分析,构建丰富的统计报表
cat-alarm: 实时告警,提供报表指标的监控告警
cat-hadoop: 数据存储,logview 存储至 Hdfs
cat-home: 管理端,报表展示、配置管理等
2. 其他模块
cat-doc:服务端报表使用文档
integration:cat和一些第三方工具集成的内容(此部分一部分是由社区贡献,一部分官方贡献)
lib:CAT 的客户端,包括 Java、C/C++、Python、Node.js、Go
script:CAT 数据库脚本
为什么要用 Cat?
场景一:用户反馈 App 无法下单,用户反馈无法支付,用户反馈商品无法搜索等问题
场景一的问题在于当系统出现问题后,第一反馈的总是用户。我们需要做的是什么,是在出问题后研发第一时间知晓,而不是让用户来告诉我们出问题了。
Cat 可以出故障后提供秒级别的异常告警机制,不用再等用户来反馈问题了。
场景二:出故障后如何快速定位问题
一般传统的方式当出现问题后,我们就会去服务器上看看服务是否还存活。如果存活就会看看日志是否有异常信息。
在 Cat 后台的首页,会展示各个系统的运行情况,如果有异常,则会大片飘红,非常明显。最直接的方式还是直接查看 Problem 报表,这里会为我们展示直接的异常信息,快速定位问题。
场景三:用户反馈订单列表要 10 几秒才展示,用户反馈下单一直在转圈圈
场景三属于优化相关,对于研发来说,优化是一个长期的过程,没有最好只有更好。优化除了需要有对应的方案,最重要的是要对症下药。
所谓的对症下药也就是在优化之前,你得先知道哪里比较慢。RPC 调用慢?数据库查询慢?缓存更新慢?
Cat 可以提供详细的性能数据,95 线,99 线等。更细粒度的就是可以看到某个请求或者某个业务方法的所有耗时逻辑,前提是你做了埋点操作。
Cat 报表
Cat 目前有五种报表,每种都有特定的应用场景,下面我们来具体聊聊这些报表的作用。
Transaction 报表
适用于监控一段代码运行情况,比如:运行次数、QPS、错误次数、失败率、响应时间统计(平均影响时间、Tp 分位值)等等场景。
埋点方式:
public void shopService() { Transaction transaction = Cat.newTransaction("ShopService", "Service"); try { service(); transaction.setStatus(Transaction.SUCCESS); } catch (Exception e) { transaction.setStatus(e); // catch 到异常,设置状态,代表此请求失败 Cat.logError(e); // 将异常上报到cat上 // 也可以选择向上抛出:throw e; } finally { transaction.complete(); } }
可以在基础框架中对 Rpc, 数据库等框架进行埋点,这样就可以通过 Cat 来监控这些组件了。
业务中需要埋点也可以使用 Cat 的 Transaction,比如下单,支付等核心功能,通常我们对 URL 进行埋点就可以了,也就包含了具体的业务流程。
Event 报表
适用于监控一段代码运行次数,比如记录程序中一个事件记录了多少次,错误了多少次。Event 报表的整体结构与 Transaction 报表几乎一样,只缺少响应时间的统计。
埋点方式:
Cat.logEvent("Func", "Func1");
Problem 报表
Problem 记录整个项目在运行过程中出现的问题,包括一些异常、错误、访问较长的行为。
如果有人反馈你的接口报 500 错误了,你进 Cat 后就直接可以去 Problem 报表了,错误信息就在 Problem 中。
Problem 报表不需要手动埋点,我们只需要在项目中集成日志的 LogAppender 就可以将所有 error 异常记录,下面的段落中会讲解如何整合 LogAppender。
Heartbeat 报表
Heartbeat 报表是 CAT 客户端,以一分钟为周期,定期向服务端汇报当前运行时候的一些状态。
系统指标有系统的负载信息,内存使用情况,磁盘使用情况等。
JVM 指标有 GC 相关信息,线程相关信息。
Business 报表
Business 报表对应着业务指标,比如订单指标。与 Transaction、Event、Problem 不同,Business 更偏向于宏观上的指标,另外三者偏向于微观代码的执行情况。
这个报表我也没怎么用过,用的多的还是前面几个。
原文链接: https://www.yukx.com/monitor/article/details/2039.html 优科学习网Cat监控是什么?有哪些特点?
-
一、Kafka简介Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、sto
-
1.环境清单CentOS7 Java8 Maven3.5 MySQL5.7 CAT2.0.0 Tomcat7.02.安装CAT2.0下载CAT安装包:CAT的官方github地址:https://github.com/dianping/cat/tree/master打开页面之后,进行如下操作:2.1
-
一.安装并启动sendmailyum install -y sendmail systemctl start sendmail二.修改Grafana配置文件,设置发件人vim /etc/grafana/grafana.ini在[smtp]标签下修改配置[smtp] enabled = true ho
-
想用最简单的方式去理解Elasticsearch能为你做什么,那就是使用它了,让我们开始吧!安装并运行Elasticsearch安装Elasticsearch之前,你需要先安装一个较新的版本的Java,最好的选择是,你可以从www.java.com获得官方提供的最新版本的Java。之后,你可以从el
-
简介:Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为ElasticStack的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。版本说明Java环境:JDK1.8.0Elasticsearch:7.2.1OS环境:wi
-
Java9、Java10、Java12和Java13均为短期版本。我们建议您不要使用以上版本,除非您准备好应对这种快速发布节奏。有关JVM支持,请参见Oracle的时间表,网址为:http://www.oracle.com/technetwork/java/eol-135779.html**Elas