入门
在本地环境中快速启动并运行 Jaeger
如果您是分布式追踪的新手,请查看 简介 页面。
检测
您的应用程序必须进行检测才能将追踪数据发送到 Jaeger。我们建议使用 OpenTelemetry 检测和 SDK。
历史上,Jaeger 项目支持自己的 SDK(也称作追踪器、客户端库),这些 SDK 实现了 OpenTracing API。截至 2022 年,Jaeger SDK 不再受支持,建议所有用户迁移到 OpenTelemetry。
一体化
all-in-one 是一个专为快速本地测试设计的可执行文件。它包含 Jaeger UI、jaeger-collector 和 jaeger-query,以及一个内存存储组件。
启动一体化的最简单方法是使用发布到 DockerHub 的预构建镜像(单行命令行)。
docker run --rm --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
-p 14250:14250 \
-p 14268:14268 \
-p 14269:14269 \
-p 9411:9411 \
jaegertracing/all-in-one:1.69.0
或者从 二进制分发包 中运行 jaeger-all-in-one(.exe)
可执行文件
jaeger-all-in-one --collector.zipkin.host-port=:9411
然后您可以导航到 http://localhost:16686
来访问 Jaeger UI。
容器暴露以下端口
端口 | 协议 | 组件 | 功能 |
---|---|---|---|
16686 | HTTP | query | 提供前端服务 |
4317 | HTTP | collector | 接受基于 gRPC 的 OpenTelemetry 协议 (OTLP) |
4318 | HTTP | collector | 接受基于 HTTP 的 OpenTelemetry 协议 (OTLP) |
14268 | HTTP | collector | 直接从客户端接受 jaeger.thrift |
14250 | HTTP | collector | 接受 model.proto |
9411 | HTTP | collector | Zipkin 兼容端点(可选) |
使用服务性能监控 (SPM)
请参考 服务性能监控 (SPM)。
在 Kubernetes 上
请查看 Kubernetes Operator: https://github.com/jaegertracing/jaeger-operator
示例应用:HotROD
HotROD(按需打车服务)是一个演示应用程序,包含多个微服务,用于演示 OpenTelemetry 和分布式追踪的使用。博客文章中提供了一个教程/指南:体验 Jaeger 和 HotROD 。
HotROD 应用程序可以独立运行,但需要 Jaeger 后端来查看追踪。
特性
- 通过数据驱动的依赖关系图探索整个系统的架构。
- 查看请求时间线和错误;了解应用程序如何工作。
- 查找延迟和缺乏并发的根源。
- 高度上下文化的日志记录。
- 使用 baggage propagation 来诊断请求间的争用(排队)以及服务中花费的时间。
- 使用
opentelemetry-contrib
中的开源库免费获得厂商中立的检测能力。
运行
我们建议通过 docker compose
一起运行 Jaeger 和 HotROD。
使用 Docker Compose
git clone git@github.com:jaegertracing/jaeger.git jaeger
cd jaeger/examples/hotrod
docker compose up
# Ctrl-C to stop
使用 Docker
docker run --rm -it --link jaeger \
-p8080-8083:8080-8083 \
-e OTEL_EXPORTER_OTLP_ENDPOINT="http://jaeger:4318" \
jaegertracing/example-hotrod:1.69.0 \
all --otel-exporter=otlp
从源码构建
要从源码运行,您需要
- 您的机器上安装 Go toolchain (请参阅 go.mod 文件获取最低要求的 Go 版本)。
- 一个正在运行的 Jaeger 后端 来查看追踪。
git clone git@github.com:jaegertracing/jaeger.git jaeger
cd jaeger
go run ./examples/hotrod/main.go all
从二进制分发包
从 二进制分发包 中运行 example-hotrod(.exe)
可执行文件
example-hotrod all
然后导航到 http://localhost:8080
。
从 Zipkin 迁移
jaeger-collector 服务暴露 Zipkin 兼容的 REST API /api/v1/spans
,接受 Thrift 和 JSON。此外,还有 /api/v2/spans
用于 JSON 和 Proto。默认情况下它是禁用的。可以通过 --collector.zipkin.host-port=:9411
启用。
Zipkin Thrift IDL 和 Zipkin Proto IDL 文件可以在 jaegertracing/jaeger-idl 仓库中找到。它们与 openzipkin/zipkin-api 的 Thrift 和 Proto 兼容。