APM —全链路追踪

全链路追踪目的 

微服务背景下

1.故障快速定位

    跨语言实现开发中在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息。

2.各个调用环节的性能分析

   分析调用链的各个环节耗时,分析系统的性能瓶颈,找到系统的薄弱环节针对性优化

3.数据分析

   分析用户的行为路径,经过了哪些服务器上的哪个服务加以应用。

4.调用拓扑图

Trace系统设计目标

低侵入、低损耗、大范围部署

基本实现

埋点日志内容,通过记录traceId、RPCId、调用的开始时间,调用类型,协议类型,调用方ip和端口,请求的服务名等信息;调用耗时,调用结果,异常信息,消息报文等;

典型应用

非开源:Google的Dapper,淘宝的鹰眼,新浪的Watchman,京东的Hydra

开源:zipkin, pinpoint , skywalking 

应用及分析

1.鼻祖:Google Dapper

谷歌tracing论文,关键字:低损耗、应用透明的、大范围部署需求;大规模集群的跟踪监控系统;跨应用跨服务器;ops-dev;

应用级透明:把核心跟踪代码做的很轻巧,然后把它植入到那些无所不在的公共组件种,比如线程调用、控制流以及RPC库

实现:为服务器上每一次你发送和接收动作来收集跟踪标识符(message identifiers)和时间戳(timestamped events),通过把代码植入限制在一个很小的通用组件库,实现监测系统的应用对开发人员的透明。

Dapper的跟踪模型:

跟踪树和span

ABCDE 5个span 组成了userRequest的跟踪树。Dapper会记录span名称,以及每个span的ID和父ID,以重建在一次追踪过程中不同span之间的关系。如果一个span没有父ID被称为root span。所有span都挂在一个特定的跟踪上,也共用一个跟踪id。所有这些ID用全局唯一的64位整数标示。

一个单独的span的细节图:

注意时间戳的正确性处理:由于客户端和服务器上的时间戳来自不同的主机,我们必须考虑到时间偏差。在我们的分析工具,我们利用了这个事实:RPC客户端发送一个请求之后,服务器端才能接收到,对于响应也是一样的(服务器先响应,然后客户端才能接收到这个响应)。这样一来,服务器端的RPC就有一个时间戳的一个上限和下限。

注:为保护Dapper的用户意外的过分热衷于日志的记录,每一个跟踪span有一个可配置的总标注量的上限。

Dapper日志收集管道

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring Cloud Alibaba中,可以使用SkyWalking进行链追踪。SkyWalking是一个开源的APM(应用程序性能管理)系统,支持多语言和多框架,包括Java、.NET Core、Node.js等。下面简单介绍如何使用SkyWalking进行链追踪: 1. 添加依赖 在Spring Boot项目中,需要添加以下依赖: ```xml <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>${skywalking.version}</version> </dependency> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>${skywalking.version}</version> <scope>runtime</scope> </dependency> ``` 其中${skywalking.version}可以根据需要自行指定。 2. 配置SkyWalking 在Spring Boot项目中,可以通过application.properties或application.yml配置文件进行配置。以下是一个示例: ```yml # SkyWalking配置 skywalking: # SkyWalking OAP地址 address: 127.0.0.1:11800 # 应用名称 application-name: my-application ``` 其中,address指定了SkyWalking OAP的地址,application-name指定了应用的名称。 3. 启用SkyWalking 在Spring Boot项目中,可以通过注解@EnableSkyWalking来启用SkyWalking。例如: ```java @SpringBootApplication @EnableSkyWalking public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 4. 查看链追踪数据 启动应用后,可以在SkyWalking控制台中查看链追踪数据。打开浏览器并输入http://localhost:8080进入SkyWalking控制台,查看应用的链追踪数据。 以上是使用SkyWalking进行链追踪的基本步骤,具体使用过程中可以根据需要进行配置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值