作者回复: 你好,课程中为了演示目的,我主要是手工埋点的,实际生产中一般由独立框架团队集中对框架组件(服务框架,消息,缓存,数据访层等)进行集中埋点,业务团队只要用这些框架组件就可以了,一般不用自己埋点,接入成本不高,一旦接入形成规模后价值很大,你可以这样和大家宣讲推广。另外,你的意见已经反馈极客时间,谢谢!
作者回复: 你好,简单做法,feign支持RequestInterceptor,可以截获request,支持将CAT context上下文向后端传递;另外feign可以启用OkHttpClient,它支持Interceptor,可以同时截获request/response,可以用CAT transaction埋点并向后传递context上下文。如果需要更细致埋点,可以参考spring cloud sleuth的源码,它支持zipkin可以参考,它用到aop等高级技术进行埋点。spring feign可以参考:https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html
作者回复: 你好,CAT源码里头有个log4j CatAppender,启用后自动把error日志记录在CAT里头,你可以直接用https://github.com/dianping/cat/blob/master/cat-client/src/main/java/com/dianping/cat/log4j/CatAppender.java
作者回复: 希望对你有帮助,加油💪
作者回复: 对,你看得很仔细。Interceptor如果new了一个,就不需要@Component注解了,这个注解应该可以去掉。
作者回复: CAT的日志主要是和调用链相关的,一般不建议把所有日志都记录在CAT调用链上,而是有选择性的记录一些,比如异常,或者和调用链有紧密关系的业务上下文日志等。其它日志建议采用ELK,ELK是日志采集和存储标配,它存储容量大,搜索能力强。CAT也不能存大量日志(否则影响性能),也不支持按需搜索。
作者回复: CAT主要目标是调用链监控,在调用链上也可以适当添加一些上下文日志(也称标注annotation),或者调用异常日志,但日志存储和查询不是CAT强项。常规日志则需要专门的监控系统,业界常用是ElasticSearch/Logstash/Kibana(简称ELK),这类系统专门为大规模日志存储和查询而设计。实践中,CAT和ELK经常配合使用。
作者回复: CAT里头的logMetric是只给业务大盘用的,统计展示一些较重要业务指标(如登录,下单等)。其它dashboard上展示的matrix等报表是通过分析调用链计算出来的。