ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何零代码侵入接入CAT?Spring Boot、MyBatis、Dubbo、Logback集成清单

如何零代码侵入接入CAT?Spring Boot、MyBatis、Dubbo、Logback集成清单 如何零代码侵入接入CATSpring Boot、MyBatis、Dubbo、Logback集成清单【免费下载链接】catCAT 作为服务端项目基础组件提供了 Java, C/C, Node.js, Python, Go 等多语言客户端已经在美团点评的基础架构中间件框架MVC框架RPC框架数据库框架缓存框架等消息队列配置系统等深度集成为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。项目地址: https://gitcode.com/gh_mirrors/ca/catCAT美团点评开源的实时应用监控平台作为服务端基础组件早已在 MVC、RPC、数据库、缓存等中间件中深度集成。很多新手担心接入 CAT 客户端cat-client需要大改业务代码——其实完全不必。CAT 官方在 integration/ 目录提供了各主流框架的开箱即用集成方案只需注册一个 Filter、配置一个插件、引入一个依赖、添加一行 Appender就能让 URL、SQL、RPC 调用和异常全部进入监控真正做到零代码侵入接入 CAT。为什么推荐零代码侵入式集成在动手之前先理解 CAT 的监控模型。CAT 客户端支持 Transaction事务链路、Event事件、Heartbeat心跳、Metric指标四种消息模型业务代码中手动打点固然灵活但侵入性强、容易漏埋点。而Filter、插件、依赖级集成属于旁路式埋点✅ 不修改任何业务类升级回滚无风险✅ 全量覆盖不会遗漏某个接口或某条 SQL✅ 配置即生效接入成本从天级降到分钟级接入前只需确认 CAT 服务端已部署可用 docker/ 目录下的 docker-compose.yml 快速拉起并在项目中引入 cat-client 依赖、配置 cat-client.xml 指向服务端地址即可。集成清单4 种框架的接入方式一图速览集成点接入方式代码改动获得的监控能力Spring Boot注册 1 个 Filter新增 1 个配置类全量 URL 请求统计、logview 调用链MyBatis配置 1 个插件XML 加一段 beanSQL 耗时、成功率、语句文本Dubbo引入 1 个 Maven 依赖0RPC 调用 matrix、cross 报表Logback添加 1 个 AppenderXML 加 2 行配置ERROR 日志自动转为 CAT 错误事件 更多集成方案Spring AOP、SpringMVC、log4j、druid 等可参考 integration/README.md。Spring Boot 接入步骤注册一个 CatFilter 监控全部 URLSpring Boot 项目接入 CAT 最简单的方式是注册官方的CatFilter它会自动记录每个 HTTP 请求的耗时与状态并把后续调用链路串成完整的 logview。步骤 1引入配置类。官方提供了现成的 CatFilterConfigure.java将其复制到任意 Spring Boot 能扫描到的包下即可Configuration public class CatFilterConfigure { Bean public FilterRegistrationBean catFilter() { FilterRegistrationBean registration new FilterRegistrationBean(); CatFilter filter new CatFilter(); registration.setFilter(filter); registration.addUrlPatterns(/*); registration.setName(cat-filter); registration.setOrder(1); return registration; } }步骤 2启动应用验证。访问任意接口后在 CAT 首页的 Transaction 报表中即可看到URL类型数据点进 logview 还能看到整条请求链路。⚠️ 注意setOrder(1)让 cat-filter 排在 filter 链最前面保证尽可能监控到所有请求。详细方案说明见 integration/URL/README.md。MyBatis 插件配置方法一条 SQL 都不漏CAT 官方提供了 MyBatis 拦截器 CatMybatisPlugin.java它会拦截Executor的query和update方法为每条 SQL 创建 Transaction并记录 SQL 类型与语句文本含参数填充后的完整 SQL。接入方式在sqlSessionFactory的 bean 中把插件加入plugins数组即可参考 integration/mybatis/README.mdproperty nameplugins array bean classcom.dianping.cat.plugins.CatMybatisPlugin/ /array /property插件内部会区分 SQL 方法名与目标数据库连接支持 Druid、MyBatis 自带数据源执行异常也会自动通过Cat.logError上报。上线后CAT 的 SQL Transaction 报表就能看到每条 SQL 的耗时分布Dubbo 依赖级集成0 行代码监控 RPC 调用Dubbo 是四者中接入成本最低的——连代码都不用写。步骤 1引入监控插件依赖。在 pom.xml 中加入 integration/dubbo/readme.md 提供的cat-monitor依赖插件会通过注册表包装CatRegistryFactoryWrapper.java自动注入 Filter实现全自动埋点。步骤 2验证报表。添加依赖后CAT 中会自动出现cross 报表本系统与上下游服务的调用量、耗时统计matrix 报表服务提供者/消费者的调用矩阵logview1.0.8 版本以后Dubbo 调用会完整进入调用链路按需开关如临时需要关闭监控可调用 DubboCat 的静态方法DubboCat.disable()禁用、DubboCat.enable()开启。Logback Appender 配置让异常日志自动进 CATSpring Boot 默认日志框架就是 Logback把业务日志中的 ERROR 同步到 CAT 后任何异常都能在监控台被实时发现而不必去翻日志文件。只需在 logback.xml 中添加 2 行配置参考 integration/logback/README.mdappender nameCatAppender classcom.dianping.cat.logback.CatLogbackAppender/appender root levelinfo appender-ref refCatAppender / /root原理很简单官方的 CatLogbackAppender.java 会检查每条日志级别ERROR 及以上自动调用Cat.logError上报含异常栈开启 trace 模式后其他级别日志还会转为 trace 数据。效果如下接入后验证与常见问题如何确认接入成功启动应用后观察日志cat-client 会持续上报 Heartbeat 心跳CAT 首页出现你的应用名且 Transaction 报表有URL/SQL等类型数据打开 logview能看到完整的调用链路树常见问题速查现象可能原因首页看不到应用cat-client.xml的服务端地址配置错误或未引入 cat-client 依赖URL 报表缺失Filter 未生效检查Configuration是否在扫描路径内SQL 数据未出现插件未注册到正确的sqlSessionFactory或使用了未覆盖的数据源类型ERROR 日志没上报logback 实际生效的不是修改的那份配置文件如logback-spring.xml⚠️ 补充建议CAT 官方不太推荐用 AOP 方式做业务埋点存在少量性能损耗更推荐直接用 API 打点如确需 AOP可参考 integration/spring-aop/README.md 中的CatAnnotation方案。写在最后按这份清单操作一个典型的 Spring Boot MyBatis Dubbo 后端服务接入 CAT 的总工作量不超过 15 分钟1 个 Filter 配置类 1 段 MyBatis 插件 XML 1 个 Maven 依赖 2 行 logback 配置。接入完成后URL 请求、SQL 执行、RPC 调用、异常日志四大核心维度的监控数据就会自动汇聚到 CAT 监控台配合实时告警cat-alarm/真正做到零代码侵入、全量可观测。【免费下载链接】catCAT 作为服务端项目基础组件提供了 Java, C/C, Node.js, Python, Go 等多语言客户端已经在美团点评的基础架构中间件框架MVC框架RPC框架数据库框架缓存框架等消息队列配置系统等深度集成为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。项目地址: https://gitcode.com/gh_mirrors/ca/cat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表