跳到主要内容

Jaeger 可视化导出选项

介绍

Jaeger 是一个开源的分布式追踪系统,用于监控和排查微服务架构中的问题。除了实时查看追踪数据外,Jaeger 还提供了多种导出选项,允许用户将追踪结果、图表和其他可视化数据保存为不同格式,以便离线分析、报告或共享。

在本教程中,我们将介绍 Jaeger 的导出功能,包括如何导出追踪数据、图表和报告,并提供实际案例和代码示例。


导出追踪数据

Jaeger 允许用户将单个追踪或批量追踪数据导出为 JSON 格式。这对于进一步分析或导入到其他工具非常有用。

导出单个追踪

  1. 在 Jaeger UI 中,打开一个追踪详情页面。
  2. 点击右上角的 Download 按钮。
  3. 选择 JSON 格式,追踪数据将下载到本地。

导出的 JSON 文件包含完整的追踪信息,例如 spans、时间戳和标签。

示例输出

json
{
"traceID": "1a2b3c4d5e6f7g8h",
"spans": [
{
"spanID": "9i8j7k6l5m4n3o2p",
"operationName": "HTTP GET /api/users",
"startTime": 1634567890000,
"duration": 120,
"tags": [
{"key": "http.method", "value": "GET"},
{"key": "http.status_code", "value": "200"}
]
}
]
}

批量导出追踪

如果需要导出多个追踪,可以使用 Jaeger 的 API。以下是一个使用 curl 导出追踪数据的示例:

bash
curl -X GET "http://jaeger-query:16686/api/traces?service=my-service&limit=10" \
-H "Accept: application/json" \
-o traces.json
备注

确保替换 http://jaeger-query:16686 为你的 Jaeger 查询服务地址,并将 my-service 替换为目标服务名称。


导出图表

Jaeger UI 支持将追踪图表导出为图片(PNG 或 SVG)或 PDF 格式。这对于创建报告或演示非常有用。

导出为图片

  1. 在追踪详情页面,点击右上角的 Export 按钮。
  2. 选择 PNGSVG 格式。
  3. 图片将自动下载。

导出为 PDF

  1. 在追踪详情页面,点击右上角的 Export 按钮。
  2. 选择 PDF 格式。
  3. PDF 文件将包含追踪的时间线图表和详细信息。

实际案例:导出追踪数据用于离线分析

假设你正在调试一个微服务中的性能问题,并希望将 Jaeger 的追踪数据导出到本地进行分析。以下是具体步骤:

  1. 筛选追踪:在 Jaeger UI 中,使用过滤器找到目标追踪(例如,高延迟的请求)。
  2. 导出 JSON:将追踪导出为 JSON 文件。
  3. 使用脚本分析:编写一个 Python 脚本解析 JSON 文件并提取关键指标(如平均延迟、错误率)。

示例 Python 脚本

python
import json

with open("trace.json", "r") as file:
trace_data = json.load(file)

spans = trace_data["spans"]
total_duration = sum(span["duration"] for span in spans)
avg_duration = total_duration / len(spans)

print(f"Average span duration: {avg_duration} ms")

总结

Jaeger 提供了多种导出选项,包括:

  • JSON 格式:用于进一步分析或导入到其他工具。
  • 图片(PNG/SVG):用于演示或报告。
  • PDF:包含完整的追踪图表和详细信息。

通过这些功能,你可以轻松共享和分析追踪数据,从而更好地理解和优化你的分布式系统。


附加资源

  1. Jaeger 官方文档
  2. Jaeger API 参考
  3. Python JSON 处理教程

练习

  1. 在 Jaeger UI 中导出一个追踪的 JSON 文件,并使用 Python 解析它。
  2. 尝试批量导出 10 个追踪数据,并计算它们的平均延迟。
  3. 将追踪图表导出为 PDF,并尝试在报告中引用它。