跳到主要内容
版本:3.10.x

API7 网关 AI Agent Skill:plugin zipkin

本页提供 plugin zipkin 场景的 API7 企业版操作指南。请保留下方命令、字段、配置项和 API 路径的原样,并根据实际网关环境替换示例值。

Overview

The zipkin plugin sends distributed traces to Zipkin-compatible collectors using the Zipkin v2 HTTP API. It supports B3 propagation headers for trace context across services. Compatible backends include Zipkin, Jaeger, and SkyWalking (via Zipkin receiver).

When to Use

  • Distributed tracing with Zipkin, Jaeger, or compatible collectors
  • B3 header propagation across microservices
  • Per-request sampling control via headers
  • Trace ID injection into access logs

Plugin Configuration Reference

FieldTypeRequiredDefaultDescription
endpointstringYesZipkin collector URL (e.g. http://zipkin:9411/api/v2/spans)
sample_rationumberYesSampling rate from 0.00001 to 1
service_namestringNo"APISIX"Service name in Zipkin UI
server_addrstringNo$server_addrIPv4 address for span reporting
span_versionintegerNo2Span format: 1 (legacy) or 2 (default)

B3 Propagation Headers

The plugin uses B3 propagation format:

Injected to upstream

HeaderDescription
x-b3-traceidTrace ID (16 or 32 hex chars)
x-b3-spanidSpan ID (16 hex chars)
x-b3-parentspanidParent span ID
x-b3-sampledSampling decision (1 or 0)

Extracted from client

HeaderDescription
b3Single-header format: {traceid}-{spanid}-{sampled}-{parentspanid}
x-b3-sampled1 = force sample, 0 = skip, d = debug
x-b3-flags1 = force debug sampling

Clients can override sampling per-request by setting x-b3-sampled: 1.

Step-by-Step: Enable Zipkin Tracing

1. Create a route with zipkin

Enable tracing for gateway group default:

a7 route create --gateway-group default -f - <<'EOF'
{
"id": "traced-api",
"uri": "/api/*",
"plugins": {
"zipkin": {
"endpoint": "http://zipkin:9411/api/v2/spans",
"sample_ratio": 1,
"service_name": "my-gateway",
"span_version": 2
}
},
"upstream": {
"type": "roundrobin",
"nodes": [{"host": "backend", "port": 8080, "weight": 1}]
}
}
EOF

2. Send a request

curl http://localhost:9080/api/hello

3. View traces in Zipkin UI

Open the Zipkin UI and search for service my-gateway.

Common Patterns

Send traces to Jaeger

Jaeger supports the Zipkin v2 API:

{
"plugins": {
"zipkin": {
"endpoint": "http://jaeger-collector:9411/api/v2/spans",
"sample_ratio": 1,
"service_name": "my-gateway"
}
}
}

Production sampling (10%)

{
"plugins": {
"zipkin": {
"endpoint": "http://zipkin:9411/api/v2/spans",
"sample_ratio": 0.1,
"service_name": "production-gateway"
}
}
}

Enable globally via Global Rule

a7 global_rule create --gateway-group prod -f - <<'EOF'
{
"id": "zipkin-global",
"plugins": {
"zipkin": {
"endpoint": "http://zipkin:9411/api/v2/spans",
"sample_ratio": 0.5,
"service_name": "prod-gateway"
}
}
}
EOF

Troubleshooting

SymptomCauseFix
No traces in Zipkin UIWrong endpoint URLVerify collector is reachable; must include /api/v2/spans
Traces not connectedB3 headers strippedEnsure intermediate proxies forward x-b3-* headers
All requests sampledsample_ratio: 1Lower for production (e.g. 0.01-0.1)
400 from collectorSpan version mismatchTry span_version: 1 if collector only supports v1
Config not appliedWrong gateway group specifiedEnsure --gateway-group matches the desired cluster

Config Sync Example

version: "1"
gateway_group: default
routes:
- id: traced-api
uri: /api/*
plugins:
zipkin:
endpoint: http://zipkin:9411/api/v2/spans
sample_ratio: 1
service_name: my-gateway
span_version: 2
upstream:
type: roundrobin
nodes:
- host: backend
port: 8080
weight: 1

This page is generated from a7-plugin-zipkin/SKILL.md in the api7/a7 repository. Browse all skills on the AI Agent Skills page.