CAT分布式监控系统(一):CAT监控系统功能介绍

       本文概要:

             1、CAT监控系统是什么。

              2、CAT监控系统能做什么,能监控些什么。

       下面有些截图是CAT 2.0版本的,但和3.0版本没什么区别的。

一、 简介

CAT(Central Application Tracking)是美团开源的基于Java开发的实时分布式应用监控平台,提供了全面的监控服务和业务决策支持。

CAT监控系统的定位:

cat本质上一个实时监控系统,主要体现在监控报表Transaction、event、problem、heartbeat等,cat系统定制的监控模型以及定制的实时分析报表也是cat系统核心优势。

logview是cat原始的log采集方式,cat的logview使用的技术是threadlocal,将一个thread里面的打点聚合上报,有一点弱化版本的链路功能,但是cat并不是一个标准的全链路系统,全链路系统参考dapper的论文,业内比较知名的鹰眼,zipkin等,其实经常拿cat和这类系统进行比较其实是不合适的。cat的logview在异步线程等等一些场景下,其实不合适,cat本身模型并不适合这个。在美团点评内部,有mtrace专门做全链路分析。

也就是说:CAT定义了一个基本的监控模型,可以用来实时监控,至于要监控些什么可以自己定义,比如要做分布式全链路跟踪监控,可以自己埋点获取监控信息;

怎么埋点也是有参考方案的,下篇博文将会介绍本人重新封装的客户端埋点SDK。

另外,CAT倾向于指标、链路事件监控,不太适用于大量业务日志的场景,因为无法搜索、分析,CAT只看看到最新的样本数据和出问题的数据。大量业务日志的场景应该用ELK。

         github:https://github.com/dianping/cat

         官方DOME:http://unidal.org/cat/r/t?ip=All&queryname=&domain=cat

二、系统/应用状态监控

接入CAT客户端后,CAT客户端每分钟发送一次自身的状态信息。

状态信息包括:服务器系统信息、JVM 内存/GC信息、线程信息、CAT监控使用信息等。详情如下图:

状态信息的原始数据可以查看“Transaction“中的System类型信息,如下图:

“Heartbeat”实时报表用来展示状态信息,可以看到当前项目下所有的部署机器(支付中心只有一台服务器),如下图:

配置说明:这个功能无需其他配置,接入就自动上传状态监控信息。

三、程序代码运行情况监控

监控一段代码运行情况:运行时间统计、次数、错误次数等等。如下图:

上面图一展示的是请求过程中监控的不同代码段类型的执行情况,不同类型表示范围不一样;图二展示方法类型里各方法的执行情况。一次请求过程原始监控数据如下(注意类型和上面图一对应):

下面对图中报表进行解释:

                a)Type统计界面

                b)Name统计界面

                c)一个小时内详细指标统计

1. Duration Distribution表示transaction的执行时间分布,这个图可以看出,大部分shopcheckin是在16-64毫秒完成,还有很少部分在512-1024毫秒完成。

2. HitOverTime、Averager Duration Over Time,Failures Over Time 纵轴都是以5分钟为单位,HitOverTime表示5分钟内的访问次数。

3. Averager Duration Over Time表示5分钟内的平均处理时间。

4. Failures Over Time表示5分钟内的Transaction失败次数。

配置说明:代码监控需要相关埋点配置,如方法监控可用包路径、或用@CatMethodMonitori注解配置,更多配置详情请参考《项目接入说明》。

四、全链路监控分析

上面我们也看到了一次请求过程的原始监控信息,包括URL、METHOD的耗时、参数、返回值等,如下:

其中经历了一次跨服务调用service-ribbon à service-hi(注意:跨服务是图中第二个红框到第三个红框,而第一个红框到第二个红框是穿透Hystrix熔断器异步线程的),耗时图形分析如下:

“Cross”报表展示了跨服务调用的情况,如下图:

相关配置:默认开启,暂时支持该功能的通信组件:Spring Cloud Ribbon、Spring Cloud Feign(不兼容Sleuth)、Dubbo RPC,更多详情请参考《项目接入说明》。

五、异常/错误等问题监控

Problem记录整个项目在运行过程中出现的问题,包括一些错误、访问较长的行为。Problem的类型如下:

1、“Problem”实时报表介绍

All的错误界面

错误一个小时内的实时趋势图

点击机器IP,进入某一台机器出现的具体问题,这个包括了All中出现的所有错误统计之外,还增加了以分钟和线程为单位的错误分布图,具体如下:

2、“Problem”历史报表介绍

1)在选择了特定的域、报表类型、时间和IP之后,点击[:: show ::] 查看某一Type下的Problem出现次数的分布图。(当前这一天、上一天、上周这一天)

2)进一步,可以查看该Type下,某个Status的Problem出现次数的分布图。(当前这一天、上一天、上周这一天)

相关配置:URL、方法监控会自动记录异常名称,如果需要集成日志框架(log4j、logback)打印上传错误信息,请参考《项目接入说明》。

SQL执行监控

SQL执行监控可以看到每个DAO方法执行解析的SQL语句、SQL语句执行时长、以及连接到哪个数据库(URL)执行;如果SQL执行出现异常,还会记录异常信息;另外还可以过滤出慢SQL。

SQL监控执行整体情况如下:

各DAO方法监控如下:

测试一个方法里执行CURD的“Log View”信息如下:

SQL类型(insert/select/update/delete)执行情况的统计如下:

每个数据库执行情况的统计如下:

另外,还可以在“Problem”标签页面过滤出慢SQL,如下图:

相关配置:支持Mybatis的SQL监控,需要配置Mybatis监控插件,请参考《项目接入说明》。

七、自定义监控/业务监控

上面介绍这些功能主要是gc-cat-client SDK中实现的,稍微配置一下就可以使用。

除此外,还有可以自定义监控以实现业务监控,CAT客户端本身提供了几种监控类型的API, CAT支持的监控消息类型包括:

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

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

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

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

Metric一共有三个API,分别用来记录次数、平均、总和,统一粒度为一分钟:

a).logMetricForCount:用于记录一个指标值出现的次数。

b).logMetricForDuration:用于记录一个指标出现的平均值。

c).logMetricForSum:用于记录一个指标出现的总和。

看到这些类型名称,可知我们前面介绍的这些功能也是基于这几种监控消息类型的API实现的。

一份埋点的样例:

Transaction:用来记录一段程序响应时间;Even:用来记录一行code的执行次数;Metric:用来记录一个业务指标。这些指标都是独立的,可以单独使用,主要看业务场景。

下面的埋点代码里面表示需要记录一个页面的响应时间,并且记录一个代码执行次数,以及记录两个业务指标,所有用了一个Transaction,一个Event,两个Metric。Transaction的埋点一定要complete,切记放在finally里面。

代码中自定义好业务指标监控后,然后运行测试上传一些监控数据,接着到“业务监控配置”页面(http://192.168.1.52:8888/cat/s/config? op=list)配置大盘显示和告警,然后就可以在“Business”而页面看到相关图表,如下:

八、告警设置

上面业务监控我们也说到业务指标也可以设置告警的,除此外,Transaction/Event/异常/心跳都可以设置告警,如下图所示:

URL(/hi)执行次数告警测试:

九、其他报表统计

还有一些全局的报表统计,访问地址(比较隐蔽):http://192.168.1.52:8888/cat/r/overload

如“全局统计异常”报表,看到各个项目的异常情况:

“服务可用排行”报表,看到各服务可用情况:

“线上容量规划”报表,看到各项目一些资源使用情况:

十、总结

以上总结了本人发现的且认为比较有用的CAT监控功能,基本能满足大部分监控需求,更多功能有待大家挖掘。

另外,下篇博文将会介绍本人重新封装的CAT客户端埋点SDK,欢迎提出建议。

【参考资料】

1、 CAT相关文档

2、 GitHub - dianping/cat: Central Application Tracking

3、 深度剖析开源分布式监控CAT

4、 大众点评网监控平台剖析

5、 透过CAT,来看分布式实时监控系统的设计与实现

6、 Dapper,大规模分布式系统的跟踪系统 by bigbully

CAT分布式监控系统(一):CAT功能介绍 CAT监控系统是什么、能做什么?相关推荐

  1. fx系列微型可编程控制器 通信_AB罗克韦尔自动化Micro870可编程逻辑控制器系统型号及功能介绍...

    产品介绍 我们的 Bulletin 2080 Micro870® 可编程逻辑控制器适用于需要灵活通信和更强 I/O 功能的大型单机设备控制应用.这些控制器支持最多 304 个 I/O 点,同时提供高性 ...

  2. unity 多台 显示器 控制_AB罗克韦尔自动化Micro820可编程逻辑控制器系统型号及功能介绍...

    产品介绍 我们的 Micro820® 可编程逻辑控制器系统体积极小,专用于需要灵活通信和 I/O 功能的小型独立设备控制和远程自动化应用.这些控制器支持最多 36 个 I/O 点,具有以太网等众多嵌入 ...

  3. cat全链路监控_CAT分布式监控系统(一):CAT功能介绍 CAT监控系统是什么、能做什么?...

    CAT分布式监控系统(一):CAT监控系统功能介绍 本文概要: 1.CAT监控系统是什么. 2.CAT监控系统能做什么,能监控些什么. 下面有些截图是CAT 2.0版本的,但和3.0版本没什么区别的. ...

  4. wincc历史数据库_WinCC系统的基本功能介绍——自动化工程师必备

    写在面前 前面讲解了西门子的TIA Portal Wincc, Wincc Classic和Wincc OA (一文带你了解西门子Wincc),介绍了西门子的超大型/分布式SCADA系统Wincc O ...

  5. 鸿蒙系统功能,华为HarmonyOS2.0系统功能都有哪些呢-华为鸿蒙系统HarmonyOS2.0功能介绍[图文]_咖绿茵手游站...

    昨天晚上华为开了一个发布会,上面重点展示了自己鸿蒙系统的功能,让用户们去了解都有那些实用功能.那么华为HarmonyOS2.0系统功能都有哪些呢?下面小编给大家详细介绍下,还不清楚的小伙伴们快来看看吧 ...

  6. linux系统创建硬盘分区,介绍Linux硬盘系统创建分区步骤

    本人很喜欢Linux硬盘系统,在工做中也很喜欢总结关于Linux的经验教训.Linux硬盘系统的知识里面介绍了些通常经常使用的挂载点,用户们学会就彻底能够操做Linux系统. Linux硬盘系统下,硬 ...

  7. 小米手机系统服务组件是干什么的_怎么查看小米手机MIUI系统的基本功能-小米手机MIUI系统基础功能查询方法讲解...

    小米手机是国产品牌手机中口碑较好的手机之一,受到大家的喜爱,配置功能丰富,价格实惠.亲们或许都不知道怎么查看小米手机MIUI系统的基本功能,小编很高兴为大家解决这个问题,接下来就为大家奉上小米手机MI ...

  8. 生鲜配送系统源码功能介绍

    支持微信公众号,微信小程序,APP,智能电子秤 一.生鲜专业食材配送系统的功能 新鲜的专业食品分配系统通常包括诸如智能定价,订单管理,采购管理,智能分类,智能分配和数据控制等功能.它可以传递新的电子商 ...

  9. CRMEB在线教育知识付费系统应用领域及功能介绍

    CRMEB知识付费系统安装教程 CRMEB知识付费系统安装教程[第一集宝塔安装配置] 完整源码下载.详细安装视屏.演示站评论区有 清风流流雨霏霏,桃花赧颜遮纱帏. 千林万树更新绿,村妇篮中荠菜肥. 暮 ...

  10. “OKS”程控交换机的系统说明及功能介绍--广州雷迪威电子科技有限

    广州雷迪威电子科技有限公司是专业从事研制.开发.生产集团电话.程控交换机.安防监控等设备的专业厂家. 生产"雷迪威"与"OKS"两个品牌交换机. 公司承诺:三年 ...

最新文章

  1. boost::asio与ACE的对比
  2. 【Python-ML】聚类的性能评价指标
  3. [YTU]_2475( C++习题 多重继承)
  4. html5.js让IE(包括IE6)支持HTML5元素方法
  5. Django视图简介
  6. 2019-03-5-算法-进化(最长公共前缀)
  7. 反射、HashMap、ArrayList与LinkedList区别
  8. 如何构建AI驱动型智能服务?
  9. 从MAC缓存表中我们看到的问题
  10. Android 自定义UI--指南针
  11. K8S认证、授权与准入控制(RBAC)详解
  12. Filter过滤器处理JSP中文乱码
  13. python中pop用法_python中pop()函数的用法
  14. 程序员面试题100题第14题-圆圈中最后剩下的数字
  15. Matlab图例legend换行
  16. 前鹅厂面试官亲手整理出的高频必问软件测试基础面试题(1)!!!
  17. 安装molten教程
  18. 【flutter】上架马甲包过审
  19. 私货——OIer 必备网站集
  20. USB组合设备——带鼠标功能的键盘

热门文章

  1. 计算机网络吞吐量计算
  2. APP支付宝登录第三方授权如何签约入口在哪里
  3. ASP.NET 中点击按钮时邮件自动发送功能实例
  4. 常见信息安全威胁与经典案例
  5. STM32 Simulink 自动代码生成电机控制——脉振高频注入
  6. 【LaTeX】LaTeX常见括号总结
  7. 苹果logo_“林芝苹果”LOGO图形标识公开评选
  8. 计算机网络基础知识之应用层篇
  9. 芭蕉树上第十八根芭蕉-- Qt图片绘图类QPixmap/QImage/QPicture
  10. 新战投入场,苏宁易购迎来破局发展新开端