apm中间件切入点

Posted go大鸡腿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apm中间件切入点相关的知识,希望对你有一定的参考价值。

前言

apm的要点,其实就是你需要在所有流程里头,把traceid塞进去,能拿到,这样的话不管你是打印日志来管理链路,还是上报日志,都行。

怎么切入各个中间件呢

第一步traceid什么时候塞入系统中

  1. 第一种放在网关去给塞,依靠sleuth框架生成traceid
  2. 第二种前端在发起请求的时候,也把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中间件切入点的主要内容,如果未能解决你的问题,请参考以下文章

spring-aop

Ali流量控制中间件Sentinel

干货消息中间件—RocketMQ消息消费

尚硅谷消息中间件之ActiveMQ视频发布!

阿里中间件Sentinel 关于限流和降级

阿里巴巴宣布开源限流降级中间件——Sentinel