a6-plugin-zipkin
概览
zipkin 插件会将分布式追踪数据发送到兼容 Zipkin 的采集器
使用 Zipkin v2 HTTP API。它支持通过 B3 传播请求头跨服务传递链路上下文。兼容的后端包括 Zipkin、Jaeger 和 SkyWalking(通过 Zipkin 接收器)。
适用场景
- 使用 Zipkin、Jaeger 或兼容的采集器进行分布式追踪。
- 通过 B3 请求头在微服务之间传播追踪信息。
- 通过请求头控制单个请求的采样。
- 将 Trace ID 注入访问日志。
插件配置参考
| 字段 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
endpoint | string | 是 | — | Zipkin 采集器 URL(例如 http://zipkin:9411/api/v2/spans) |
sample_ratio | number | 是 | — | 采样率,范围为 0.00001 至 1 |
service_name | string | 否 | "APISIX" | Zipkin UI 中显示的服务名称 |
server_addr | string | 否 | $server_addr | 用于上报 span 的 IPv4 地址 |
span_version | integer | 否 | 2 | Span 格式:1(旧版)或 2(默认) |
B3 传播请求头
该插件使用 B3 传播格式:
注入到上游
| 请求头 | 说明 |
|---|---|
x-b3-traceid | Trace ID(16 或 32 个十六进制字符) |
x-b3-spanid | Span ID(16 个十六进制字符) |
x-b3-parentspanid | 父 span ID |
x-b3-sampled | 采样决策(1 或 0) |
从客户端提取
| 请求头 | 说明 |
|---|---|
b3 | 单请求头格式:{traceid}-{spanid}-{sampled}-{parentspanid} |
x-b3-sampled | 1 = 强制采样,0 = 跳过,d = 调试 |
x-b3-flags | 1 = 强制调试采样 |
客户端可以通过设置 x-b3-sampled: 1 覆盖单个请求的采样设置。
Span 版本
版本 2(默认,推荐):
request
├── proxy (request start → header_filter)
└── response (header_filter → log)
版本 1(旧版):
request
├── rewrite
├── access
└── proxy
└── body_filter