Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

链路监控追踪的原理是什么?

Elastic APM , SkywalkingAPM工具的监控追踪的原理是什么?如下图:

是如何拿到比如 http , rpc , redis ,mysql , amqp 等链路的具体执行时间的?网上找到一些说法,但是具体觉得描述的太简单了。如下:

发起方生成一个全局的traceId,整个链中都采用同一个traceId

每次请求都会产生独立的spanId,每个spanId记录每次请求时间、请求内容和响应时间等。 PS:这里
订单调用会员产生一个spanId,会员调用消息会产生另外一个spanId

通讯时,会在请求头中传递该traceId和spanId。

大概明白这个就是整体的思路,但是如果要自己实现的话,感觉离具体还差的很远?比如自己要写一个链路监控又要怎么做呢?

比如监控 Node.js 应用 , 我看 Elastic APM 监控 http 请求,也是分库的 ,支持基于 http/https 写的库,所以 request 等是支持, 对于 axios 好像就不支持,而 ws 协议,官方文档也给的是 websocket 库,对 socket.io 库也没有,不同的库会有什么影响吗?

是因为这些库的实现方式不一样,然后 Elastic APM 去监控拿 请求时间、请求内容和响应时间 等也对应写代码去支持吗?

Enregistrer un commentaire

0 Commentaires