Zipkin UI 使用:搜索技巧
介绍
Zipkin 是一个开源的分布式追踪系统,用于收集、存储和可视化微服务架构中的请求链路数据。Zipkin UI 提供了强大的搜索功能,帮助开发者快速定位和分析追踪数据。本文将详细介绍 Zipkin UI 的搜索技巧,包括基本查询语法、高级过滤条件以及实际应用场景。
基本搜索语法
在 Zipkin UI 的搜索栏中,你可以输入简单的关键词来查询追踪数据。以下是几种常见的搜索方式:
-
服务名称搜索:
直接输入服务名称(如user-service
)可以查询该服务的所有追踪记录。 -
Span 名称搜索:
输入 Span 名称(如GET /api/users
)可以查询特定操作的追踪记录。 -
时间范围过滤:
在 UI 的时间选择器中指定时间范围,可以缩小搜索结果的区间。
Zipkin UI 默认显示最近 15 分钟的追踪数据。如果需要查询更早的数据,记得调整时间范围。
高级搜索语法
Zipkin 支持基于标签(tags)和注解(annotations)的高级搜索。以下是常用的高级搜索语法:
1. 标签过滤
标签是附加到 Span 上的键值对,可以通过 key=value
的形式过滤。例如:
http.method=GET
:查询所有 HTTP 方法为 GET 的 Span。error=true
:查询所有标记为错误的 Span。
2. 持续时间过滤
可以通过 duration
关键字查询特定持续时间的 Span:
duration>=100ms
:查询持续时间大于或等于 100 毫秒的 Span。duration<1s
:查询持续时间小于 1 秒的 Span。
3. 组合查询
多个条件可以通过空格或逻辑运算符组合:
service=order-service http.method=POST
:查询order-service
中所有 HTTP POST 请求。service=payment-service error=true
:查询payment-service
中所有出错的 Span。
Zipkin 的搜索语法不区分大小写,但标签的键值对必须完全匹配。
实际案例
案例 1:查找慢请求
假设你想找出 product-service
中所有耗时超过 500 毫秒的请求,可以输入:
service=product-service duration>500ms
案例 2:排查错误
如果你想排查 auth-service
中所有标记为错误的请求,可以输入:
service=auth-service error=true
案例 3:按接口过滤
如果你想查询 user-service
中所有调用 GET /api/users/{id}
的请求,可以输入:
service=user-service span=GET /api/users/{id}
可视化搜索结果
Zipkin UI 会将搜索结果以时间轴的形式展示。你可以通过以下方式进一步分析:
- 点击追踪记录:查看完整的调用链路和 Span 详情。
- 排序功能:按持续时间或时间戳排序。
- 依赖图:通过依赖图查看服务之间的调用关系。
总结
Zipkin UI 的搜索功能是排查分布式系统问题的强大工具。通过掌握基本和高级搜索语法,你可以快速定位性能瓶颈、错误请求和调用链路。以下是关键点回顾:
- 使用
service
和span
过滤特定服务和操作。 - 通过
duration
和error
筛选慢请求和错误。 - 组合多个条件可以精确缩小搜索范围。
附加资源
练习
- 尝试在 Zipkin UI 中搜索你最近部署的服务的追踪记录。
- 使用
duration
和error
标签找出系统中的性能问题和错误。 - 组合多个条件(如服务名称和 HTTP 方法)进行高级查询。