迁移至红帽构建的 OpenTelemetry
从 Jaeger 转换到 OpenTelemetry 以进行分布式追踪
摘要
第 1 章 迁移 复制链接链接已复制到粘贴板!
弃用的 Red Hat OpenShift distributed tracing 平台(Jaeger) 3.5 是红帽支持的 Red Hat OpenShift distributed tracing 平台(Jaeger)的最后一个发行版本。
所有对已弃用 Red Hat OpenShift distributed tracing 平台(Jaeger) 3.5 的支持和维护在 2025 年 11 月 3 日终止。
如果您仍然使用 Red Hat OpenShift distributed tracing 平台(Jaeger),您必须迁移到红帽构建的 OpenTelemetry Operator 和 Tempo Operator 用于分布式追踪集合和存储。如需更多信息,请参阅 Red Hat build of OpenTelemetry 文档中的 "Migrating",请参阅 Red Hat build of OpenTelemetry 文档中的"安装",以及 Red Hat OpenShift distributed tracing 平台(Tempo)文档中的"安装"。
如需更多信息,请参阅 OpenShift 中的红帽知识库解决方案 Jaeger Deprecation 和 Removal。
如果您已将 Red Hat OpenShift distributed tracing 平台(Jaeger)用于应用程序,您可以迁移到 OpenTelemetry 的红帽构建,它基于 OpenTelemetry 开源项目。
Red Hat build of OpenTelemetry 提供了一组 API、库、代理和工具,以便在分布式系统中促进可观察性。Red Hat build of OpenTelemetry 中的 OpenTelemetry Collector 可以影响 Jaeger 协议,因此您不需要在应用程序中更改 SDK。
从分布式追踪平台 (Jaeger) 迁移到红帽构建的 OpenTelemetry 需要配置 OpenTelemetry Collector 和应用程序来无缝报告 trace。您可以迁移 sidecar 和 sidecar 部署。
1.1. 使用 sidecar 迁移 复制链接链接已复制到粘贴板!
Red Hat build of OpenTelemetry Operator 支持 sidecar 注入部署工作负载,以便您可以从分布式追踪平台(Jaeger) sidecar 迁移到红帽构建的 OpenTelemetry sidecar。
先决条件
- 在集群中使用 Red Hat OpenShift distributed tracing Platform (Jaeger)。
- 已安装红帽构建的 OpenTelemetry。
流程
将 OpenTelemetry Collector 配置为 sidecar。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此端点指向使用 Tempo Operator 部署的
<example>TempoStack 实例的网关。
创建用于运行应用程序的服务帐户。
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector-sidecar
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector-sidecarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为某些处理器所需的权限创建集群角色。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
resourcedetectionprocessor需要基础架构和基础架构/状态的权限。
创建
ClusterRoleBinding来为服务帐户设置权限。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 OpenTelemetry Collector 部署为 sidecar。
-
通过从
Deployment对象中删除"sidecar.jaegertracing.io/inject": "true"注解,从应用程序中删除注入的 Jaeger Agent。 -
通过将
sidecar.opentelemetry.io/inject: "true"注解添加到Deployment对象的.spec.template.metadata.annotations字段来启用 OpenTelemetry sidecar 自动注入。 - 使用为应用程序部署创建的服务帐户,以允许处理器获取正确的信息并将其添加到您的追踪中。
1.2. 在没有 sidecar 的情况下迁移 复制链接链接已复制到粘贴板!
您可以从分布式追踪平台(Jaeger)迁移到没有 sidecar 部署的红帽构建的 OpenTelemetry。
先决条件
- 在集群中使用 Red Hat OpenShift distributed tracing Platform (Jaeger)。
- 已安装红帽构建的 OpenTelemetry。
流程
- 配置 OpenTelemetry Collector 部署。
创建部署 OpenTelemetry Collector 的项目。
apiVersion: project.openshift.io/v1 kind: Project metadata: name: observability
apiVersion: project.openshift.io/v1 kind: Project metadata: name: observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于运行 OpenTelemetry Collector 实例的服务帐户。
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector-deployment namespace: observability
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector-deployment namespace: observabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建集群角色,以设置处理器所需的权限。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 ClusterRoleBinding 来为服务帐户设置权限。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 OpenTelemetry Collector 实例。
注意此收集器会将 trace 导出至 TempoStack 实例。您必须使用 Red Hat Tempo Operator 创建 TempoStack 实例,并放在正确的端点中。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将追踪端点指向 OpenTelemetry Operator。
如果您要将 trace 直接从应用程序导出到 Jaeger,请将 API 端点从 Jaeger 端点改为 OpenTelemetry Collector 端点。
使用带有 Golang 的
jaegerexporter导出 trace 的示例exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- URL 指向 OpenTelemetry Collector API 端点。