apm中间件切入点
Posted go大鸡腿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apm中间件切入点相关的知识,希望对你有一定的参考价值。
文章目录
前言
apm的要点,其实就是你需要在所有流程里头,把traceid塞进去,能拿到,这样的话不管你是打印日志来管理链路,还是上报日志,都行。
怎么切入各个中间件呢
第一步traceid什么时候塞入系统中
- 第一种放在网关去给塞,依靠sleuth框架生成traceid
- 第二种前端在发起请求的时候,也把traceid带进来。因为前端本身就有完整的会话
RPC
原理差不多,就是调用方会在header头带上traceid过去,然后被调用方拦截器拿到header头塞到本地缓存里头。
例如:
dubbo
基于dubbo spi机制,分别扩充product、consume端的header,以及拿到header塞回去
http
也是一样,只不过他会多出拦截器,拦截请求之后塞回去。
多线程、线程池情况下
TransmittableThreadLocal这个自行查我之前写的博客哦~
datasource
可以参照mybatis-plus插件怎么写的,在PreparedStatement 将traceid打印出来
MQ
rocketmq
rabbitmq
还有另外一种方式,就是在BeanPostProccessor,拿到我们注入消费者跟生产者,然后往这个类里头set对应的拦截器。
redis埋点
这个属实没有想到
你调用redis,总有地方需要open这个连接对吧,然后你在那里打印traceid即可。
但是!每个开发者用的redis链接有不一样,所以需要重写
agent作用
为了收集信息,然后上报
比如说路过的方法名,请求时间等等。
参考文章
以上是关于apm中间件切入点的主要内容,如果未能解决你的问题,请参考以下文章