跳到主要内容

使用 Zipkin 追踪请求

追踪是可观测性的三大支柱之一,另外两个是指标和日志。追踪跟踪请求穿越系统各个部分的旅程。它是一种有效的机制,可以帮助开发人员和管理员监控系统性能、识别瓶颈并改善用户体验。

本指南将引导你完成如何使用 zipkin 插件追踪对 APISIX 的请求并将追踪发送到 Zipkin

前置条件

  • 安装 Docker
  • 安装 cURL 以向服务发送请求进行验证。
  • 按照 快速入门教程 在 Docker 或 Kubernetes 中启动一个新的 APISIX 实例。

启动 Zipkin 实例

启动一个 Zipkin 实例:

docker run -d --name zipkin -p 9411:9411 openzipkin/zipkin

配置 APISIX

全局启用 zipkin 并创建一个示例路由以生成追踪。或者,你可以在路由上启用该插件。

zipkin 配置为全局插件:

curl "http://127.0.0.1:9180/apisix/admin/global_rules/zipkin" -X PUT -d '
{
"plugins": {
"zipkin": {
// Annotate 1
"endpoint": "http://192.168.42.145:9411/api/v2/spans",
// Annotate 2
"sample_ratio": 1
}
}
}'

❶ 设置为 /spans Zipkin 端点。使用你的 IP 地址更新。

❷ 将采样率配置为 1 以追踪每个请求。

创建一个将追踪通过该路由的请求的示例路由:

curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '
{
"id": "zipkin-tracing-route",
"uri": "/anything",
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org": 1
}
}
}'

追踪请求

向路由发送请求:

curl "http://127.0.0.1:9080/anything"

你应该收到类似以下的 HTTP/1.1 200 OK 响应,并在标头中包含追踪信息:

{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Host": "127.0.0.1",
"User-Agent": "curl/7.64.1",
"X-Amzn-Trace-Id": "Root=1-65b1dd40-339dc8832b4b78d36703cbc0",
"X-B3-Parentspanid": "6ca01ad46bdb0198",
"X-B3-Sampled": "1",
"X-B3-Spanid": "f02ab1a9b2d5c3e4",
"X-B3-Traceid": "ef5b16781c7ad00ea2e3efa6f784031a",
"X-Forwarded-Host": "127.0.0.1"
},
...
}

导航到 http://127.0.0.1:9411/zipkin 上的 Zipkin Web UI,然后单击 Run Query,你应该会看到与请求对应的追踪:

来自请求的追踪

单击 Show 以查看更多追踪详细信息:

v2 追踪跨度

默认情况下,该插件使用 span 版本 2,其中每个追踪请求都有 proxyresponse span。更具体地说:

  • proxy 表示从请求开始到 header_filter 开始的时间
  • response 表示从 header_filter 开始到 log 开始的时间

要了解不同 span 版本之间的差异,请参阅 插件文档

下一步

你现在已经将 Zipkin 与 APISIX 集成以进行追踪。除了将追踪发送到 Zipkin 之外,zipkin 插件还可以将追踪发送到 Jaeger 和其他兼容的收集器。有关更多详细信息,请参阅 zipkin 插件文档