This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.8.4. Tracing
8.4.1. 跟踪请求
分布式追踪记录了一个请求在组成一个应用程序的多个微服务间的路径。它被用来将不同工作单元的信息串联在一起,理解分布式事务中整个事件链。工作单元可能会在不同进程或主机中执行。
8.4.1.1. 分布式追踪概述
作为服务所有者,您可以使用分布式追踪来检测您的服务,以收集与服务架构相关的信息。您可以使用分布式追踪来监控、网络性能分析,并对现代、云原生的基于微服务的应用中组件之间的交互进行故障排除。
通过分布式追踪,您可以执行以下功能:
- 监控分布式事务
- 优化性能和延迟时间
- 执行根原因分析
Red Hat OpenShift distributed tracing 包括两个主要组件:
- Red Hat OpenShift distributed tracing Platform - 此组件基于开源 Jaeger 项目。
- Red Hat OpenShift distributed tracing 数据收集 - 此组件基于开源 OpenTelemetry 项目。
这两个组件都基于厂商中立的 OpenTracing API 和工具。
8.4.2. 使用 Red Hat OpenShift distributed tracing
您可以使用 Red Hat OpenShift Serverless 的 Red Hat OpenShift distributed tracing 监控无服务器应用程序并进行故障排除。
Red Hat OpenShift distributed tracing 由几个组件组成,它们一起收集、存储和显示追踪数据。
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
- 还没有安装 OpenShift Serverless Operator、Knative Serving 和 Knative Eventing。这些需要在 Red Hat OpenShift distributed tracing 安装后安装。
- 您已按照 OpenShift Container Platform "Installing distributed tracing" 文档 安装了 Red Hat OpenShift distributed tracing。
- 
								已安装 OpenShift CLI(oc)。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
- 创建 - OpenTelemetryCollector自定义资源 (CR) :- OpenTelemetryCollector CR 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证有两个 pod 在安装了 Red Hat OpenShift distributed tracing 的命名空间中运行: - oc get pods -n <namespace> - $ oc get pods -n <namespace>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME READY STATUS RESTARTS AGE cluster-collector-collector-85c766b5c-b5g99 1/1 Running 0 5m56s jaeger-all-in-one-inmemory-ccbc9df4b-ndkl5 2/2 Running 0 15m - NAME READY STATUS RESTARTS AGE cluster-collector-collector-85c766b5c-b5g99 1/1 Running 0 5m56s jaeger-all-in-one-inmemory-ccbc9df4b-ndkl5 2/2 Running 0 15m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证是否已创建以下无头服务: - oc get svc -n <namespace> | grep headless - $ oc get svc -n <namespace> | grep headless- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - cluster-collector-collector-headless ClusterIP None <none> 9411/TCP 7m28s jaeger-all-in-one-inmemory-collector-headless ClusterIP None <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP 16m - cluster-collector-collector-headless ClusterIP None <none> 9411/TCP 7m28s jaeger-all-in-one-inmemory-collector-headless ClusterIP None <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP 16m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这些服务用于配置 Jaeger、Knative Serving 和 Knative Eventing。Jaeger 服务的名称可能会有所不同。 
- 按照"安装 OpenShift Serverless Operator"文档安装 OpenShift Serverless Operator。
- 通过创建以下 - KnativeServingCR 来安装 Knative Serving:- KnativeServing CR 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- sample-rate定义抽样概率。- sample-rate: "0.1"表示在 10 个 trace 中会抽样 1 个。
 
- 通过创建以下 KnativeEventing CR 来安装 - Knative Eventing:- Example KnativeEventing CR - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- sample-rate定义抽样概率。- sample-rate: "0.1"表示在 10 个 trace 中会抽样 1 个。
 
- 创建 Knative 服务: - 服务示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 向服务发出一些请求: - HTTPS 请求示例 - curl https://helloworld-go.example.com - $ curl https://helloworld-go.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 获取 Jaeger web 控制台的 URL: - 示例命令 - oc get route jaeger-all-in-one-inmemory -o jsonpath='{.spec.host}' -n <namespace>- $ oc get route jaeger-all-in-one-inmemory -o jsonpath='{.spec.host}' -n <namespace>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 现在,您可以使用 Jaeger 控制台检查 trace。 
8.4.3. 使用 Jaeger 分布式追踪
如果您不想安装 Red Hat OpenShift distributed tracing 的所有组件,您仍可使用带有 OpenShift Serverless 的 OpenShift Container Platform 上的分布式追踪。
8.4.3.1. 配置 Jaeger 以启用分布式追踪
要使用 Jaeger 启用分布式追踪,您必须安装并配置 Jaeger 作为独立集成。
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
- 已安装 OpenShift Serverless Operator、Knative Serving 和 Knative Eventing。
- 已安装 Red Hat OpenShift distributed tracing platform Operator。
- 
								已安装 OpenShift CLI(oc)。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
- 创建并应用包含以下内容的 - Jaeger自定义资源(CR):- Jaeger CR - apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger namespace: default - apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger namespace: default- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过编辑 - KnativeServingCR 并添加用于追踪的 YAML 配置来启用 Knative Serving 的追踪:- Serving 的追踪 YAML 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过编辑 KnativeEventing CR 来启用 - Knative Eventing的追踪:- Eventing 的追踪 YAML 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
							您可以使用 jaeger 路由来访问 Jaeger web 控制台以查看追踪数据。
						
- 输入以下命令来获取 - jaeger路由的主机名:- oc get route jaeger -n default - $ oc get route jaeger -n default- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD jaeger jaeger-default.apps.example.com jaeger-query <all> reencrypt None - NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD jaeger jaeger-default.apps.example.com jaeger-query <all> reencrypt None- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在浏览器中使用端点地址来查看控制台。