第 7 章 从分布式追踪平台 (Jaeger) 迁移到 OpenTelemetry 的红帽构建
如果您已将 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 部署。
7.1. 从分布式追踪平台 (Jaeger) 迁移到带有 sidecar 的红帽构建的 OpenTelemetry
Red Hat build of OpenTelemetry Operator 支持 sidecar 注入部署工作负载,以便您可以从分布式追踪平台(Jaeger) sidecar 迁移到红帽构建的 OpenTelemetry sidecar。
先决条件
- 在集群中使用 Red Hat OpenShift distributed tracing Platform (Jaeger)。
- 已安装红帽构建的 OpenTelemetry。
流程
将 OpenTelemetry Collector 配置为 sidecar。
apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: otel namespace: <otel-collector-namespace> spec: mode: sidecar config: | receivers: jaeger: protocols: grpc: thrift_binary: thrift_compact: thrift_http: processors: batch: memory_limiter: check_interval: 1s limit_percentage: 50 spike_limit_percentage: 30 resourcedetection: detectors: [openshift] timeout: 2s exporters: otlp: endpoint: "tempo-<example>-gateway:8090" 1 tls: insecure: true service: pipelines: traces: receivers: [jaeger] processors: [memory_limiter, resourcedetection, batch] exporters: [otlp]
- 1
- 此端点指向使用 Tempo Operator 部署的
<example>
TempoStack 实例的网关。
创建用于运行应用程序的服务帐户。
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector-sidecar
为某些处理器所需的权限创建集群角色。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: otel-collector-sidecar rules: 1 - apiGroups: ["config.openshift.io"] resources: ["infrastructures", "infrastructures/status"] verbs: ["get", "watch", "list"]
- 1
resourcedetectionprocessor
需要基础架构和基础架构/状态的权限。
创建
ClusterRoleBinding
来为服务帐户设置权限。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: otel-collector-sidecar subjects: - kind: ServiceAccount name: otel-collector-deployment namespace: otel-collector-example roleRef: kind: ClusterRole name: otel-collector apiGroup: rbac.authorization.k8s.io
- 将 OpenTelemetry Collector 部署为 sidecar。
-
通过从
Deployment
对象中删除"sidecar.jaegertracing.io/inject": "true"
注解,从应用程序中删除注入的 Jaeger Agent。 -
通过将
sidecar.opentelemetry.io/inject: "true"
注解添加到Deployment
对象的.spec.template.metadata.annotations
字段来启用 OpenTelemetry sidecar 自动注入。 - 使用为应用程序部署创建的服务帐户,以允许处理器获取正确的信息并将其添加到您的追踪中。