Jaeger 查询与分析:基本查询语法
介绍
Jaeger是一个开源的分布式追踪系统,用于监控和排查微服务架构中的性能问题。查询功能是Jaeger的核心能力之一,它允许开发者通过特定语法快速定位追踪数据。本文将详细介绍Jaeger的基本查询语法,帮助初学者快速上手。
为什么需要查询语法?
在复杂的分布式系统中,一次 请求可能涉及数十个服务。查询语法能帮你从海量数据中精准过滤出目标追踪记录。
基础查询结构
Jaeger的查询语法主要由以下部分组成:
- 服务选择:指定要查询的服务名称
- 操作过滤:筛选特定操作(endpoint)
- 标签过滤:通过键值对进一步细化
- 时间范围:限定查询的时间窗口
基本格式如下:
service="服务名" operation="操作名" tag_key="tag_value" start_time="..." end_time="..."
服务与操作查询
按服务查询
查询特定服务的所有追踪记录:
service="payment-service"
按操作查询
在指定服务中查询特定操作:
service="payment-service" operation="ProcessPayment"
备注
操作名称通常是API端点或函数名,如 GET /api/users
标签过滤
标签是附加在span上的键值对元数据,可用于精细过滤:
service="order-service" http.status_code="500"
支持多种比较运算符:
- 等于:
tag_key="value"
- 不等于:
tag_key!="value"
- 存在检查:
tag_key
(检查标签是否存在) - 正则匹配:
tag_key=/regex/
示例:
service="inventory" error="true" duration>2s
时间范围查询
Jaeger支持绝对时间和相对时间两种格式: