ALB支持链路追踪功能。开启该功能后,ALB会在转发请求时自动注入追踪头部,帮助用户获得完整的请求追踪数据,包括请求来源、经过的节点、响应时间等信息,从而快速定位和解决分布式架构下的性能瓶颈。
背景信息
链路追踪为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑以及应用依赖分析等工具,可以帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈。
一条链路数据对应一条调用链(Trace)。在广义上,一个调用链代表一个事务或者流程在分布式系统中的执行过程,由多个Span组成的一个有向无环图(DAG),每个Span代表调用链中被命名并计时的连续性执行片段。
开启ALB链路追踪功能后,ALB会在转发请求时自动注入或更新HTTP追踪头部,追踪数据上报至阿里云可观测链路 OpenTelemetry 版。支持OpenTelemetry和Zipkin两种链路追踪方式。
链路追踪方式
OpenTelemetry
当ALB开启链路追踪功能且选择OpenTelemetry类型时,ALB会在将请求转发到后端服务器之前,添加或更新HTTP头部中的traceparent字段。traceparent字段的格式为:{version}-{traceid}-{parentid}-{traceflags}。各部分含义如下表所示。
字段 | 含义 | 格式 |
| 使用的OpenTelemetry版本 | 始终为 |
| 标识本次追踪的ID | 32位十六进制数字 |
| 标识追踪链路上本节点的ID | 16位十六进制数字 |
| 标识对本次请求是否进行采样 |
|
场景一:请求不携带traceparent
当客户端发送的请求头部不携带traceparent字段时,ALB会生成完整的traceparent字段并插入HTTP头部。
场景二:请求已携带traceparent
当上游服务已在请求头中携带traceparent字段时,ALB会继承version、traceid和traceflags,仅生成新的parentid。
字段值的变化对照:
部分 | 上游请求值 | ALB转发值 | 处理方式 |
|
|
| 继承 |
|
|
| 继承 |
|
|
| 新生成 |
|
|
| 继承 |
Zipkin
当ALB开启链路追踪功能且选择Zipkin类型时,ALB会在将请求转发到后端服务器之前,添加或更新HTTP头部中的X-B3-*字段。各字段含义如下表所示。
字段名 | 含义 | 格式 |
| 标识本次追踪的ID | 16位十六进制数字 |
| 标识追踪链路上本节点的ID | 16位十六进制数字 |
| 标识追踪链路上前一个节点的ID | 16位十六进制数字 |
| 标识对本次请求是否进行采样 |
|
场景一:请求不携带追踪头部
当客户端发送的请求头部不携带X-B3-*字段时,ALB会作为追踪链路的起始节点,生成X-B3-TraceId、X-B3-SpanId和X-B3-Sampled三个字段并插入HTTP头部。由于链路上没有上游节点,转发请求中不包含X-B3-ParentSpanId字段。
场景二:请求已携带追踪头部
当上游服务已在请求头中携带完整的X-B3-*字段时,ALB会继承X-B3-TraceId和X-B3-Sampled的值,生成新的X-B3-SpanId,并将上游请求中的X-B3-SpanId作为X-B3-ParentSpanId传递给后端服务器。
字段值的变化对照:
字段 | 上游请求值 | ALB转发值 | 处理方式 |
|
|
| 继承 |
|
|
| 新生成 |
|
|
| 取上游的SpanId |
|
|
| 继承 |
适用范围
步骤一:开启链路追踪
登录ALB控制台,选择实例所属的地域,找到目标实例并单击实例ID。
单击监听页签,找到目标监听,单击监听ID。
在监听详情页签的链路追踪区域,开启链路追踪开关。
在开启链路追踪对话框,完成以下配置,单击保存。
开通服务
开通可观测链路OpenTelemetry版:首次使用需勾选服务协议确认开通。
创建访问日志(若目标ALB实例未创建)
项目Project:日志服务中的资源管理单元,用于资源隔离和控制。
选择现有 Project:在下拉框中选择一个Project。
新建 Project:在文本框中输入新建Project名称。
日志库Logstore:日志服务中日志数据的采集、存储和查询单元。
选择现有 Logstore:在下拉框中选择一个Logstore。
新建 Logstore:在文本框中输入新建Logstore名称。Project选择新建时,Logstore也需选择新建。
配置链路追踪
链路追踪类型:支持选择OpenTelemetry(W3C)或Zipkin(B3)。
采样率:取值范围1~100,默认值为100。通过设置采样率来调整链路上报量。
服务关联角色创建须知:执行此操作时,系统将自动创建服务关联角色。
步骤二:查看链路数据
登录客户端终端,测试与后端服务器的连通性。可参考ALB快速实现IPv4服务的负载均衡。
登录ALB控制台,选择实例所属的地域,找到目标实例并单击实例ID。
单击监听页签,找到目标监听,单击监听ID。
在监听详情页签的链路追踪区域,单击调用链分析右侧的查看,前往可观测链路 OpenTelemetry版控制台查看链路数据。
页面顶部查询栏自动带入
attributes.app_lb_id和attributes.slb_vport筛选条件,左侧快捷筛选区支持按状态、耗时范围和应用名称进行过滤。
更多信息
关闭链路追踪
链路追踪依赖访问日志,关闭访问日志会导致链路追踪不可用,请谨慎关闭。关闭链路追踪后,访问日志仍保持开启,如无须使用请手动关闭。
实例下所有监听的链路追踪均关闭后,将停止向可观测链路 OpenTelemetry 版投递调用链数据。
计费说明
使用链路追踪功能,会默认开通阿里云可观测链路 OpenTelemetry 版服务和访问日志服务。开通使用后,会产生数据上报、链路存储以及日志服务等费用。
ALB链路追踪支持的地域
公有云支持的地域
|
区域 |
地域 |
|
中国 |
华东1(杭州)、华东2(上海)、华南1(深圳)、西南1(成都)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、中国香港、华南3(广州)、华南2(河源) |
|
亚太 |
新加坡、马来西亚(吉隆坡)、日本(东京)、印度尼西亚(雅加达) |
|
欧洲与美洲 |
英国(伦敦)、德国(法兰克福)、美国(弗吉尼亚)、美国(硅谷) |
金融云支持的地域
|
区域 |
地域 |
|
中国 |
华东2 金融云(上海) |