分布式追踪
在 OpenShift Container Platform 中配置和使用分布式追踪
摘要
1.1. 关于此版本 复制链接链接已复制到粘贴板!
分布式追踪平台 3.7 通过 Tempo Operator 0.18.0 提供,它基于开源 Grafana Tempo 2.8.2。
某些链接的 Jira 票据只能通过红帽凭证访问。
只支持在文档中包括的功能。没有包括在文档中的功能不被支持。如果您需要对某个功能的帮助,请联系红帽支持。
1.2. 新功能及功能增强 复制链接链接已复制到粘贴板!
- 限制 API 访问的网络策略
- 在这个版本中,Tempo Operator 为 Operator 创建一个网络策略来限制对已使用 API 的访问。
1.3. 已知问题 复制链接链接已复制到粘贴板!
- Tempo query frontend 无法获取 trace JSON
在 Jaeger UI 中,点 Trace 并刷新页面,或者从 Tempo 查询前端访问 Trace → Trace Timeline → Trace JSON,可能会导致 Tempo 查询 pod 失败并显示 EOF 错误。
要临时解决这个问题,请使用分布式追踪 UI 插件来查看 trace。
1.4. 修复的问题 复制链接链接已复制到粘贴板!
此发行版本解决了以下 CVE:
1.5. 获取支持 复制链接链接已复制到粘贴板!
如果您在执行本文档所述的某个流程或 OpenShift Container Platform 时遇到问题,请访问 红帽客户门户网站。
通过红帽客户门户网站:
- 搜索或者浏览红帽知识库,了解与红帽产品相关的文章和解决方案。
- 提交问题单给红帽支持。
- 访问其他产品文档。
要识别集群中的问题,您可以在 OpenShift Cluster Manager 中使用 Insights。Insights 提供了问题的详细信息,并在有可用的情况下,提供了如何解决问题的信息。
如果您对本文档有任何改进建议,或发现了任何错误,请为相关文档组件提交 JIRA 问题。请提供具体详情,如章节名称和 OpenShift Container Platform 版本。
第 2 章 关于 Distributed Tracing Platform(分布式跟踪平台) 复制链接链接已复制到粘贴板!
2.1. 分布式追踪中的关键概念 复制链接链接已复制到粘贴板!
每次用户在某个应用程序中执行一项操作时,一个请求都会在所在的系统上执行,而这个系统可能需要几十个不同服务的共同参与才可以做出相应的响应。Red Hat OpenShift distributed Tracing Platform 可让您执行分布式追踪,在组成一个应用程序的多个微服务间记录请求的路径。
分布式追踪是用来将不同工作单元的信息关联起来的技术,通常是在不同进程或主机中执行的,以便理解分布式事务中的整个事件链。开发人员可以视觉化在大型微服务架构中调用的流程。它对理解序列化、并行性和延迟来源有价值。
Red Hat OpenShift distributedracing Platform 记录了在微服务的整个堆栈间单独执行请求,并将其显示为 trace。trace是系统的数据/执行路径。端到端的 trace 由一个或多个 span 组成。
span 代表 Red Hat OpenShift distributed Tracing Platform 中的逻辑工作单元,它具有操作名称、操作的开始时间和持续时间,以及可能的标签和日志。span 可能会被嵌套并排序以模拟因果关系。
作为服务所有者,您可以使用分布式追踪来检测您的服务,以收集与服务架构相关的信息。您可以使用 Red Hat OpenShift distributed Tracing Platform 来监控、网络性能分析,并对现代、云原生的基于微服务的应用程序中组件之间的交互进行故障排除。
使用分布式跟踪平台,您可以执行以下功能:
- 监控分布式事务
- 优化性能和延迟时间
- 执行根原因分析
您可以将分布式跟踪平台与 OpenShift Container Platform 的其它相关组件相结合:
- 红帽构建的 OpenTelemetry 用于将 trace 转发到 TempoStack 实例
- Cluster Observability Operator (COO)的分布式追踪 UI 插件
2.2. Red Hat OpenShift distributed Tracing Platform 功能 复制链接链接已复制到粘贴板!
Red Hat OpenShift distributed Tracing Platform 提供以下功能:
- 与 Kiali 集成 - 当正确配置时,您可以从 Kiali 控制台查看分布式追踪平台数据。
- 高可伸缩性 - 分布式追踪平台后端设计具有单一故障点,而且能够按照业务需求进行扩展。
- 分布式上下文发布 – 允许您通过不同的组件连接数据以创建完整的端到端的 trace。
- 与 Zipkin 的后向兼容性 - Red Hat OpenShift distributed Tracing Platform 有 API,它被用来替代 Zipkin,但红帽在此发行版本中不支持 Zipkin 的兼容性。
2.3. Red Hat OpenShift distributed Tracing Platform 架构 复制链接链接已复制到粘贴板!
Red Hat OpenShift distributed Tracing Platform 由几个组件组成,它们一起收集、存储和显示追踪数据。
Red Hat OpenShift distributed Tracing Platform - 此组件基于开源 Grafana Tempo 项目。
- gateway- 网关 处理到 Distributor 或 Query 前端服务的请求的身份验证、授权和转发。
-
Distributor - Distributor 接受多种格式,包括 Jaeger、OpenTelemetry 和 Zipkin。它通过哈希
traceID并将分布式一致的哈希环路由到 Ingester。 - Ingester - Ingester 将 trace 批处理到块中,创建 bloom 过滤器和索引,然后将其全部刷新到后端。
- 查询 Frontend - Query Frontend 分片了传入的查询的搜索空间,并将查询发送到 Querier。Query Frontend 部署通过 Tempo Query sidecar 公开 Jaeger UI。
- Querier - Querier 负责在 Ingester 或后端存储中查找请求的 trace ID。根据参数,它可以查询 Ingesters,并从后端拉取 Bloom 索引,以便在对象存储中搜索块。
- compactor- Compactor 流块到后端存储,以减少块总数。
红帽构建的 OpenTelemetry - 此组件基于开源 OpenTelemetry 项目。
- OpenTelemetry Collector - OpenTelemetry Collector 是一个与厂商无关的方式来接收、处理和导出遥测数据。OpenTelemetry Collector 支持开源可观察数据格式,如 Jaeger 和 Prometheus,发送到一个或多个开源或商业后端。Collector 是默认位置检测库来导出其遥测数据。
第 3 章 安装 Distributed Tracing Platform 复制链接链接已复制到粘贴板!
安装 Distributed Tracing Platform 涉及以下步骤:
- 安装 Tempo Operator。
- 设置受支持的对象存储并为对象存储凭证创建 secret。
- 配置权限和租户.
根据您的用例,安装您选择的部署:
-
Microservices-mode
TempoStack实例 -
Monolithic-mode
TempoMonolithic实例
-
Microservices-mode
3.1. 安装 Tempo Operator 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台或命令行安装 Tempo Operator。
3.1.1. 使用 Web 控制台安装 Tempo Operator 复制链接链接已复制到粘贴板!
您可以通过 Web 控制台的 Administrator 视图安装 Tempo Operator。
先决条件
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 -
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin角色的帐户登录。 您已完成由支持的供应商设置所需的对象存储:Red Hat OpenShift Data Foundation, MinIO, Amazon S3, Azure Blob Storage, Google Cloud Storage。如需更多信息,请参阅"对象存储设置"。
警告对象存储是必需的,它没有包含在 Distributed Tracing Platform 中。在安装 Distributed Tracing Platform (Tempo) 前,您必须通过受支持的供应商选择和设置对象存储。
流程
-
进入 Operators → OperatorHub 并搜索
Tempo Operator。 选择 由红帽提供的 Tempo Operator。
重要以下选择是此 Operator 的默认预设置:
- Update channel → stable
- Installation mode → All namespaces on the cluster
- Installed Namespace → openshift-tempo-operator
- Update approval → Automatic
- 选择 Enable Operator recommended cluster monitoring on this Namespace 复选框。
- 选择 Install → Install → View Operator。
验证
- 在已安装 Operator 页面的 Details 选项卡中,在 ClusterServiceVersion details 下验证安装 Status 是否为 Succeeded。
3.1.2. 使用 CLI 安装 Tempo Operator 复制链接链接已复制到粘贴板!
您可以从命令行安装 Tempo Operator。
先决条件
集群管理员具有
cluster-admin角色的活跃 OpenShift CLI (oc) 会话。提示-
确保您的 OpenShift CLI (
oc) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。 运行
oc login:oc login --username=<your_username>
$ oc login --username=<your_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
确保您的 OpenShift CLI (
您已完成由支持的供应商设置所需的对象存储:Red Hat OpenShift Data Foundation, MinIO, Amazon S3, Azure Blob Storage, Google Cloud Storage。如需更多信息,请参阅"对象存储设置"。
警告对象存储是必需的,它没有包含在 Distributed Tracing Platform 中。在安装 Distributed Tracing Platform (Tempo) 前,您必须通过受支持的供应商选择和设置对象存储。
流程
运行以下命令,为 Tempo Operator 创建项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 Operator 组:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建订阅:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令检查 Operator 状态:
oc get csv -n openshift-tempo-operator
$ oc get csv -n openshift-tempo-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 对象存储设置 复制链接链接已复制到粘贴板!
在设置受支持的对象存储时,您可以使用以下配置参数。
使用对象存储需要在部署 TempoStack 或 TempoMonolithic 实例前设置受支持的对象存储并为对象存储凭据创建一个 secret。
| 存储供应商 |
|---|
| Secret 参数 |
|
|
| MinIO |
| 请参阅 MinIO Operator。
|
| Amazon S3 |
|
|
| 带有安全令牌服务(STS)的 Amazon S3 |
|
|
| Microsoft Azure Blob Storage |
|
|
| Google Cloud Storage 上的 Google Cloud Storage |
|
|
3.2.1. 使用安全令牌服务设置 Amazon S3 存储 复制链接链接已复制到粘贴板!
您可以使用安全令牌服务(STS) 和 AWS 命令行界面(AWS CLI) 设置 Amazon S3 存储。另外,您还可以使用 Cloud Credential Operator (CCO)。
将分布式 Tracing Platform 与 Amazon S3 存储和 STS 一起使用只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
- 已安装 AWS CLI 的最新版本。
- 如果要使用 CCO,已在集群中安装并配置了 CCO。
流程
- 创建 AWS S3 存储桶。
为 AWS Identity and Access Management (AWS IAM) 策略创建以下
trust.json文件,用于设置 AWS IAM 角色之间的信任关系,您要在下一步中创建的,以及TempoStack或TempoMonolithic实例的服务帐户:trust.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您还可以运行以下命令来获取 OIDC 供应商的值:
oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 's~http[s]*://~~g'
$ oc get authentication cluster -o json | jq -r '.spec.serviceAccountIssuer' | sed 's~http[s]*://~~g'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过附加创建的
trust.json策略文件来创建 AWS IAM 角色。您可以运行以下命令来完成此操作:aws iam create-role \ --role-name "tempo-s3-access" \ --assume-role-policy-document "file:///tmp/trust.json" \ --query Role.Arn \ --output text$ aws iam create-role \ --role-name "tempo-s3-access" \ --assume-role-policy-document "file:///tmp/trust.json" \ --query Role.Arn \ --output textCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 AWS IAM 策略附加到创建的 AWS IAM 角色。您可以运行以下命令来完成此操作:
aws iam attach-role-policy \ --role-name "tempo-s3-access" \ --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"$ aws iam attach-role-policy \ --role-name "tempo-s3-access" \ --policy-arn "arn:aws:iam::aws:policy/AmazonS3FullAccess"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果不使用 CCO,请跳过这一步。如果使用 CCO,请为 Tempo Operator 配置云供应商环境。您可以运行以下命令来完成此操作:
oc patch subscription <tempo_operator_sub> \ -n <tempo_operator_namespace> \ --type='merge' -p '{"spec": {"config": {"env": [{"name": "ROLEARN", "value": "'"<role_arn>"'"}]}}}'$ oc patch subscription <tempo_operator_sub> \1 -n <tempo_operator_namespace> \2 --type='merge' -p '{"spec": {"config": {"env": [{"name": "ROLEARN", "value": "'"<role_arn>"'"}]}}}'3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 OpenShift Container Platform 中,使用键创建一个对象存储 secret,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建对象存储 secret 时,按如下所示 Distributed Tracing Platform 实例的相关自定义资源:
TempoStack自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow TempoMonolithic自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2.2. 使用安全令牌服务设置 Azure 存储 复制链接链接已复制到粘贴板!
您可以使用 Azure 命令行界面 (Azure CLI) 使用安全令牌服务 (STS) 设置 Azure 存储。
将 Distributed Tracing Platform 与 Azure 存储和 STS 一起使用只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
- 已安装 Azure CLI 的最新版本。
- 您已创建了 Azure 存储帐户。
- 您已创建了 Azure blob 存储容器。
流程
运行以下命令来创建 Azure 管理的身份:
az identity create \ --name <identity_name> \ --resource-group <resource_group> \ --location <region> \ --subscription <subscription_id>
$ az identity create \ --name <identity_name> \1 --resource-group <resource_group> \2 --location <region> \3 --subscription <subscription_id>4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 OpenShift Container Platform 服务帐户创建一个联邦身份凭证,供 Distributed Tracing Platform 的所有组件使用,但 Query Frontend 除外。您可以运行以下命令来完成此操作:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您可以运行以下命令来获取集群的 OpenID Connect (OIDC) 签发者的 URL:
oc get authentication cluster -o json | jq -r .spec.serviceAccountIssuer
$ oc get authentication cluster -o json | jq -r .spec.serviceAccountIssuerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 OpenShift Container Platform 服务帐户创建一个联邦身份凭证,供 Distributed Tracing Platform 的 Query Frontend 组件使用。您可以运行以下命令来完成此操作:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Storage Blob Data Contributor 角色分配给创建的 Azure 管理身份的 Azure 服务主体身份。您可以运行以下命令来完成此操作:
az role assignment create \ --assignee <assignee_name> \ --role "Storage Blob Data Contributor" \ --scope "/subscriptions/<subscription_id>
$ az role assignment create \ --assignee <assignee_name> \1 --role "Storage Blob Data Contributor" \ --scope "/subscriptions/<subscription_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您在第 1 步中创建的 Azure 管理身份的 Azure 服务主体身份。
提示您可以运行以下命令来获取
<assignee_name>值:az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'" | jq -r --arg idName <identity_name> '.[] | select(.displayName == $idName) | .appId'`
$ az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'" | jq -r --arg idName <identity_name> '.[] | select(.displayName == $idName) | .appId'`Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取您在第 1 步中创建的 Azure 管理身份的客户端 ID:
CLIENT_ID=$(az identity show \ --name <identity_name> \ --resource-group <resource_group> \ --query clientId \ -o tsv)
CLIENT_ID=$(az identity show \ --name <identity_name> \1 --resource-group <resource_group> \2 --query clientId \ -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Azure 工作负载身份联邦 (WIF) 创建 OpenShift Container Platform secret。您可以运行以下命令来完成此操作:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建对象存储 secret 时,按如下所示 Distributed Tracing Platform 实例的相关自定义资源:
TempoStack自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上一步中创建的 secret。
TempoMonolithic自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上一步中创建的 secret。
3.2.3. 使用安全令牌服务设置 Google Cloud 存储 复制链接链接已复制到粘贴板!
您可以使用 Google Cloud CLI 使用安全令牌服务 (STS) 设置 Google Cloud Storage (GCS)。
使用带有 GCS 和 STS 的 Distributed Tracing Platform 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
先决条件
- 已安装 Google Cloud CLI 的最新版本。
流程
- 在 Google Cloud 上创建 GCS 存储桶。
使用 Google Identity and Access Management (IAM) 创建或重复使用服务帐户:
SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts create <iam_service_account_name> \ --display-name="Tempo Account" \ --project <project_id> \ --format='value(email)' \ --quiet)SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts create <iam_service_account_name> \1 --display-name="Tempo Account" \ --project <project_id> \2 --format='value(email)' \ --quiet)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将所需的 Google Cloud 角色绑定到项目级别创建的服务帐户。您可以运行以下命令来完成此操作:
gcloud projects add-iam-policy-binding <project_id> \ --member "serviceAccount:$SERVICE_ACCOUNT_EMAIL" \ --role "roles/storage.objectAdmin"$ gcloud projects add-iam-policy-binding <project_id> \ --member "serviceAccount:$SERVICE_ACCOUNT_EMAIL" \ --role "roles/storage.objectAdmin"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索与集群关联的 Google Cloud Workload Identity Pool 的
POOL_ID值。如何检索这个值取决于您的环境,因此命令只是示例:OIDC_ISSUER=$(oc get authentication.config cluster -o jsonpath='{.spec.serviceAccountIssuer}') \ &&$ OIDC_ISSUER=$(oc get authentication.config cluster -o jsonpath='{.spec.serviceAccountIssuer}') \ && POOL_ID=$(echo "$OIDC_ISSUER" | awk -F'/' '{print $NF}' | sed 's/-oidc$//')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 IAM 策略绑定。您可以运行以下命令来完成此操作:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
$SERVICE_ACCOUNT_EMAIL是第 2 步中的命令的输出。
为存储 secret 的
key.json密钥创建一个凭据文件,供TempoStack自定义资源使用。您可以运行以下命令来完成此操作:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取正确的受众:
gcloud iam workload-identity-pools providers describe "$PROVIDER_NAME" --format='value(oidc.allowedAudiences[0])'
$ gcloud iam workload-identity-pools providers describe "$PROVIDER_NAME" --format='value(oidc.allowedAudiences[0])'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 Distributed Tracing Platform 创建存储 secret。
oc -n <tempo_namespace> create secret generic gcs-secret \ --from-literal=bucketname="<bucket_name>" \ --from-literal=audience="<audience>" \ --from-file=key.json=<output_file_path>
$ oc -n <tempo_namespace> create secret generic gcs-secret \ --from-literal=bucketname="<bucket_name>" \1 --from-literal=audience="<audience>" \2 --from-file=key.json=<output_file_path>3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建对象存储 secret 时,按如下所示 Distributed Tracing Platform 实例的相关自定义资源:
TempoStack自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上一步中创建的 secret。
TempoMonolithic自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上一步中创建的 secret。
3.2.4. 设置 IBM Cloud Object Storage 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI (oc) 设置 IBM Cloud Object Storage。
先决条件
-
已安装最新版本的 OpenShift CLI (
oc)。如需更多信息,请参阅配置:CLI 工具中的"使用 OpenShift CLI 入门"。 -
已安装最新版本的 IBM Cloud Command Line Interface (
ibmcloud)。如需更多信息,请参阅 IBM Cloud Docs 中的"开始使用 IBM Cloud CLI"。 您已配置了 IBM Cloud Object Storage。如需更多信息,请参阅 IBM Cloud Docs 中的"删除计划并创建实例"。
- 您有一个 IBM Cloud Platform 帐户。
- 您已订购了一个 IBM Cloud Object Storage 计划。
- 您已创建了 IBM Cloud Object Storage 实例。
流程
- 在 IBM Cloud 上,创建一个对象存储存储桶。
在 IBM Cloud 中,运行以下命令来创建用于连接到对象存储存储桶的服务密钥:
ibmcloud resource service-key-create <tempo_bucket> Writer \ --instance-name <tempo_bucket> --parameters '{"HMAC":true}'$ ibmcloud resource service-key-create <tempo_bucket> Writer \ --instance-name <tempo_bucket> --parameters '{"HMAC":true}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 IBM Cloud 中,运行以下命令来使用存储桶凭证创建 secret:
oc -n <namespace> create secret generic <ibm_cos_secret> \ --from-literal=bucket="<tempo_bucket>" \ --from-literal=endpoint="<ibm_bucket_endpoint>" \ --from-literal=access_key_id="<ibm_bucket_access_key>" \ --from-literal=access_key_secret="<ibm_bucket_secret_key>"
$ oc -n <namespace> create secret generic <ibm_cos_secret> \ --from-literal=bucket="<tempo_bucket>" \ --from-literal=endpoint="<ibm_bucket_endpoint>" \ --from-literal=access_key_id="<ibm_bucket_access_key>" \ --from-literal=access_key_secret="<ibm_bucket_secret_key>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 OpenShift Container Platform 中,使用键创建一个对象存储 secret,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 OpenShift Container Platform 中,设置
TempoStack自定义资源中的 storage 部分,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 包含 IBM Cloud Storage 访问和 secret 密钥的 secret 名称。
3.3. 配置权限和租户. 复制链接链接已复制到粘贴板!
在安装 TempoStack 或 TempoMonolithic 实例之前,您必须定义一个或多个租户并配置其读写访问权限。您可以使用 Kubernetes 基于角色的访问控制(RBAC)的集群角色和集群角色绑定来配置这样的授权设置。默认情况下,没有用户授予读取或写入权限。如需更多信息,请参阅"配置租户的读取权限"和"配置租户的写入权限"。
红帽构建的 OpenTelemetry 收集器可以使用带有 RBAC 的服务帐户来编写数据,将 trace 数据发送到 TempoStack 或 TempoMonolithic 实例。
| 组件 | Tempo Gateway 服务 | OpenShift OAuth | TokenReview API | SubjectAccessReview API |
|---|---|---|---|---|
| 身份验证 | X | X | X | |
| 授权 | X | X |
3.3.1. 为租户配置读取权限 复制链接链接已复制到粘贴板!
您可以从 web 控制台或命令行的 Administrator 视图为租户配置读取权限。
先决条件
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 -
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin角色的帐户登录。
流程
使用您选择的值添加到
TempoStack自定义资源 (CR),通过添加tenantName和tenantId参数来定义租户:TempoStackCR 中的租户示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将租户添加到具有读取(
get)权限的集群角色,以读取 trace。ClusterRole资源中的 RBAC 配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过为上一步中的集群角色定义集群角色绑定,授予经过身份验证的用户对 trace 数据具有读取权限。
ClusterRoleBinding资源中的 RBAC 配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 授予所有经过身份验证的用户的 trace 数据读取权限。
3.3.2. 为租户配置写入权限 复制链接链接已复制到粘贴板!
您可以从 web 控制台或命令行的 Administrator 视图为租户配置写入权限。
先决条件
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 -
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin角色的帐户登录。 - 已安装 OpenTelemetry Collector,并将其配置为使用具有权限的授权服务帐户。如需更多信息,请参阅 Red Hat build of OpenTelemetry 文档中的"自动创建所需的 RBAC 资源"。
流程
创建用于 OpenTelemetry Collector 的服务帐户。
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector namespace: <project_of_opentelemetry_collector_instance>
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector namespace: <project_of_opentelemetry_collector_instance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将租户添加到具有 write (
create)权限的集群角色中来编写 trace。ClusterRole资源中的 RBAC 配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过定义集群角色绑定来附加 OpenTelemetry Collector 服务帐户,为 OpenTelemetry Collector 授予写入权限。
ClusterRoleBinding资源中的 RBAC 配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上一步中创建的服务帐户。客户端在导出 trace 数据时使用它。
配置
OpenTelemetryCollector自定义资源,如下所示:-
将
bearertokenauth扩展和有效令牌添加到追踪管道服务。 -
在
otlp/otlphttpexporters 中添加租户名称,作为X-Scope-OrgID标头。 使用有效的证书颁发机构文件启用 TLS。
OpenTelemetry CR 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
3.4. 安装 TempoStack 实例 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台或命令行安装 TempoStack 实例。
3.4.1. 使用 Web 控制台安装 TempoStack 实例 复制链接链接已复制到粘贴板!
您可以从 Web 控制台的 Administrator 视图安装 TempoStack 实例。
先决条件
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 -
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin角色的帐户登录。 您已完成由支持的供应商设置所需的对象存储:Red Hat OpenShift Data Foundation, MinIO, Amazon S3, Azure Blob Storage, Google Cloud Storage。如需更多信息,请参阅"对象存储设置"。
警告对象存储是必需的,它没有包含在 Distributed Tracing Platform 中。在安装 Distributed Tracing Platform (Tempo) 前,您必须通过受支持的供应商选择和设置对象存储。
- 您已定义一个或多个租户,并配置了读写权限。如需更多信息,请参阅"配置租户的读取权限"和"配置租户的写入权限"。
流程
-
前往 Home → Projects → Create Project,为后续步骤中创建的
TempoStack实例创建一个您选择的允许项目。不允许以openshift-前缀开头的项目名称。 进入 Workloads → Secrets → Create → From YAML,在您为
TempoStack实例创建的项目中为您的对象存储存储桶创建一个 secret。如需更多信息,请参阅"对象存储设置"。Amazon S3 和 MinIO 存储的 secret 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
TempoStack实例。注意您可以在同一集群上的不同项目中创建多个
TempoStack实例。- 进入 Operators → Installed Operators。
- 选择 TempoStack → Create TempoStack → YAML view。
在 YAML 视图中,自定义
TempoStack自定义资源(CR):AWS S3 和 MinIO 存储和两个租户的
TempoStackCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此 CR 创建一个
TempoStack部署,它被配置为通过 HTTP 和 OpenTelemetry 协议(OTLP)接收 Jaeger Thrift。 - 2
- 为
TempoStack部署选择的项目。不允许以openshift-前缀开头的项目名称。 - 3
- 红帽只支持 Red Hat OpenShift distributed Tracing Platform 文档中的提供的自定义资源选项。
- 4
- 指定用于存储 trace 的存储。
- 5
- 您在第 2 步中创建的 secret,用于作为其中一个先决条件设置的对象存储。
- 6
- secret 的
metadata部分中的name字段的值。例如:minio。 - 7
- 可接受的值是
azure(Azure Blob Storage),gcs(Google Cloud Storage)和s3(Amazon S3, MinIO, 或 Red Hat OpenShift Data Foundation)。例如:s3。 - 8
- Tempo Write-Ahead Logging (WAL) 的持久性卷声明的大小。默认值为
10Gi。例如:1Gi。 - 9
- 可选。
- 10
- 该值必须是
openshift。 - 11
- 租户列表。
- 12
- 租户名称,用作
X-Scope-OrgIdHTTP 标头的值。 - 13
- 租户的唯一标识符。在
TempoStack部署的生命周期内必须是唯一的。Distributed Tracing Platform 使用此 ID 为对象存储中的对象添加前缀。您可以重复使用 UUID 或tempoName字段的值。 - 14
- 启用执行身份验证和授权的网关。
- 15
- 公开 Jaeger UI,它通过路由
http://<gateway_ingress>/api/traces/v1/<tenant_name>/search对数据进行视觉化。
- 选择 Create。
验证
-
使用 Project: 下拉列表选择
TempoStack实例的项目。 -
进入 Operators → Installed Operators,以验证
TempoStack实例的 Status 是否为 Condition: Ready。 -
进入 Workloads → Pods,以验证
TempoStack实例的所有组件 pod 都在运行。 访问 Tempo 控制台:
-
进入 Networking → Routes 和 Ctrl+F,以搜索
tempo。 在 Location 列中,打开 URL 以访问 Tempo 控制台。
注意Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。
-
进入 Networking → Routes 和 Ctrl+F,以搜索
3.4.2. 使用 CLI 安装 TempoStack 实例 复制链接链接已复制到粘贴板!
您可以从命令行安装 TempoStack 实例。
先决条件
集群管理员具有
cluster-admin角色的活跃 OpenShift CLI (oc) 会话。提示-
确保您的 OpenShift CLI (
oc) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。 运行
oc login命令:oc login --username=<your_username>
$ oc login --username=<your_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
确保您的 OpenShift CLI (
您已完成由支持的供应商设置所需的对象存储:Red Hat OpenShift Data Foundation, MinIO, Amazon S3, Azure Blob Storage, Google Cloud Storage。如需更多信息,请参阅"对象存储设置"。
警告对象存储是必需的,它没有包含在 Distributed Tracing Platform 中。在安装 Distributed Tracing Platform (Tempo) 前,您必须通过受支持的供应商选择和设置对象存储。
- 您已定义一个或多个租户,并配置了读写权限。如需更多信息,请参阅"配置租户的读取权限"和"配置租户的写入权限"。
流程
运行以下命令,为您要在后续步骤中创建的
TempoStack实例创建您选择的允许项目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 不允许以
openshift-前缀开头的项目名称。
在您为
TempoStack实例创建的项目中,运行以下命令来为您的对象存储桶创建一个 secret:oc apply -f - << EOF <object_storage_secret> EOF
$ oc apply -f - << EOF <object_storage_secret> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅"对象存储设置"。
Amazon S3 和 MinIO 存储的 secret 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您为它创建的项目中创建
TempoStack实例:注意您可以在同一集群上的不同项目中创建多个
TempoStack实例。自定义
TempoStack自定义资源(CR):AWS S3 和 MinIO 存储和两个租户的
TempoStackCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此 CR 创建一个
TempoStack部署,它被配置为通过 HTTP 和 OpenTelemetry 协议(OTLP)接收 Jaeger Thrift。 - 2
- 为
TempoStack部署选择的项目。不允许以openshift-前缀开头的项目名称。 - 3
- 红帽只支持 Red Hat OpenShift distributed Tracing Platform 文档中的提供的自定义资源选项。
- 4
- 指定用于存储 trace 的存储。
- 5
- 您在第 2 步中创建的 secret,用于作为其中一个先决条件设置的对象存储。
- 6
- secret 的
metadata部分中的name字段的值。例如:minio。 - 7
- 可接受的值是
azure(Azure Blob Storage),gcs(Google Cloud Storage)和s3(Amazon S3, MinIO, 或 Red Hat OpenShift Data Foundation)。例如:s3。 - 8
- Tempo Write-Ahead Logging (WAL) 的持久性卷声明的大小。默认值为
10Gi。例如:1Gi。 - 9
- 可选。
- 10
- 该值必须是
openshift。 - 11
- 租户列表。
- 12
- 租户名称,用作
X-Scope-OrgIdHTTP 标头的值。 - 13
- 租户的唯一标识符。在
TempoStack部署的生命周期内必须是唯一的。Distributed Tracing Platform 使用此 ID 为对象存储中的对象添加前缀。您可以重复使用 UUID 或tempoName字段的值。 - 14
- 启用执行身份验证和授权的网关。
- 15
- 公开 Jaeger UI,它通过路由
http://<gateway_ingress>/api/traces/v1/<tenant_name>/search对数据进行视觉化。
运行以下命令来应用自定义 CR:
oc apply -f - << EOF <tempostack_cr> EOF
$ oc apply -f - << EOF <tempostack_cr> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证所有
TempoStackcomponents的状态是否为Running,并且conditions为type: Ready:oc get tempostacks.tempo.grafana.com simplest -o yaml
$ oc get tempostacks.tempo.grafana.com simplest -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证所有
TempoStack组件 pod 是否都在运行:oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 访问 Tempo 控制台:
运行以下命令来查询路由详情:
oc get route
$ oc get routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在网页浏览器中打开
https://<route_from_previous_step>。注意Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。
3.5. 安装 TempoMonolithic 实例 复制链接链接已复制到粘贴板!
TempoMonolithic 实例只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以使用 Web 控制台或命令行安装 TempoMonolithic 实例。
TempoMonolithic 自定义资源(CR) 以单体模式创建 Tempo 部署。Tempo 部署的所有组件(如紧凑器、经销商、ingester、querier 和查询前端)都包含在一个容器中。
TempoMonolithic 实例支持存储 trace in-memory storage、持久性卷或对象存储。
在单体模式中进行临时部署是小型部署、演示和测试的首选方式。
Tempo 的单体部署无法水平扩展。如果您需要水平扩展,请在微服务模式中将 TempoStack CR 用于 Tempo 部署。
3.5.1. 使用 Web 控制台安装 TempoMonolithic 实例 复制链接链接已复制到粘贴板!
TempoMonolithic 实例只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以从 Web 控制台的 Administrator 视图安装 TempoMonolithic 实例。
先决条件
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 -
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin角色的帐户登录。 - 您已定义一个或多个租户,并配置了读写权限。如需更多信息,请参阅"配置租户的读取权限"和"配置租户的写入权限"。
流程
-
前往 Home → Projects → Create Project,为后续步骤中创建的
TempoMonolithic实例创建您选择的允许项目。不允许以openshift-前缀开头的项目名称。 决定用于存储 trace 的存储类型:内存中存储、持久性卷或对象存储。
重要对象存储不包括在 Distributed Tracing Platform 中,需要由受支持的供应商设置对象存储: Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure Blob Storage 或 Google Cloud Storage。
另外,选择对象存储需要在您为
TempoMonolithic实例创建的项目中为您的对象存储桶创建一个 secret。您可以在 Workloads → Secrets → Create → From YAML 中执行此操作。如需更多信息,请参阅"对象存储设置"。
Amazon S3 和 MinIO 存储的 secret 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
TempoMonolithic实例:注意您可以在同一集群上的不同项目中创建多个
TempoMonolithic实例。- 进入 Operators → Installed Operators。
- 选择 TempoMonolithic → Create TempoMonolithic → YAML view。
在 YAML 视图中,自定义
TempoMonolithic自定义资源 (CR)。TempoMonolithicCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此 CR 使用 OTLP 协议中的 trace ingestion 创建一个
TempoMonolithic部署。 - 2
- 为
TempoMonolithic部署选择的项目。不允许以openshift-前缀开头的项目名称。 - 3
- 红帽只支持 Red Hat OpenShift distributed Tracing Platform 文档中的提供的自定义资源选项。
- 4
- 指定用于存储 trace 的存储。
- 5
- 用于存储 trace 的存储类型:内存存储、持久性卷或对象存储。持久性卷的值是
pv。对象存储接受的值是s3、gcs或azure,具体取决于使用的对象存储类型。tmpfs内存中存储的默认值为memory,它仅适用于开发、测试、演示和概念验证环境,因为在 pod 关闭时数据不会被保留。 - 6
- 内存大小:对于内存存储,这意味着
tmpfs卷的大小,默认值为2Gi。对于持久性卷,这意味着持久性卷声明的大小,默认值为10Gi。对于对象存储,这意味着 Tempo Write-Ahead Logging (WAL)的持久性卷声明的大小,默认值为10Gi。 - 7
- 可选: 对于对象存储,对象存储的类型。接受的值包括
s3、gcs和azure,具体取决于使用的对象存储类型。 - 8
- 可选: 对于对象存储,存储 secret 的
metadata中的name值。存储 secret 必须与TempoMonolithic实例位于同一个命名空间中,并包含 "Table 1 中指定的字段。"Object storage setup" 部分中所需的 secret 参数"。 - 9
- 可选。
- 10
- 可选:包含 CA 证书的
ConfigMap对象的名称。 - 11
- 公开 Jaeger UI,它通过路由
http://<gateway_ingress>/api/traces/v1/<tenant_name>/search对数据进行视觉化。 - 12
- 启用为 Jaeger UI 创建路由。
- 13
- 可选。
- 14
- 列出租户。
- 15
- 租户名称,用作
X-Scope-OrgIdHTTP 标头的值。 - 16
- 租户的唯一标识符。在
TempoMonolithic部署的整个生命周期内必须是唯一的。此 ID 将作为前缀添加到对象存储中的对象。您可以重复使用 UUID 或tempoName字段的值。
- 选择 Create。
验证
-
使用 Project: 下拉列表选择
TempoMonolithic实例的项目。 -
进入 Operators → Installed Operators,以验证
TempoMonolithic实例的 Status 是否为 Condition: Ready。 -
进入 Workloads → Pods,验证
TempoMonolithic实例的 pod 是否正在运行。 访问 Jaeger UI:
进入 Networking → Routes 和 Ctrl+F,以搜索
jaegerui。注意Jaeger UI 使用
tempo-<metadata_name_of_TempoMonolithic_CR>-jaegerui路由。- 在 Location 列中,打开 URL 以访问 Jaeger UI。
当
TempoMonolithic实例的 pod 就绪时,您可以将 trace 发送到tempo-<metadata_name_of_TempoMonolithic_CR>:4317(OTLP/gRPC) 和tempo-<metadata_name_of_TempoMonolithic_CR>:4318(OTLP/HTTP) 端点。Tempo API 位于集群中的
tempo-<metadata_name_of_TempoMonolithic_CR>:3200端点。
3.5.2. 使用 CLI 安装 TempoMonolithic 实例 复制链接链接已复制到粘贴板!
TempoMonolithic 实例只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以从命令行安装 TempoMonolithic 实例。
先决条件
集群管理员具有
cluster-admin角色的活跃 OpenShift CLI (oc) 会话。提示-
确保您的 OpenShift CLI (
oc) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。 运行
oc login命令:oc login --username=<your_username>
$ oc login --username=<your_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
确保您的 OpenShift CLI (
- 您已定义一个或多个租户,并配置了读写权限。如需更多信息,请参阅"配置租户的读取权限"和"配置租户的写入权限"。
流程
运行以下命令,为您要在后续步骤中创建的
TempoMonolithic实例创建您选择的允许项目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 不允许以
openshift-前缀开头的项目名称。
决定用于存储 trace 的存储类型:内存中存储、持久性卷或对象存储。
重要对象存储不包括在 Distributed Tracing Platform 中,需要由受支持的供应商设置对象存储: Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure Blob Storage 或 Google Cloud Storage。
另外,选择对象存储需要在您为
TempoMonolithic实例创建的项目中为您的对象存储桶创建一个 secret。您可以运行以下命令来完成此操作:oc apply -f - << EOF <object_storage_secret> EOF
$ oc apply -f - << EOF <object_storage_secret> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅"对象存储设置"。
Amazon S3 和 MinIO 存储的 secret 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您为它创建的项目中创建
TempoMonolithic实例。提示您可以在同一集群上的不同项目中创建多个
TempoMonolithic实例。自定义
TempoMonolithic自定义资源 (CR)。TempoMonolithicCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此 CR 使用 OTLP 协议中的 trace ingestion 创建一个
TempoMonolithic部署。 - 2
- 为
TempoMonolithic部署选择的项目。不允许以openshift-前缀开头的项目名称。 - 3
- 红帽只支持 Red Hat OpenShift distributed Tracing Platform 文档中的提供的自定义资源选项。
- 4
- 指定用于存储 trace 的存储。
- 5
- 用于存储 trace 的存储类型:内存存储、持久性卷或对象存储。持久性卷的值是
pv。对象存储接受的值是s3、gcs或azure,具体取决于使用的对象存储类型。tmpfs内存中存储的默认值为memory,它仅适用于开发、测试、演示和概念验证环境,因为在 pod 关闭时数据不会被保留。 - 6
- 内存大小:对于内存存储,这意味着
tmpfs卷的大小,默认值为2Gi。对于持久性卷,这意味着持久性卷声明的大小,默认值为10Gi。对于对象存储,这意味着 Tempo Write-Ahead Logging (WAL)的持久性卷声明的大小,默认值为10Gi。 - 7
- 可选: 对于对象存储,对象存储的类型。接受的值包括
s3、gcs和azure,具体取决于使用的对象存储类型。 - 8
- 可选: 对于对象存储,存储 secret 的
metadata中的name值。存储 secret 必须与TempoMonolithic实例位于同一个命名空间中,并包含 "Table 1 中指定的字段。"Object storage setup" 部分中所需的 secret 参数"。 - 9
- 可选。
- 10
- 可选:包含 CA 证书的
ConfigMap对象的名称。 - 11
- 公开 Jaeger UI,它通过路由
http://<gateway_ingress>/api/traces/v1/<tenant_name>/search对数据进行视觉化。 - 12
- 启用为 Jaeger UI 创建路由。
- 13
- 可选。
- 14
- 列出租户。
- 15
- 租户名称,用作
X-Scope-OrgIdHTTP 标头的值。 - 16
- 租户的唯一标识符。在
TempoMonolithic部署的整个生命周期内必须是唯一的。此 ID 将作为前缀添加到对象存储中的对象。您可以重复使用 UUID 或tempoName字段的值。
运行以下命令来应用自定义 CR:
oc apply -f - << EOF <tempomonolithic_cr> EOF
$ oc apply -f - << EOF <tempomonolithic_cr> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证所有
TempoMonolithiccomponents的状态是否为Running,并且conditions为type: Ready:oc get tempomonolithic.tempo.grafana.com <metadata_name_of_tempomonolithic_cr> -o yaml
$ oc get tempomonolithic.tempo.grafana.com <metadata_name_of_tempomonolithic_cr> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,以验证
TempoMonolithic实例的 pod 是否正在运行:oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 访问 Jaeger UI:
运行以下命令,查询
tempo-<metadata_name_of_tempomonolithic_cr>-jaegerui路由的路由详情:oc get route
$ oc get routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在网页浏览器中打开
https://<route_from_previous_step>。
当
TempoMonolithic实例的 pod 就绪时,您可以将 trace 发送到tempo-<metadata_name_of_tempomonolithic_cr>:4317(OTLP/gRPC) 和tempo-<metadata_name_of_tempomonolithic_cr>:4318(OTLP/HTTP) 端点。Tempo API 位于集群中的
tempo-<metadata_name_of_tempomonolithic_cr>:3200端点。
第 4 章 配置 Distributed Tracing Platform 复制链接链接已复制到粘贴板!
Tempo Operator 使用自定义资源定义(CRD)文件来定义创建和部署 Distributed Tracing Platform 资源的架构和配置设置。您可以安装默认配置或修改该文件。
4.1. 配置后端存储 复制链接链接已复制到粘贴板!
有关配置后端存储的详情,请参考 了解持久性存储 以及您选择的存储选项的适当配置主题。
4.2. TempoStack 配置参数简介 复制链接链接已复制到粘贴板!
TempoStack 自定义资源(CR)定义用于创建 Distributed Tracing Platform 资源的架构和设置。您可以根据您的业务需求,修改这些参数以自定义您的实现。
TempoStack CR 示例
- 1
- 创建对象时要使用的 API 版本。
- 2
- 定义要创建的 Kubernetes 对象的种类。
- 3
- 唯一标识对象的数据,包括
name字符串,UID, 和可选的namespace。OpenShift Container Platform 会自动生成UID并使用创建对象的项目名称完成namespace。 - 4
- TempoStack 实例的名称。
- 5
- 包含 TempoStack 实例的所有配置参数。当需要一个适用于所有 Tempo 组件的通用定义时,在
spec部分中定义它。当定义只与单个组件相关时,将其放在spec.template.<component>部分中。 - 6
- 存储在实例部署中指定。有关实例的存储选项的信息,请参阅安装页。
- 7
- 为 Tempo 容器定义计算资源。
- 8
- 在接受范围之前,必须确认经销商中的数据数量的整数值。
- 9
- 保留 trace 的配置选项。默认值为
48h。 - 10
- Tempo
distributor组件的配置选项。 - 11
- Tempo
ingester组件的配置选项。 - 12
- Tempo
compactor组件的配置选项。 - 13
- Tempo
querier组件的配置选项。 - 14
- Tempo
query-frontend组件的配置选项。 - 15
- Tempo
gateway组件的配置选项。 - 16
- 摄入(ingestion)和查询(query)率限制。
- 17
- 定义摄入率限制。
- 18
- 定义查询率限制。
- 19
- 配置操作对象以处理遥测数据。
- 20
- 配置搜索功能。
- 21
- 定义此 CR 是否由 Operator 管理。默认值为
managed。
| 参数 | 描述 | 值 | 默认值 |
|---|---|---|---|
|
| 创建对象时要使用的 API 版本。 |
|
|
|
| 定义要创建的 Kubernetes 对象的种类。 |
| |
|
|
唯一标识对象的数据,包括 |
OpenShift Container Platform 会自动生成 | |
|
| 对象的名称。 | TempoStack 实例的名称。 |
|
|
| 要创建的对象的规格。 |
包含 TempoStack 实例的所有配置参数。当需要所有 Tempo 组件的通用定义时,会在 | N/A |
|
| 分配给 TempoStack 实例的资源。 | ||
|
| ingester PVC 的存储大小。 | ||
|
| 复制因素的配置。 | ||
|
| 保留 trace 的配置选项。 | ||
|
| 定义存储的配置选项。 | ||
|
| Tempo distributor 的配置选项。 | ||
|
| Tempo ingester 的配置选项。 | ||
|
| Tempo compactor 的配置选项。 | ||
|
| Tempo querier 的配置选项。 | ||
|
| Tempo 查询前端的配置选项。 | ||
|
| Tempo 网关的配置选项。 |
4.3. 查询配置选项 复制链接链接已复制到粘贴板!
Distributed Tracing Platform 的两个组件,即 querier 和 query frontend,用于管理查询。您可以配置这两个组件。
querier 组件在 ingesters 或后端存储中查找请求的 trace ID。根据设置的参数,querier 组件可以查询 ingesters,并从后端拉取 bloom 或索引,以便在对象存储中搜索块。querier 组件在 GET /querier/api/traces/<trace_id> 公开 HTTP 端点,但不预期直接使用。查询必须发送到查询前端。
| 参数 | 描述 | 值 |
|---|---|---|
|
| node-selection 约束的简单形式。 | 类型:对象 |
|
| 为组件创建的副本数。 | 类型:整数;格式: int32 |
|
| 特定于组件的 pod 容限。 | 类型:数组 |
查询前端组件负责为传入的查询对搜索空间进行分片。查询前端通过简单的 HTTP 端点公开 trace:GET /api/traces/<trace_id>。在内部,查询 frontend 组件将 blockID 空间分成可配置的分片数量,然后对这些请求进行队列。querier 组件通过流 gRPC 连接连接到查询 frontend 组件,以处理这些分片查询。
| 参数 | 描述 | 值 |
|---|---|---|
|
| 配置查询前端组件。 | 类型:对象 |
|
| 节点选择约束的简单形式。 | 类型:对象 |
|
| 为查询前端组件创建的副本数。 | 类型:整数;格式: int32 |
|
| 特定于查询前端组件的 Pod 容限。 | 类型:数组 |
|
| 特定于 Jaeger Query 组件的选项。 | 类型:对象 |
|
|
| 类型:布尔值 |
|
| Jaeger Query ingress 的选项。 | 类型:对象 |
|
| ingress 对象的注解。 | 类型:对象 |
|
| ingress 对象的主机名。 | 类型:字符串 |
|
| IngressClass 集群资源的名称。定义哪个入口控制器提供此入口资源。 | 类型:字符串 |
|
| OpenShift 路由的选项。 | 类型:对象 |
|
|
终止类型。默认为 | 类型:字符串 (enum: insecure, edge, passthrough, reencrypt) |
|
|
Jaeger Query UI 的 ingress 类型。支持的类型有 | 类型:字符串 (enum: ingress, route) |
|
| monitor 选项卡配置。 | 类型:对象 |
|
|
在 Jaeger 控制台中启用 monitor 选项卡。必须配置 | 类型:布尔值 |
|
|
包含 span rate、error 和 duration (RED) 指标的 Prometheus 实例的端点。例如, | 类型:字符串 |
TempoStack CR 中的查询前端组件的配置示例
4.4. 配置 UI 复制链接链接已复制到粘贴板!
您可以使用 Cluster Observability Operator (COO)的分布式追踪 UI 插件作为 Red Hat OpenShift distributed Tracing Platform 的用户界面(UI)。有关安装和使用分布式追踪 UI 插件的更多信息,请参阅 Cluster Observability Operator 中的"分发追踪 UI 插件"。
4.5. 在 Jaeger UI 中配置 Monitor 选项卡 复制链接链接已复制到粘贴板!
您可以在 OpenShift Container Platform Web 控制台的 Monitor 选项卡中通过 Jaeger Console 提取请求率、错误和持续时间(RED)指标,并通过 Jaeger Console 进行视觉化。指标来自 OpenTelemetry Collector 中的 span,由 Prometheus 从 Collector 中提取,您可以在用户工作负载监控堆栈中部署。Jaeger UI 从 Prometheus 端点查询这些指标,并视觉化它们。
先决条件
- 您已为 Distributed Tracing Platform 配置了权限和租户。如需更多信息,请参阅"配置权限和租户"。
流程
在
OpenTelemetry Collector的 OpenTelemetryCollector 自定义资源中,启用 Spanmetrics Connector (spanmetrics),它将从 trace 派生指标,并以 Prometheus 格式导出指标。span RED 的
OpenTelemetryCollector自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
TempoStack自定义资源中,启用 Monitor 选项卡,并将 Prometheus 端点设置为 Thanos querier 服务,以从用户定义的监控堆栈查询数据。带有启用 Monitor 选项卡的
TempoStack自定义资源示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:使用带有警报规则的
spanmetrics连接器生成的 span RED 指标。例如,对于有关较慢的服务或定义服务级别目标(SLO)的警报,连接器会创建一个duration_bucket直方图和调用计数器指标。这些指标具有标识服务、API 名称、操作类型和其他属性的标签。Expand 表 4.4. 在 spanmetrics 连接器中创建的指标标签 标签 描述 值 service_name由
otel_service_name环境变量设置的服务名称。frontendspan_name操作的名称。
-
/ -
/customer
span_kind标识服务器、客户端、消息传递或内部操作。
-
SPAN_KIND_SERVER -
SPAN_KIND_CLIENT -
SPAN_KIND_PRODUCER -
SPAN_KIND_CONSUMER -
SPAN_KIND_INTERNAL
PrometheusRule自定义资源示例,当前端服务于 2000ms 内没有提供 95% 时 SLO 定义警报规则Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 这个表达式检查,是否 95% 的前端服务器响应时间值低于 2000 ms。时间范围 (
[5m]) 必须至少是提取间隔的四倍,并且足以适应指标的变化。
-
4.6. 配置接收器 TLS 复制链接链接已复制到粘贴板!
TempoStack 或 TempoMonolithic 实例的自定义资源支持使用用户提供的证书或 OpenShift 的服务证书为接收器配置 TLS。
4.6.1. TempoStack 实例的接收器 TLS 配置 复制链接链接已复制到粘贴板!
您可以在 secret 中提供 TLS 证书,或使用 OpenShift Container Platform 生成的服务证书。
要在 secret 中提供 TLS 证书,请在
TempoStack自定义资源中配置它。注意启用的 Tempo Gateway 不支持此功能。
TLS 用于接收器并在 secret 中使用用户提供的证书
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以使用 OpenShift Container Platform 生成的服务证书。
注意此功能不支持 mutual TLS 身份验证 (mTLS)。
用于接收器的 TLS 并使用 OpenShift Container Platform 生成的服务证书
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在 Tempo Distributor 为 TLS 进行足够配置。
4.6.2. TempoMonolithic 实例的接收器 TLS 配置 复制链接链接已复制到粘贴板!
您可以在 secret 中提供 TLS 证书,或使用 OpenShift Container Platform 生成的服务证书。
要在 secret 中提供 TLS 证书,请在
TempoMonolithic自定义资源中配置它。注意启用的 Tempo Gateway 不支持此功能。
TLS 用于接收器并在 secret 中使用用户提供的证书
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以使用 OpenShift Container Platform 生成的服务证书。
注意此功能不支持 mutual TLS 身份验证 (mTLS)。
用于接收器的 TLS 并使用 OpenShift Container Platform 生成的服务证书
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在 Tempo Distributor 为 TLS 的最小配置。
4.7. 配置查询 RBAC 复制链接链接已复制到粘贴板!
作为管理员,您可以设置查询基于角色的访问控制(RBAC),以便根据您授予其权限的命名空间过滤用户的 span 属性。
当您启用查询 RBAC 时,用户仍然可以从所有命名空间访问 trace,service.name 和 k8s.namespace.name 属性对所有用户可见。
先决条件
集群管理员具有
cluster-admin角色的活跃 OpenShift CLI (oc) 会话。提示-
确保您的 OpenShift CLI (
oc) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。 运行
oc login:oc login --username=<your_username>
$ oc login --username=<your_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
确保您的 OpenShift CLI (
流程
在
TempoStack自定义资源(CR) 中启用多租户和查询 RBAC,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建集群角色和集群角色绑定,为目标用户授予访问您在
TempoStackCR 中指定的租户的权限,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为目标用户授予项目读取属性的权限。您可以运行以下命令来完成此操作:
oc adm policy add-role-to-user view <username> -n <project>
$ oc adm policy add-role-to-user view <username> -n <project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8. 使用污点和容限 复制链接链接已复制到粘贴板!
要将 TempoStack pod 调度到专用节点上,请参阅 如何在 OpenShift 4 中使用 nodeSelector 和 tolerations 在 infra 节点上部署不同的 TempoStack 组件。
4.9. 配置监控和警报 复制链接链接已复制到粘贴板!
Tempo Operator 支持每个 TempoStack 组件的监控和警报,如经销商、ingester 等,并公开有关 Operator 本身的升级和操作指标。
4.9.1. 配置 TempoStack 指标和警报 复制链接链接已复制到粘贴板!
您可以启用 TempoStack 实例的指标和警报。
先决条件
- 在集群中启用对用户定义的项目的监控。
流程
要启用 TempoStack 实例的指标,请将
spec.observability.metrics.createServiceMonitors字段设置为true:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为 TempoStack 实例启用警报,请将
spec.observability.metrics.createPrometheusRules字段设置为true:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
您可以使用 Web 控制台的 Administrator 视图来验证配置是否成功:
-
进入 Observe → Targets,过滤 Source: User, 检查 ServiceMonitors(格式为
tempo-<instance_name>-<component>)的状态为 Up。 - 要验证警报是否已正确设置,请转至 Observe → Alerting → Alerting rules,过滤 Source: User,并检查 TempoStack 实例组件的 Alert 规则 是否可用。
4.9.2. 配置 Tempo Operator 指标和警报 复制链接链接已复制到粘贴板!
从 web 控制台安装 Tempo Operator 时,您可以选择 Enable Operator recommended cluster monitoring on this Namespace 复选框,它允许创建 Tempo Operator 的指标和警报。
如果在安装过程中没有选择复选框,您可以在安装 Tempo Operator 后手动启用指标和警报。
流程
-
在安装了 Tempo Operator 的项目中添加
openshift.io/cluster-monitoring: "true"标签,默认为openshift-tempo-operator。
验证
您可以使用 Web 控制台的 Administrator 视图来验证配置是否成功:
-
进入 Observe → Targets,过滤 Source: Platform,并搜索
tempo-operator,它必须具有 Up 状态。 - 要验证警报是否已正确设置,请转至 Observe → Alerting → Alerting rules,过滤 Source: Platform,再找到 Tempo Operator 的 Alert 规则。
第 5 章 Distributed Tracing Platform 故障排除 复制链接链接已复制到粘贴板!
您可以使用各种故障排除方法诊断和修复 TempoStack 或 TempoMonolithic 实例中的问题。
5.1. 从命令行收集诊断数据 复制链接链接已复制到粘贴板!
在提交问题单时,向红帽提供包含有关集群的诊断信息会很有帮助。您可以使用 oc adm must-gather 工具为各种类型的资源收集诊断数据,如 TempoStack 或 TempoMonolithic,以及创建的资源,如 Deployment、Pod 或 ConfigMap。oc adm must-gather 工具会创建一个收集此数据的新 pod。
流程
从您要保存收集的数据的目录中,运行
oc adm must-gather命令来收集数据:oc adm must-gather --image=ghcr.io/grafana/tempo-operator/must-gather -- \ /usr/bin/must-gather --operator-namespace <operator_namespace>
$ oc adm must-gather --image=ghcr.io/grafana/tempo-operator/must-gather -- \ /usr/bin/must-gather --operator-namespace <operator_namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 安装 Operator 的默认命名空间是
openshift-tempo-operator。
验证
- 验证新目录是否已创建并包含收集的数据。
第 6 章 升级 复制链接链接已复制到粘贴板!
对于版本升级,Tempo Operator 使用 Operator Lifecycle Manager (OLM),用于控制集群中 Operator 的安装、升级和基于角色的访问控制(RBAC)。
OLM 默认在 OpenShift Container Platform 中运行。OLM 可以查询可用的 Operator 以及已安装的 Operator 的升级。
当 Tempo Operator 升级到新版本时,它会扫描它管理的 TempoStack 实例,并将其升级到与 Operator 新版本对应的版本。
第 7 章 删除 Distributed Tracing Platform 复制链接链接已复制到粘贴板!
从 OpenShift Container Platform 集群中删除 Red Hat OpenShift distributed Tracing Platform 的步骤如下:
- 关闭所有 Distributed Tracing Platform pod。
- 删除任何 TempoStack 实例。
- 删除 Tempo Operator。
7.1. 使用 Web 控制台删除 复制链接链接已复制到粘贴板!
您可以在 web 控制台的 Administrator 视图中删除 TempoStack 实例。
先决条件
-
以具有
cluster-admin角色的用户身份登录到 OpenShift Container Platform Web 控制台。 -
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin角色的帐户登录。
流程
- 进入 Operators → Installed Operators → Tempo Operator → TempoStack。
-
要删除 TempoStack 实例,请选择
→ Delete TempoStack → Delete。
- 可选:删除 Tempo Operator。
7.2. 使用 CLI 删除 复制链接链接已复制到粘贴板!
您可以在命令行中删除 TempoStack 实例。
先决条件
集群管理员具有
cluster-admin角色的活跃 OpenShift CLI (oc) 会话。提示-
确保您的 OpenShift CLI (
oc) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。 运行
oc login:oc login --username=<your_username>
$ oc login --username=<your_username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
确保您的 OpenShift CLI (
流程
运行以下命令,获取 TempoStack 实例的名称:
oc get deployments -n <project_of_tempostack_instance>
$ oc get deployments -n <project_of_tempostack_instance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除 TempoStack 实例:
oc delete tempo <tempostack_instance_name> -n <project_of_tempostack_instance>
$ oc delete tempo <tempostack_instance_name> -n <project_of_tempostack_instance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:删除 Tempo Operator。
验证
运行以下命令,以验证输出中没有找到 TempoStack 实例,这表示其删除成功:
oc get deployments -n <project_of_tempostack_instance>
$ oc get deployments -n <project_of_tempostack_instance>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.