??? Jaeger v2 来了!阅读博客文章并尝试一下。
图解TD
SDK["OpenTelemetry SDK"] --> |HTTP 或 gRPC|集电极
COLLECTOR["Jaeger Collector"] --> STORE[存储]
收集器 --> |gRPC| PLUGIN[存储插件]
收集器 --> |gRPC/采样|软件开发工具包
插件 --> 商店
QUERY[Jaeger 查询服务] --> STORE
查询 --> |gRPC|插件
UI[Jaeger UI] --> |HTTP|询问
子图应用程序主机
子图用户应用程序
软件开发工具包
结尾
结尾
Jaeger 受到 Dapper 和 OpenZipkin 的启发,是由 Uber Technologies 创建并捐赠给云原生计算基金会的分布式跟踪平台。它可用于监控基于微服务的分布式系统:
参见:
Jaeger 是云原生计算基金会(CNCF)主办的第七个顶级项目(于 2019 年 10 月毕业)。如果您是一家想要帮助塑造容器封装、动态调度和面向微服务的技术发展的公司,请考虑加入 CNCF。有关谁参与以及 Jaeger 如何发挥作用的详细信息,请阅读 CNCF Jaeger 孵化公告和 Jaeger 毕业公告。
Jaeger 是一个具有开放治理的开源项目。我们欢迎社区的贡献,我们希望您能帮助改进和扩展该项目。以下是一些如何参与的想法。其中许多甚至不需要任何编码。
Jaeger 后端的设计旨在消除单点故障,并根据业务需求进行扩展。例如,Uber 的任何特定 Jaeger 安装通常每天都会处理数十亿个跨度。
Jaeger 和 OpenTelemetry 项目有不同的目标。 OpenTelemetry 旨在提供多种语言的 API 和 SDK,以允许应用程序将各种遥测数据从流程导出到任意数量的指标和跟踪后端。 Jaeger 项目主要是跟踪后端,用于接收跟踪遥测数据并提供该数据的处理、聚合、数据挖掘和可视化。有关更多信息,请参阅博客文章 Jaeger 和 OpenTelemetry。
Jaeger 最初设计是为了支持 OpenTracing 标准。 Jaeger UI 中仍然使用该术语,但这些概念直接映射到 OpenTelemetry 跟踪数据模型。
能力 | 开放追踪概念 | 开放遥测概念 |
---|---|---|
将迹线表示为有向无环图(不仅仅是树) | 跨度参考 | 跨度链接 |
强类型跨度属性 | 跨度标签 | 跨度属性 |
强类型事件/日志 | 跨度日志 | 跨度事件 |
Jaeger 项目建议使用 OpenTelemetry SDK 进行检测,而不是现已弃用的 Jaeger SDK。
Jaeger 可与越来越多的存储后端一起使用:
Jaeger Web UI 使用流行的开源框架(如 React)以 Javascript 实现。 v1.0 中发布了多项性能改进,使 UI 能够有效地处理大量数据并显示具有数万个跨度的跟踪(例如,我们尝试了具有 80,000 个跨度的跟踪)。
Jaeger 后端作为 Docker 镜像的集合进行分发。二进制文件支持各种配置方法,包括命令行选项、环境变量和多种格式的配置文件(yaml、toml 等)。
在生产 Kubernetes 集群中部署 Jaeger 的推荐方法是通过 Jaeger Operator。
Jaeger Operator 提供了一个 CLI,用于从 Jaeger CR 生成 Kubernetes 清单。这可以被视为普通 Kubernetes 清单文件的替代源。
Jaeger 生态系统还提供了 Helm 图表作为部署 Jaeger 的替代方式。
默认情况下,所有 Jaeger 后端组件都会公开 Prometheus 指标(也支持其他指标后端)。使用结构化日志库 zap 将日志写入标准输出。
Jaeger 的第三方安全审计可在 https://github.com/jaegertracing/security-audits 中找到。请参阅问题 #1718,了解 Jaeger 中可用安全机制的摘要。
尽管我们建议使用 OpenTelemetry 来检测应用程序,但如果您的组织已经使用 Zipkin 库投资了检测,则您不必重写所有代码。 Jaeger 通过 HTTP 接受 Zipkin 格式(Thrift 或 JSON v1/v2)的跨度,提供与 Zipkin 的向后兼容性。从 Zipkin 后端切换只需将流量从 Zipkin 库路由到 Jaeger 后端即可。
有时,CLI 标志可能会因可用性改进或新功能等原因而被弃用。在这种情况下,引入弃用的开发人员必须遵循这些准则。
简而言之,对于已弃用的 CLI 标志,您应该会在--help
文档中看到以下消息:
(deprecated, will be removed after yyyy-mm-dd or in release vX.Y.Z, whichever is later)
在删除已弃用的 CLI 标志之前,将提供从包含弃用通知的第一个版本起至少3 个月或两个次要版本更新(以较晚者为准)的宽限期。
例如,考虑这样一种场景:v1.28.0 于 2021 年 6 月 1 日发布,其中包含 CLI 标志的弃用通知。在 2021 年 9 月 1 日或 v1.30.0 之前,此标志将保持已弃用状态,可以在这些事件发生时或之后将其删除。它可能会在比上述宽限期更长的时间内保持弃用状态。
Jaeger 项目尝试跟踪 Go 团队定义的当前支持的 Go 版本。删除对不受支持的 Go 版本的支持并不被视为重大更改。
从 Go 1.21 发布开始,对 Go 版本的支持将更新如下:
N
发布后不久,将对构建和测试步骤进行更新以适应最新的 Go 小版本。N
发布后不久,对 Go 版本N-2
的支持将被删除,版本N-1
将成为所需的最低版本。 Jaeger 项目建议使用 OpenTelemetry SDK 进行检测,而不是现已弃用的 Jaeger 原生 SDK。
请参阅贡献。
请参阅贡献。
感谢所有已经做出贡献的人!
成为维护者的规则在治理文档中定义。以下是 Jaeger 项目的官方维护者。请使用@jaegertracing/jaeger-maintainers
在问题/PR 上标记它们。
jaegertracing 组织下的一些存储库有额外的维护者。
我们感谢前维护者对 Jaeger 项目的贡献。
Jaeger 维护者和贡献者定期通过视频通话会面。欢迎所有人加入,包括最终用户。有关会议详细信息,请参阅 https://www.jaegertracing.io/get-in-touch/。
请参阅 https://www.jaegertracing.io/docs/roadmap/
有问题、建议、错误报告吗?通过以下渠道接触项目社区:
#jaeger
(首次需要加入 CNCF Slack)jaeger-tracing
邮件组Jaeger 作为一个产品由多个组件组成。我们希望支持不同类型的用户,无论他们仅使用我们的检测库还是完整的端到端 Jaeger 安装,无论是在生产中运行还是使用它来解决开发中的问题。
请参阅 ADOPTERS.md 了解目前使用 Jaeger 的一些组织。如果您想将您的组织添加到列表中,请对我们的调查问题发表评论。
版权所有 (c) Jaeger 作者。 Apache 2.0 许可证。