入门
在本地环境中快速启动并运行 Jaeger
如果您不熟悉分布式追踪,请查看简介页面。
埋点
您的应用程序必须进行埋点,才能将追踪数据发送到 Jaeger。我们建议使用 OpenTelemetry 埋点和 SDK。
过去,Jaeger 项目支持实现 OpenTracing API 的自有 SDK(也称为追踪器、客户端库)。截至 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.71.0
或者从二进制分发归档文件中运行 jaeger-all-in-one(.exe)
可执行文件
jaeger-all-in-one --collector.zipkin.host-port=:9411
然后,您可以访问 https://:16686
来使用 Jaeger UI。
容器暴露以下端口
端口 | 协议 | 组件 | 功能 |
---|---|---|---|
16686 | HTTP | 查询 | 提供前端服务 |
4317 | HTTP | 收集器 | 通过 gRPC 接受 OpenTelemetry 协议 (OTLP) |
4318 | HTTP | 收集器 | 通过 HTTP 接受 OpenTelemetry 协议 (OTLP) |
14268 | HTTP | 收集器 | 直接从客户端接受 jaeger.thrift |
14250 | HTTP | 收集器 | 接受 model.proto |
9411 | HTTP | 收集器 | Zipkin 兼容端点(可选) |
带服务性能监控 (SPM)
请参考服务性能监控 (SPM)。
在 Kubernetes 上
请参阅 Kubernetes Operator:https://github.com/jaegertracing/jaeger-operator
示例应用程序:HotROD
HotROD (Rides on Demand) 是一个演示应用程序,由多个微服务组成,并展示了 OpenTelemetry 和分布式追踪的使用。博客文章中提供了教程/演练:《带 Jaeger 一起体验 HotROD 》。
HotROD 应用程序可以独立运行,但需要 Jaeger 后端才能查看追踪。
功能
- 通过数据驱动的依赖关系图发现整个系统的架构。
- 查看请求时间线和错误;了解应用程序的工作原理。
- 查找延迟和并发性不足的来源。
- 高度情境化的日志记录。
- 使用 baggage 传播来诊断请求间争用(排队)以及服务中花费的时间。
- 使用
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.71.0 \
all --otel-exporter=otlp
从源代码
要从源代码运行,您需要
git clone git@github.com:jaegertracing/jaeger.git jaeger
cd jaeger
go run ./examples/hotrod/main.go all
从二进制分发
从二进制分发归档文件中运行 example-hotrod(.exe)
可执行文件
example-hotrod all
然后导航到 https://: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 兼容。