相关动态
CAT链路追踪从入门到实战(看这一篇就够了)
2025-01-01 08:48

1、CAT介绍

1、为什么要学习

从单体架构到微服务架构的演变, 一个业务请求往往会流转多个服务, 大型互联网产品服务架构尤为复杂,腾讯的抢红包服务, 阿里的交易支付服务, 可能就流转成百上千个服务节点, 面对众多服务, 如何监控管理?服务请求一旦出现问题, 如何快速定位问题?如何保障服务的高可用, 做到全面的监控与预警?如何分析统计服务的运行状况?看下链路监控产品如何解决这些问题。

2、什么是CAT?

  • CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。

  • CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。

  • CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是48分钟40秒,基本上看到48分钟38秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。

优势

  • 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中。

  • 全量数据:全量采集指标数据,便于深度分析故障案例。

  • 高可用:故障的还原与问题定位,需要高可用监控来支撑。

  • 故障容忍:故障不影响业务正常运转、对业务透明。

  • 高吞吐:海量监控数据的收集,需要高吞吐能力做保证。

  • 可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统。

  • 报表丰富:帮助管理人员从各个角度了解系统的整体状况。

2、CAT报表

  • 报错统计报表

  • 业务统计报表

  • LOGVIEW统计

  • 可视化LOGVIEW

  • 应用类型报表

报表名称报表用途Transaction实时报表一段代码的运行时间/次数/分布、比如URL/Cache/SQL执行次数和响应时间Event实时报表事件产生的次数/分布,比如出现一个异常Problem实时报表根据Transaction/Event数据分析出来的系统出现的异常,包括访问较慢的程序等Heartbeat实时报表JVM内部一些状态信息,Load/Memory/GC/Thread等Metric实时报表业务指标采集监控报表Matrix实时报表一个请求调用分布统计(一次请求中调用多少次SQL/RPC/Cache等),可评估应用设计的合理性......

3、Google Dapper论文

4、Dapper Deployment

5、链路监控工作机制

7、CAT架构设计

整体设计 简单即是最好原则设计, 主要分为三个模块cat-client,cat-consumer,cat-home。

  • cat-client 提供给业务以及中间层埋点的底层sdk。

  • cat-consumer 用于实时分析从客户端的提供的数据。

  • cat-home 作为提供给用户的展示的控制端。

客户端设计

客户端设计是CAT系统设计中最为核心的一个环节,客户端要求是做到API简单、高可靠性能、无论在任何场景下客户端都不能影响各业务服务的性能(监控只是公司核心业务流程一个旁路环节)。

服务端设计 服务端单机cat-consumer的整体架构

当某个报表处理器处理来不及时候,比如Transaction报表处理比较慢,可以通过配置支持开启多个Transaction处理线程,并发消费消息。

8、安装与使用(单机版

1、环境准备

  1. JDK1.8+

  2. Tomcat8+

  3. MySQL5.7+

2、CAT启动配置

PS:不建议在Windows下部署, 设计上对window支持不好, 容易出各种问题。

  1. 下载CAT源码, 如GIT方式过慢, 可用Download Zip 方式打包下载

  2. 构建CAT服务war包 可以导入IDEA工程进行编译, 或者直接用MAVEN进行编译,这里编译的目录是: 将MAVEN加入到系统PATH, 执行mvn命令

     
  3. 创建数据库

    先创建CAT数据库, 采用utf8mb4字符集, 再导入{CAT_SRC}/script/目录下的CatApplication.sql脚本。

  4. 创建目录,因为cat需要/data的全部权限,运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限

     
  5. 将打包好的war包传入tomcat的webapp下

  6. 创建客户端的配置/data/appdatas/cat/client.xml (客户端使用)

     
  7. 创建服务端的配置/data/appdatas/cat/datasources.xml (服务端使用)

     
  8. Tomcat配置,修改tomcat conf 目录下 server.xml, 检查好端口没有被其他程序占用。

     

    如需内存不足,需作调整

     
  9. 启动

    进入tomcat bin目录下

     
  10. 访问cat客户端

    • 打开控制台地址: http://ip:8080/cat/s/config?op=routerConfigUpdate

    • 默认用户名:admin 默认密码:admin

    • 正常可以看到后台

9、CAT集群版

具体可参考官方文档: CAT集群部署

10、微服务整合CAT案例

1、服务设计

设计四个服务:网关服务、订单服务、账户服务和库存服务, 三层调用关系监控

2、工程结构

  • cat-demo: 父级工程

  • cat-demo-account: 账户服务工程

  • cat-demo-gateway: 网关服务工程

  • cat-demo-order: 订单服务工程

  • cat-demo-stock: 库存服务工程

3、创建父工程

命名为

  • pom依赖

     

4、创建cat-gateway: 网关服务工程

父级为,命名为

  • 启动类

     
  • yml配置文件

     
  • 工具类

    • : 存放调用链上下文信息,这里需要注意的是cat的依赖包为3.0的,新版本4的没有一些接口

       
    • :过滤器,过滤访问的一些路径

       
    • :过滤器配置类

       
    • :Cat拦截器 记录 TID、PID、SID

       
    • :cat常量

       
    • resources资源目录, 路径meta-INF下, 必须创建app.properties, 内部只要配置app.name属性。

       

5、创建cat-account: 网关服务工程

父级为,命名为

  • 启动类

     

    其他均跟网关服务类似,不同点

    • 端口号为:8082

    • 少了:Cat拦截器 记录 TID、PID、SID

6、创建cat-order: 网关服务工程

父级为,命名为

  • 启动类

     

    其他均跟网关服务类似,不同点

    • 端口号为:8083

7、创建cat-stock: 网关服务工程

父级为,命名为

  • 启动类

     

    其他均跟网关服务类似,不同点

    • 端口号为:8084

    • 少了:Cat拦截器 记录 TID、PID、SID

8、启动验证

  1. Nacos控制台

    四个服务正常启动注册。注意:这里打包时候Nacos指向地址为宿主机的HOST地址

  2. 访问Gateway服务, 本示例是部署在Linux机器上, 地址: http://ip:8081/gateway

    所有服务均正常返回结果

 
  1. CAT控制台

CAT的LOGVIEW按层级完整的记录了四个服务的请求信息, 1至4分别对应Gateway、Order、Account和Stock服务。

LOGVIEW主要包含请求时间, 服务地址, 请求客户端等主要信息, 也支持图形方式呈现

CAT 还有很多指标统计与报表展示, 能有效帮助我们监控管理整体微服务调用链路状态,更多大家可自行去研究哦。

    以上就是本篇文章【CAT链路追踪从入门到实战(看这一篇就够了)】的全部内容了,欢迎阅览 ! 文章地址:http://sjzytwl.xhstdz.com/quote/86490.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://sjzytwl.xhstdz.com/mobile/ , 查看更多   
发表评论
0评