![]() |
高兴的四季豆 · 合肥将引进大熊猫? ...· 3 月前 · |
![]() |
才高八斗的冰棍 · 探索分布式光伏参与绿电及碳市场的新业态· 3 月前 · |
![]() |
玩足球的白开水 · 2021年可用、好用、值得推荐的磁力搜索工具 ...· 8 月前 · |
![]() |
无聊的葡萄酒 · 也记一次性能优化:LINQ to ...· 1 年前 · |
![]() |
叛逆的夕阳 · 中国通史100集-80、土木堡之变 - 知乎· 1 年前 · |
摘要
作为服务所有者,您可以使用分布式追踪来检测您的服务,以收集与服务架构相关的信息。您可以使用 Red Hat OpenShift distributed tracing 平台来监控、网络性能分析,并对现代、云原生的微服务应用程序中组件间的交互进行故障排除。 使用分布式追踪平台,您可以执行以下功能: 监控分布式事务 优化性能和延迟时间 执行根原因分析 您可以将分布式追踪平台 与 红帽构建的 OpenTelemetry 结合使用 。 此 Red Hat OpenShift distributed tracing 平台发行版本包括 Red Hat OpenShift distributed tracing Platform (Tempo) 和已弃用的 Red Hat OpenShift distributed tracing 平台 (Jaeger)。
此发行版本解决了 CVE-2024-25062 。
Red Hat OpenShift distributed tracing Platform (Tempo) 通过 Tempo Operator 提供。
当前存在一个已知问题:
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
Red Hat OpenShift distributed tracing Platform (Jaeger) 通过 Red Hat OpenShift distributed tracing Platform Operator 提供。 Jaeger 不使用经 FIPS 验证的加密模块。
当前存在一个已知问题: 目前,不支持 Apache Spark。 目前,IBM Z 和 IBM Power 架构不支持通过 AMQ/Kafka 进行流部署。
如果您在执行本文档所述的某个流程或 OpenShift Container Platform 时遇到问题,请访问 红帽客户门户网站 。 通过红帽客户门户网站: 搜索或者浏览红帽知识库,了解与红帽产品相关的文章和解决方案。 提交问题单给红帽支持。 访问其他产品文档。 要识别集群中的问题,您可以在 OpenShift Cluster Manager 中使用 Insights。Insights 提供了问题的详细信息,并在有可用的情况下,提供了如何解决问题的信息。 如果您对本文档有任何改进建议,或发现了任何错误,请为相关文档组件提交 JIRA 问题 。请提供具体详情,如章节名称和 OpenShift Container Platform 版本。
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息 。
作为服务所有者,您可以使用分布式追踪来检测您的服务,以收集与服务架构相关的信息。您可以使用 Red Hat OpenShift distributed tracing 平台来监控、网络性能分析,并对现代、云原生的微服务应用程序中组件间的交互进行故障排除。 使用分布式追踪平台,您可以执行以下功能: 监控分布式事务 优化性能和延迟时间 执行根原因分析 您可以将分布式追踪平台 与 红帽构建的 OpenTelemetry 结合使用 。
此 Red Hat OpenShift distributed tracing 平台发行版本包括 Red Hat OpenShift distributed tracing Platform (Tempo) 和已弃用的 Red Hat OpenShift distributed tracing 平台 (Jaeger)。
Red Hat OpenShift distributed tracing Platform (Tempo) 通过 Tempo Operator 提供。
这个版本包括以下技术预览功能: 支持 Tempo monolithic 部署。 Tempo monolithic 部署只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅 技术预览功能支持范围 。
这个版本引进了以下改进: Red Hat OpenShift distributed tracing Platform (Tempo) 3.2 基于开源 Grafana Tempo 2.4.1。 允许覆盖每个组件的资源。
在这个版本中引进了以下程序错误修复:
在此次更新之前,Jaeger UI 只显示在前 15 分钟内发送 trace 的服务。在这个版本中,可以使用以下字段来配置服务和操作名称的可用性:
spec.template.queryFrontend.jaegerQuery.servicesQueryDuration
。(
TRACING-3139
)
在此次更新之前,在搜索大型 trace 后,
query-frontend
pod 可能会在内存不足 (OOM) 时停止。在这个版本中,可以设置资源限值以防止出现这个问题。(
TRACING-4009
)
当前存在一个已知问题:
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
Red Hat OpenShift distributed tracing Platform (Jaeger) 通过 Red Hat OpenShift distributed tracing Platform Operator 提供。 Jaeger 不使用经 FIPS 验证的加密模块。
Red Hat OpenShift distributed tracing Platform (Jaeger) 3.2 支持与 OpenShift Elasticsearch Operator 5.6、5.7 和 5.8 一起使用。
在 Red Hat OpenShift distributed tracing Platform 3.2、Jaeger 和对 Elasticsearch 的支持仍被弃用,并计划在以后的发行版本中删除。红帽将在当前发行生命周期中为这些组件提供支持,并为严重的有高重要级别的 CVE 和程序错误提供修复,但不会再为这些组件提供功能增强。Tempo Operator 和红帽构建的 OpenTelemetry 是分布式追踪集合和存储的首选 Operator。用户需要采用 OpenTelemetry 和 Tempo 分布式追踪堆栈,因为它是要进一步增强的堆栈。 在 Red Hat OpenShift distributed tracing 平台 3.2 中,Jaeger 代理已弃用,计划在以下发行版本中删除。红帽将在当前发行生命周期中对 Jaeger 代理提供程序错误修正和支持,但 Jaeger 代理将不再获得改进,并将在以后被删除。Red Hat build of OpenTelemetry 提供的 OpenTelemetry Collector 是注入 trace 收集器代理的首选 Operator。
在这个版本中,对分布式追踪平台(Jaeger)引进了以下改进: Red Hat OpenShift distributed tracing Platform (Jaeger) 3.2 基于开源 Jaeger 版本 1.57.0。
当前存在一个已知问题: 目前,不支持 Apache Spark。 目前,IBM Z 和 IBM Power 架构不支持通过 AMQ/Kafka 进行流部署。
此 Red Hat OpenShift distributed tracing 平台发行版本包括 Red Hat OpenShift distributed tracing Platform (Tempo) 和已弃用的 Red Hat OpenShift distributed tracing 平台 (Jaeger)。
此发行版本解决了 CVE-2023-39326 的问题。
Red Hat OpenShift distributed tracing Platform (Tempo) 通过 Tempo Operator 提供。
当前已知的问题:
目前,当与 Tempo Operator 一起使用时,Jaeger UI 只显示在最后 15 分钟内发送了 trace 的服务。对于没有在最后 15 分钟内发送 trace 的服务,trace 仍然会被存储,但不会在 Jaeger UI 中显示。(
TRACING-3139
)
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
Red Hat OpenShift distributed tracing Platform (Jaeger) 通过 Red Hat OpenShift distributed tracing Platform Operator 提供。 Jaeger 不使用经 FIPS 验证的加密模块。
Red Hat OpenShift distributed tracing Platform (Jaeger) 3.1.1 支持与 OpenShift Elasticsearch Operator 5.6、5.7 和 5.8 一起使用。
在 Red Hat OpenShift distributed tracing Platform 3.1.1、Jaeger 和对 Elasticsearch 的支持仍被弃用,并计划在以后的发行版本中删除。红帽将在当前发行生命周期中对这些组件提供关键及以上的 CVE 程序错误修复和支持,但这些组件将不再获得功能增强。 在 Red Hat OpenShift distributed tracing 平台 3.1.1 中,由 Tempo Operator 提供的 Tempo,以及由红帽构建的 OpenTelemetry 提供的 OpenTelemetry Collector 是分布式追踪集合和存储的首选 Operator。OpenTelemetry 和 Tempo 分布式追踪堆栈供所有用户采用,因为这将进一步增强。
当前已知的问题: 目前,不支持 Apache Spark。 目前,IBM Z 和 IBM Power 架构不支持通过 AMQ/Kafka 进行流部署。
此 Red Hat OpenShift distributed tracing 平台发行版本包括 Red Hat OpenShift distributed tracing Platform (Tempo) 和已弃用的 Red Hat OpenShift distributed tracing 平台 (Jaeger)。
Red Hat OpenShift distributed tracing Platform (Tempo) 通过 Tempo Operator 提供。
在这个版本中,对分布式追踪平台(Tempo)引入了以下改进: Red Hat OpenShift distributed tracing Platform (Tempo) 3.1 基于开源 Grafana Tempo 2.3.1。 支持集群范围的代理环境。 支持 TraceQL 到网关组件。
在这个版本中,为分布式追踪平台(Tempo)引入了以下程序错误修复:
在此次更新之前,当使用 OpenShift Container Platform 4.15 中启用
monitorTab
创建 TempoStack 实例时,不会创建所需的
tempo-redmetrics-cluster-monitoring-view
ClusterRoleBinding。在这个版本中,当 Operator 部署到任意命名空间中时,通过为 monitor 选项卡修复 Operator RBAC 解决了这个问题。(
TRACING-3786
)
在此次更新之前,当在带有 IPv6 网络堆栈的 OpenShift Container Platform 集群上创建 TempoStack 实例时, compactor 和 ingestor pod 以
CrashLoopBackOff
状态运行,从而导致多个错误。这个版本支持 IPv6 集群。(
TRACING-3226
)
当前已知的问题:
目前,当与 Tempo Operator 一起使用时,Jaeger UI 只显示在最后 15 分钟内发送了 trace 的服务。对于没有在最后 15 分钟内发送 trace 的服务,trace 仍然会被存储,但不会在 Jaeger UI 中显示。(
TRACING-3139
)
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
Red Hat OpenShift distributed tracing Platform (Jaeger) 通过 Red Hat OpenShift distributed tracing Platform Operator 提供。 Jaeger 不使用经 FIPS 验证的加密模块。
Red Hat OpenShift distributed tracing Platform (Jaeger) 3.1 支持与 OpenShift Elasticsearch Operator 5.6、5.7 和 5.8 一起使用。
在 Red Hat OpenShift distributed tracing Platform 3.1、Jaeger 和对 Elasticsearch 的支持仍被弃用,并计划在以后的发行版本中删除。红帽将在当前发行生命周期中对这些组件提供关键及以上的 CVE 程序错误修复和支持,但这些组件将不再获得功能增强。 在 Red Hat OpenShift distributed tracing 平台 3.1 中,由 Tempo Operator 提供的 Tempo,以及由红帽构建的 OpenTelemetry 提供的 OpenTelemetry Collector 是分布式追踪集合和存储的首选 Operator。OpenTelemetry 和 Tempo 分布式追踪堆栈供所有用户采用,因为这将进一步增强。
在这个版本中,对分布式追踪平台(Jaeger)引进了以下改进: Red Hat OpenShift distributed tracing Platform (Jaeger) 3.1 基于开源 Jaeger 版本 1.53.0。
在这个版本中,为分布式追踪平台(Jaeger)引入了以下程序错误修复:
在此次更新之前,
jager-query
pod 中的
jaeger-agent
容器的连接目标 URL 被 OpenShift Container Platform 4.13 中的另一个命名空间 URL 覆盖。这是因为
jaeger-operator
中的 sidecar 注入代码中的一个错误,从而导致非确定的
jaeger-agent
注入。在这个版本中,Operator 会优先选择与目标部署相同的命名空间中的 Jaeger 实例。(
TRACING-3722
)
当前已知的问题: 目前,不支持 Apache Spark。 目前,IBM Z 和 IBM Power 架构不支持通过 AMQ/Kafka 进行流部署。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.51.0 Red Hat OpenShift distributed tracing Platform (Tempo) Tempo 2.3.0 |
在 Red Hat OpenShift distributed tracing Platform 3.0、Jaeger 和对 Elasticsearch 的支持仍被弃用,并计划在以后的发行版本中删除。红帽将在当前发行生命周期中对这些组件提供关键及以上的 CVE 程序错误修复和支持,但这些组件将不再获得功能增强。 在 Red Hat OpenShift distributed tracing 平台 3.0 中,由 Tempo Operator 提供的 Tempo,以及由红帽构建的 OpenTelemetry 提供的 OpenTelemetry Collector 是分布式追踪集合和存储的首选 Operator。OpenTelemetry 和 Tempo 分布式追踪堆栈供所有用户采用,因为这将进一步增强。
在这个版本中,对分布式追踪平台(Jaeger)引进了以下改进: 支持 ARM 架构。 支持集群范围的代理环境。
在这个版本中,为分布式追踪平台(Jaeger)引入了以下程序错误修复:
在此次更新之前,Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 使用了与
relatedImages
以外的其他镜像。这会导致在启动
jaeger
pod 时在断开连接的网络环境中出现
ImagePullBackOff
错误,因为
oc adm catalog mirror
命令会镜像
relatedImages
中指定的镜像。在这个版本中,在使用
oc adm catalog mirror
CLI 命令时为断开连接的环境提供支持。(
TRACING-3546
)
当前存在一个已知问题: 目前,不支持 Apache Spark。 目前,IBM Z 和 IBM Power 架构不支持通过 AMQ/Kafka 进行流部署。
在这个版本中,对分布式追踪平台(Tempo)引入了以下改进: 支持 ARM 架构。 支持 span request count, duration, 和 error count (RED)指标。在 Jaeger 控制台中,可以在作为 Tempo 的一部分或 Observe 菜单的 web 控制台中视觉化指标。
在这个版本中,为分布式追踪平台(Tempo)引入了以下程序错误修复:
在此次更新之前,
TempoStack
CRD 不接受自定义 CA 证书,尽管选项可以选择 CA 证书。在这个版本中,对连接到对象存储的自定义 TLS CA 选项的支持。(
TRACING-3462
)
在此次更新之前,当将 Red Hat OpenShift distributed tracing Platform operator 镜像镜像到断开连接的集群中使用的镜像 registry 时,
tempo
,
tempo-gateway
,
opa-openshift
, 和
tempo-query
的相关 Operator 镜像没有被镜像(mirror)。在这个版本中,在使用
oc adm catalog mirror
CLI 命令时对断开连接的环境的支持。(
TRACING-3523
)
在此次更新之前,当没有部署网关时,Red Hat OpenShift distributed tracing 平台的查询 frontend 服务会使用内部 mTLS。这会导致端点失败。在这个版本中修复了在没有部署网关时的 mTLS。(
TRACING-3510
)
当前已知的问题:
目前,当与 Tempo Operator 一起使用时,Jaeger UI 只显示在最后 15 分钟内发送了 trace 的服务。对于没有在最后 15 分钟内发送 trace 的服务,trace 仍然会被存储,但不会在 Jaeger UI 中显示。(
TRACING-3139
)
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.47.0 Red Hat OpenShift distributed tracing Platform (Tempo) Tempo 2.1.1 |
此发行版本解决了 CVE-2023-46234 的问题。
当前已知的问题: 不支持 Apache spark。 IBM Z 和 IBM Power 架构上不支持通过 AMQ/Kafka 进行流部署。
Red Hat OpenShift distributed tracing Platform (Tempo)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅 技术预览功能支持范围 。
当前已知的问题:
目前,没有为连接对象存储而实施自定义 TLS CA 选项。(
TRACING-3462
)
目前,当与 Tempo Operator 一起使用时,Jaeger UI 只显示在最后 15 分钟内发送了 trace 的服务。对于没有在最后 15 分钟内发送 trace 的服务,trace 仍然会被存储,但不会在 Jaeger UI 中显示。(
TRACING-3139
)
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
目前,在未部署网关时,Tempo 查询前端服务不得使用内部 mTLS。这个问题不会影响 Jaeger Query API。解决办法是禁用 mTLS。(
TRACING-3510
)
临时解决方案
禁用 mTLS,如下所示: 运行以下命令,打开 Tempo Operator ConfigMap 进行编辑:
$ oc edit configmap tempo-operator-manager-config -n openshift-tempo-operator 1
data: controller_manager_config.yaml: | featureGates: httpEncryption: false grpcEncryption: false builtInCertManagement: enabled: false
运行以下命令来重启 Tempo Operator pod:
$ oc rollout restart deployment.apps/tempo-operator-controller -n openshift-tempo-operator
缺少在受限环境中运行 Tempo Operator 的镜像。Red Hat OpenShift distributed tracing Platform (Tempo) CSV 缺少对操作对象镜像的引用。( TRACING-3523 )
临时解决方案
在镜像工具中添加 Tempo Operator 相关镜像,将镜像复制到 registry:
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 archiveSize: 20 storageConfig: local: path: /home/user/images mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.13 packages: - name: tempo-product channels: - name: stable additionalImages: - name: registry.redhat.io/rhosdt/tempo-rhel8@sha256:e4295f837066efb05bcc5897f31eb2bdbd81684a8c59d6f9498dd3590c62c12a - name: registry.redhat.io/rhosdt/tempo-gateway-rhel8@sha256:b62f5cedfeb5907b638f14ca6aaeea50f41642980a8a6f87b7061e88d90fac23 - name: registry.redhat.io/rhosdt/tempo-gateway-opa-rhel8@sha256:8cd134deca47d6817b26566e272e6c3f75367653d589f5c90855c59b2fab01e9 - name: registry.redhat.io/rhosdt/tempo-query-rhel8@sha256:0da43034f440b8258a48a0697ba643b5643d48b615cdb882ac7f4f1f80aad08e
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.47.0 Red Hat OpenShift distributed tracing Platform (Tempo) Tempo 2.1.1 |
此发行版本修复了 CVE-2023-44487 。
当前已知的问题: 不支持 Apache spark。 IBM Z 和 IBM Power 架构上不支持通过 AMQ/Kafka 进行流部署。
Red Hat OpenShift distributed tracing Platform (Tempo)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅 技术预览功能支持范围 。
当前已知的问题:
目前,没有为连接对象存储而实施自定义 TLS CA 选项。(
TRACING-3462
)
目前,当与 Tempo Operator 一起使用时,Jaeger UI 只显示在最后 15 分钟内发送了 trace 的服务。对于没有在最后 15 分钟内发送 trace 的服务,trace 仍然会被存储,但不会在 Jaeger UI 中显示。(
TRACING-3139
)
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
目前,在未部署网关时,Tempo 查询前端服务不得使用内部 mTLS。这个问题不会影响 Jaeger Query API。解决办法是禁用 mTLS。(
TRACING-3510
)
临时解决方案
禁用 mTLS,如下所示: 运行以下命令,打开 Tempo Operator ConfigMap 进行编辑:
$ oc edit configmap tempo-operator-manager-config -n openshift-tempo-operator 1
data: controller_manager_config.yaml: | featureGates: httpEncryption: false grpcEncryption: false builtInCertManagement: enabled: false
运行以下命令来重启 Tempo Operator pod:
$ oc rollout restart deployment.apps/tempo-operator-controller -n openshift-tempo-operator
缺少在受限环境中运行 Tempo Operator 的镜像。Red Hat OpenShift distributed tracing Platform (Tempo) CSV 缺少对操作对象镜像的引用。( TRACING-3523 )
临时解决方案
在镜像工具中添加 Tempo Operator 相关镜像,将镜像复制到 registry:
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 archiveSize: 20 storageConfig: local: path: /home/user/images mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.13 packages: - name: tempo-product channels: - name: stable additionalImages: - name: registry.redhat.io/rhosdt/tempo-rhel8@sha256:e4295f837066efb05bcc5897f31eb2bdbd81684a8c59d6f9498dd3590c62c12a - name: registry.redhat.io/rhosdt/tempo-gateway-rhel8@sha256:b62f5cedfeb5907b638f14ca6aaeea50f41642980a8a6f87b7061e88d90fac23 - name: registry.redhat.io/rhosdt/tempo-gateway-opa-rhel8@sha256:8cd134deca47d6817b26566e272e6c3f75367653d589f5c90855c59b2fab01e9 - name: registry.redhat.io/rhosdt/tempo-query-rhel8@sha256:0da43034f440b8258a48a0697ba643b5643d48b615cdb882ac7f4f1f80aad08e
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.47.0 Red Hat OpenShift distributed tracing Platform (Tempo) Tempo 2.1.1 |
jaeger-query
部署中缺少一个 gRPC 端口,连接会被拒绝。此问题会导致
transport: Error while dialing: dial tcp :16685: connect: connection refused
错误信息。在这个版本中,Jaeger Query gRPC 端口 (16685) 可以在 Jaeger Query 服务上成功公开。(
TRACING-3322
)
在此次更新之前,为
jaeger-production-query
公开的端口是错误的,并导致连接被拒绝。在这个版本中,这个问题已通过在 Jaeger Query 部署上公开 Jaeger Query gRPC 端口(16685) 被解决。(
TRACING-2968
)
在此次更新之前,当在断开连接的环境中的单节点 OpenShift 集群上部署 Service Mesh 时,Jaeger pod 会经常进入
Pending
状态。在这个版本中,这个问题已被解决。(
TRACING-3312
)
在此次更新之前,因为
reason: OOMKilled
错误信息,Jaeger Operator pod 会以默认内存值重启。在这个版本中,通过删除资源限值解决了这个问题。(
TRACING-3173
)
当前已知的问题: 不支持 Apache spark。 IBM Z 和 IBM Power 架构上不支持通过 AMQ/Kafka 进行流部署。
Red Hat OpenShift distributed tracing Platform (Tempo)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅 技术预览功能支持范围 。
此发行版本包括对分布式追踪平台 (Tempo) 的以下改进:
支持
Operator 成熟度
级别 IV、Deep Insights,它启用了 TempoStack 实例的升级、监控和警报,以及 Tempo Operator。
为网关添加 Ingress 和 Route 配置。
支持
TempoStack
自定义资源中的
managed
和
unmanaged
状态。
在 Distributor 服务中公开以下额外的 ingestion 协议:Jaeger Thrift 二进制、Jaeger Thrift compact、Jaeger gRPC 和 Zipkin。启用网关时,只启用 OpenTelemetry 协议 (OTLP) gRPC。
在 Query Frontend 服务上公开 Jaeger Query gRPC 端点。
支持没有网关身份验证和授权的多租户。
reason: OOMKilled
。在这个版本中,Tempo Operator 的资源限值被删除,以避免此类错误。(
TRACING-3204
)
当前已知的问题:
目前,没有为连接对象存储而实施自定义 TLS CA 选项。(
TRACING-3462
)
目前,当与 Tempo Operator 一起使用时,Jaeger UI 只显示在最后 15 分钟内发送了 trace 的服务。对于没有在最后 15 分钟内发送 trace 的服务,trace 仍然会被存储,但不会在 Jaeger UI 中显示。(
TRACING-3139
)
目前,分布式追踪平台(Tempo)在 IBM Z (
s390x
)架构中会失败。(
TRACING-3545
)
目前,在未部署网关时,Tempo 查询前端服务不得使用内部 mTLS。这个问题不会影响 Jaeger Query API。解决办法是禁用 mTLS。(
TRACING-3510
)
临时解决方案
禁用 mTLS,如下所示: 运行以下命令,打开 Tempo Operator ConfigMap 进行编辑:
$ oc edit configmap tempo-operator-manager-config -n openshift-tempo-operator 1
data: controller_manager_config.yaml: | featureGates: httpEncryption: false grpcEncryption: false builtInCertManagement: enabled: false
运行以下命令来重启 Tempo Operator pod:
$ oc rollout restart deployment.apps/tempo-operator-controller -n openshift-tempo-operator
缺少在受限环境中运行 Tempo Operator 的镜像。Red Hat OpenShift distributed tracing Platform (Tempo) CSV 缺少对操作对象镜像的引用。( TRACING-3523 )
临时解决方案
在镜像工具中添加 Tempo Operator 相关镜像,将镜像复制到 registry:
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 archiveSize: 20 storageConfig: local: path: /home/user/images mirror: operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.13 packages: - name: tempo-product channels: - name: stable additionalImages: - name: registry.redhat.io/rhosdt/tempo-rhel8@sha256:e4295f837066efb05bcc5897f31eb2bdbd81684a8c59d6f9498dd3590c62c12a - name: registry.redhat.io/rhosdt/tempo-gateway-rhel8@sha256:b62f5cedfeb5907b638f14ca6aaeea50f41642980a8a6f87b7061e88d90fac23 - name: registry.redhat.io/rhosdt/tempo-gateway-opa-rhel8@sha256:8cd134deca47d6817b26566e272e6c3f75367653d589f5c90855c59b2fab01e9 - name: registry.redhat.io/rhosdt/tempo-query-rhel8@sha256:0da43034f440b8258a48a0697ba643b5643d48b615cdb882ac7f4f1f80aad08e
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger Red Hat OpenShift distributed tracing Platform (Tempo) Tempo 0.1.0 |
此发行版本引进了对 Red Hat OpenShift distributed tracing 平台(Tempo)的支持,作为 Red Hat OpenShift distributed tracing 平台的 技术预览 功能。 Red Hat OpenShift distributed tracing Platform (Tempo)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅 技术预览功能支持范围 。 该功能使用 Red Hat OpenShift distributed tracing Platform (Tempo)版本 0.1.0 和上游分布式追踪平台(Tempo)组件的 2.0.1 版本。 您可以使用分布式追踪平台(Tempo)替换 Jaeger,以便您可以使用 S3 兼容存储而不是 ElasticSearch。大多数使用分布式追踪平台(Tempo)而不是 Jaeger 的用户都不会注意到功能的任何区别,因为分布式追踪平台(Tempo)支持与 Jaeger 相同的 ingestion 和查询协议,并使用相同的用户界面。 如果您启用了此技术预览功能,请注意当前实现的以下限制: 分布式追踪平台(Tempo)目前不支持断开连接的安装。( TRACING-3145 ) 当您将 Jaeger 用户界面(UI)与分布式追踪平台(Tempo)搭配使用时,Jaeger UI 只会列出最后 15 分钟内发送 trace 的服务。对于没有在最后 15 分钟内发送 trace 的服务,这些 trace 仍然被存储,即使它们在 Jaeger UI 中不可见。( TRACING-3139 ) 计划在以后的 Red Hat OpenShift distributed tracing Platform 版本中对 Tempo Operator 提供支持。可能的额外功能可能包括对 TLS 身份验证、多租户和多个集群的支持。如需有关 Tempo Operator 的更多信息,请参阅 Tempo 社区文档 。
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger |
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger |
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger |
此发行版本为 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 引进了对 OpenTelemetry 协议(OTLP)的支持。Operator 现在自动启用 OTLP 端口: OTLP gRPC 协议的端口 4317。 OTLP HTTP 协议的端口 4318. 此发行版本还添加了对在红帽构建的 OpenTelemetry Operator 中收集 Kubernetes 资源属性的支持。
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.34.1 |
此发行版本添加了对使用 OpenShift Elasticsearch Operator 自动置备证书的支持。 使用 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 在安装过程中调用 OpenShift Elasticsearch Operator 进行自我置备。 当升级到 Red Hat OpenShift distributed tracing platform 2.4 时,Operator 会重新创建 Elasticsearch 实例,这可能需要 5 到 10 分钟。在此期间,分布式追踪将停机且不可用。
首先创建 Elasticsearch 实例和证书,然后将分布式追踪平台(Jaeger)配置为使用证书是本发行版本的 技术预览 。
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.30.2 |
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.30.1 |
在这个版本中,Red Hat OpenShift distributed tracing platform (Jaeger) Operator 被默认安装到
openshift-distributed-tracing
命名空间。在此次更新之前,默认安装位于
openshift-operators
命名空间中。
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
2.1 发行版本中包含的 OpenTelemetry Collector 组件已被删除。
此 Red Hat OpenShift distributed tracing platform 版本解决了 CVE 报告的安全漏洞问题以及程序错误。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.29.1 |
此发行版本引入了一个具有破坏性的更改,这个变化与如何在 OpenTelemetry 自定义资源文件中配置证书相关。在这个版本中,
ca_file
在自定义资源中移到
tls
下,如下例所示。
OpenTelemetry 版本 0.33 的 CA 文件配置
spec: mode: deployment config: | exporters: jaeger: endpoint: jaeger-production-collector-headless.tracing-system.svc:14250 ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
OpenTelemetry 版本 0.41.1 的 CA 文件配置
spec: mode: deployment config: | exporters: jaeger: endpoint: jaeger-production-collector-headless.tracing-system.svc:14250 ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
Operator Version Red Hat OpenShift distributed tracing Platform (Jaeger) Jaeger 1.28.0 |
此发行版本引进了以下新功能和增强:
重新将 Red Hat OpenShift Jaeger 作为 Red Hat OpenShift distributed tracing 平台。
将 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 更新至 Jaeger 1.28。在未来,Red Hat OpenShift distributed tracing 平台只支持
stable
Operator 频道。独立发行版本的频道不再被支持。
为 Query 服务添加了对 OpenTelemetry 协议(OTLP)的支持。
引入了 OperatorHub 中出现的新分布式追踪图标。
包含对文档的滚动更新,以支持名称更改和新功能。
此发行版本添加了 OpenTelemetry 的红帽构建作为 技术预览 ,您使用红帽构建的 OpenTelemetry Operator 安装。Red Hat build of OpenTelemetry 基于 OpenTelemetry API 和工具。红帽构建的 OpenTelemetry 包括 OpenTelemetry Operator 和 Collector。您可以使用 Collector 在 OpenTelemetry 或 Jaeger 协议中接收 trace,并将 trace 数据发送到 Red Hat OpenShift distributed tracing 平台。目前还不支持 Collector 的其他功能。OpenTelemetry 收集器允许开发人员使用与供应商无关的 API 检测其代码,避免了供应商锁定并启用不断增长的可观察性工具生态系统。
此发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
如果您在执行本文档所述的某个流程或 OpenShift Container Platform 时遇到问题,请访问 红帽客户门户网站 。 通过红帽客户门户网站: 搜索或者浏览红帽知识库,了解与红帽产品相关的文章和解决方案。 提交问题单给红帽支持。 访问其他产品文档。 要识别集群中的问题,您可以在 OpenShift Cluster Manager 中使用 Insights。Insights 提供了问题的详细信息,并在有可用的情况下,提供了如何解决问题的信息。 如果您对本文档有任何改进建议,或发现了任何错误,请为相关文档组件提交 JIRA 问题 。请提供具体详情,如章节名称和 OpenShift Container Platform 版本。
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息 。
每次用户在某个应用程序中执行一项操作时,一个请求都会在所在的系统上执行,而这个系统可能需要几十个不同服务的共同参与才可以做出相应的响应。Red Hat OpenShift distributed tracing 平台可让您执行分布式追踪,在组成一个应用程序的多个微服务间记录请求的路径。 分布式追踪 是用来将不同工作单元的信息关联起来的技术,通常是在不同进程或主机中执行的,以便理解分布式事务中的整个事件链。开发人员可以视觉化在大型微服务架构中调用的流程。它对理解序列化、并行性和延迟来源有价值。 Red Hat OpenShift distributed tracing 平台记录了在微服务的整个堆栈间执行单个请求,并将其显示为 trace。 trace 是系统的数据/执行路径。一个端到端的 trace 由一个或者多个 span 组成。 span 代表 Red Hat OpenShift distributed tracing 平台中的逻辑工作单元,它包含操作名称、操作的开始时间和持续时间,以及可能的标签和日志。span 可能会被嵌套并排序以模拟因果关系。
作为服务所有者,您可以使用分布式追踪来检测您的服务,以收集与服务架构相关的信息。您可以使用 Red Hat OpenShift distributed tracing 平台来监控、网络性能分析,并对现代、云原生的微服务应用程序中组件间的交互进行故障排除。 使用分布式追踪平台,您可以执行以下功能: 监控分布式事务 优化性能和延迟时间 执行根原因分析
Red Hat OpenShift distributed tracing 平台提供以下功能: 与 Kiali 集成 - 当正确配置时,您可以从 Kiali 控制台查看分布式追踪平台数据。 高可伸缩性 - 分布式追踪平台后端设计具有单一故障点,而且能够按照业务需求进行扩展。 分布式上下文发布 – 允许您通过不同的组件连接数据以创建完整的端到端的 trace。 与 Zipkin 的后向兼容性 - Red Hat OpenShift distributed tracing platform 有 API,它能将其用作 Zipkin 的简易替代品,但红帽在此发行版本中不支持 Zipkin 的兼容性。
Red Hat OpenShift distributed tracing 平台由多个组件组成,它们一起收集、存储和显示追踪数据。
Red Hat OpenShift distributed tracing Platform (Tempo)
- 此组件基于开源
Grafana Tempo 项目
。
网关
- 网关处理身份验证、授权和将请求转发到分布式或查询前端服务。
Distributor
- Distributor 接受多种格式(包括 Jaeger、OpenTelemetry 和 Zipkin)的 span。它通过哈希
traceID
并将分布式一致的哈希环路由到 Ingester。
Ingester
- Ingester 将 trace 批处理到块中,创建 bloom 过滤器和索引,然后将其全部刷新到后端。
Query Frontend
- Query Frontend 负责为传入的查询对搜索空间进行分片。然后,搜索查询会发送到 Queriers。Query Frontend 部署通过 Tempo Query sidecar 公开 Jaeger UI。
Querier
- Querier 负责在 Ingester 或后端存储中查找请求的 trace ID。根据参数,它可以查询 Ingesters,并从后端拉取 Bloom 索引,以便在对象存储中搜索块。
compactor
- Compactors 流块到后端存储中,以减少块总数。
红帽构建的 OpenTelemetry
- 此组件基于开源
OpenTelemetry 项目
。
OpenTelemetry Collector
- OpenTelemetry Collector 是一个与厂商无关的方式来接收、处理和导出遥测数据。OpenTelemetry Collector 支持开源可观察数据格式,如 Jaeger 和 Prometheus,发送到一个或多个开源或商业后端。Collector 是默认位置检测库来导出其遥测数据。
Red Hat OpenShift distributed tracing Platform (Jaeger)
- 此组件基于开源
Jaeger 项目
。
客户端
(Jaeger 客户端、跟踪器、报告程序、客户端库)- 分布式追踪平台 (Jaeger) 客户端是 OpenTracing API 的特定语言实施。它们可以用来为各种现有开源框架(如 Camel (Fuse) 、Spring Boot (RHOAR) 、MicroProfile (RHOAR/Thorntail) 、Wilfly (EAP) 等提供分布式追踪工具。
代理
(Jaeger 代理,Server Queue, Processor Workers)- 分布式追踪平台 (Jaeger) 代理是一个网络守护进程,侦听通过用户数据报协议(UDP)发送并发送到 Collector。这个代理应被放置在要管理的应用程序的同一主机上。这通常是通过容器环境(如 Kubernetes)中的 sidecar 来实现。
Jaeger Collector
(Collector, Queue, Workers)- 与 Jaeger 代理类似,Jaeger Collector 接收 span,并将它们放置在内部队列中进行处理。这允许 Jaeger Collector 立即返回到客户端/代理,而不是等待 span 变为存储。
Storage
(Data Store) - 收集器需要一个持久的存储后端。Red Hat OpenShift distributed tracing Platform (Jaeger) 提供了用于 span 存储的可插拔机制。Red Hat OpenShift distributed tracing Platform (Jaeger)支持 Elasticsearch 存储。
Query
(Query Service) - Query 是一个从存储中检索 trace 的服务。
Ingester
(Ingester Service)- Red Hat OpenShift distributed tracing 平台可以使用 Apache Kafka 作为 Collector 和实际的 Elasticsearch 后端存储之间的缓冲。Ingester 是一个从 Kafka 读取数据并写入 Elasticsearch 存储后端的服务。
Jaeger 控制台
- 使用 Red Hat OpenShift distributed tracing 平台 (Jaeger) 用户界面,您可以视觉化您的分布式追踪数据。在搜索页面中,您可以查找 trace,并查看组成一个独立 trace 的 span 详情。
安装分布式追踪平台 (Tempo) 需要 Tempo Operator,并选择最适合您的用例的部署类型: 对于微服务模式,在专用的 OpenShift 项目中部署 TempoStack 实例。 对于单体模式,在专用的 OpenShift 项目中部署 TempoMonolithic 实例。 使用对象存储需要在部署 TempoStack 或 TempoMonolithic 实例前设置受支持的对象存储并为对象存储凭据创建一个 secret。
您可以使用 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
。如需更多信息,请参阅"对象存储设置"。
对象存储是必需的,它没有包含在分布式追踪平台(Tempo) 中。在安装分布式追踪平台 (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
。
您可以从命令行安装 Tempo Operator。
集群管理员具有
cluster-admin
角色的活跃 OpenShift CLI (
oc
) 会话。
确保您的 OpenShift CLI (
oc
) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。
运行
oc login
:
$ oc login --username=<your_username>
您已完成由支持的供应商设置所需的对象存储: Red Hat OpenShift Data Foundation , MinIO , Amazon S3 , Azure Blob Storage , Google Cloud Storage 。如需更多信息,请参阅"对象存储设置"。 对象存储是必需的,它没有包含在分布式追踪平台(Tempo) 中。在安装分布式追踪平台 (Tempo) 前,您必须通过受支持的供应商选择和设置对象存储。 运行以下命令,为 Tempo Operator 创建项目:
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: labels: kubernetes.io/metadata.name: openshift-tempo-operator openshift.io/cluster-monitoring: "true" name: openshift-tempo-operator 运行以下命令来创建 Operator 组:$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-tempo-operator namespace: openshift-tempo-operator spec: upgradeStrategy: Default 运行以下命令来创建订阅:$ oc apply -f - << EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: tempo-product namespace: openshift-tempo-operator spec: channel: stable installPlanApproval: Automatic name: tempo-product source: redhat-operators sourceNamespace: openshift-marketplace EOF
验证
运行以下命令检查 Operator 状态:
$ oc get csv -n openshift-tempo-operator
您可以使用 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
。如需更多信息,请参阅"对象存储设置"。
对象存储是必需的,它没有包含在分布式追踪平台(Tempo) 中。在安装分布式追踪平台 (Tempo) 前,您必须通过受支持的供应商选择和设置对象存储。
进入
Home
→
Projects
→
Create Project
,为在后续步骤中创建的 TempoStack 实例创建一个项目。
进入
Workloads
→
Secrets
→
Create
→
From YAML
,在您为 TempoStack 实例创建的项目中为您的对象存储桶创建一个 secret。如需更多信息,请参阅"对象存储设置"。
Amazon S3 和 MinIO 存储的 secret 示例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque创建 TempoStack 实例。 您可以在同一集群中的独立项目中创建多个 TempoStack 实例。 进入 Operators → Installed Operators 。 选择 TempoStack → Create TempoStack → YAML view 。 在 YAML 视图中 ,自定义
TempoStack
自定义资源(CR):
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: 1 name: <secret_name> 2 type: <secret_provider> 3 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
metadata
中
name
的值。
可接受的值是
azure
(Azure Blob Storage),
gcs
(Google Cloud Storage)和
s3
(Amazon S3, MinIO, 或 Red Hat OpenShift Data Foundation)。
AWS S3 和 MinIO 存储的
TempoStack
CR 示例
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: 1 secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: 2 enabled: true ingress: route: termination: edge type: route在本例中,对象存储被设置为先决条件之一,并在第 2 步中创建对象存储 secret。 本例中部署的堆栈被配置为接收通过 HTTP 和 OpenTelemetry 协议(OTLP)的 Jaeger Thrift,它允许使用 Jaeger UI 可视化数据。 选择 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 数据。
您可以从命令行安装 TempoStack 实例。
集群管理员具有
cluster-admin
角色的活跃 OpenShift CLI (
oc
) 会话。
确保您的 OpenShift CLI (
oc
) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。
运行
oc login
命令:
$ oc login --username=<your_username>
您已完成由支持的供应商设置所需的对象存储: Red Hat OpenShift Data Foundation , MinIO , Amazon S3 , Azure Blob Storage , Google Cloud Storage 。如需更多信息,请参阅"对象存储设置"。 对象存储是必需的,它没有包含在分布式追踪平台(Tempo) 中。在安装分布式追踪平台 (Tempo) 前,您必须通过受支持的供应商选择和设置对象存储。 运行以下命令,为您将在后续步骤中创建的 TempoStack 实例创建您选择的项目:
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempostack_instance> 在您为 TempoStack 实例创建的项目中,运行以下命令来为您的对象存储桶创建一个 secret:$ oc apply -f - << EOF <object_storage_secret> 如需更多信息,请参阅"对象存储设置"。Amazon S3 和 MinIO 存储的 secret 示例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque在为您创建的项目中创建一个 TempoStack 实例: 您可以在同一集群中的独立项目中创建多个 TempoStack 实例。 自定义TempoStack
自定义资源(CR):apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: sample namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: secret: 1 name: <secret_name> 2 type: <secret_provider> 3 template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route
- 1
您在第 2 步中创建的 secret,用于作为其中一个先决条件设置的对象存储。 secretmetadata
中name
的值。 可接受的值是azure
(Azure Blob Storage),gcs
(Google Cloud Storage)和s3
(Amazon S3, MinIO, 或 Red Hat OpenShift Data Foundation)。AWS S3 和 MinIO 存储的
TempoStack
CR 示例
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest namespace: <project_of_tempostack_instance> spec: storageSize: 1Gi storage: 1 secret: name: minio-test type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: 2 enabled: true ingress: route: termination: edge type: route在本例中,对象存储被设置为先决条件之一,并在第 2 步中创建对象存储 secret。 本例中部署的堆栈被配置为接收通过 HTTP 和 OpenTelemetry 协议(OTLP)的 Jaeger Thrift,它允许使用 Jaeger UI 可视化数据。 运行以下命令来应用自定义 CR:$ oc apply -f - << EOF <tempostack_cr> EOF
验证
运行以下命令,验证所有 TempoStack
组件
的
状态
是否为
Running
,并且
条件
为
type: Ready
:
$ oc get tempostacks.tempo.grafana.com simplest -o yaml
运行以下命令,验证所有 TempoStack 组件 pod 是否正在运行:
$ oc get pods
访问 Tempo 控制台: 运行以下命令来查询路由详情:
$ oc get route
在网页浏览器中打开
https://<route_from_previous_step>
。
Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。
TempoMonolithic 实例只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅
技术预览功能支持范围
。
您可以使用 Web 控制台或命令行安装 TempoMonolithic 实例。
TempoMonolithic
自定义资源(CR) 以单体模式创建 Tempo 部署。Tempo 部署的所有组件(如紧凑器、经销商、ingester、querier 和查询前端)都包含在一个容器中。
TempoMonolithic 实例支持将 trace 存储在内存中存储、持久性卷或对象存储。
在单体模式下部署临时是小型部署、演示、测试和作为 Red Hat OpenShift distributed tracing 平台 (Jaeger) 全体部署的迁移路径的首选。
Tempo 的单体部署无法水平扩展。如果您需要水平扩展,请在微服务模式中将
TempoStack
CR 用于 Tempo 部署。
TempoMonolithic 实例只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅
技术预览功能支持范围
。
您可以从 web 控制台的
Administrator
视图安装 TempoMonolithic 实例。
以具有
cluster-admin
角色的用户身份登录到 OpenShift Container Platform Web 控制台。
对于 Red Hat OpenShift Dedicated,您必须使用具有
dedicated-admin
角色的帐户登录。
进入
Home
→
Projects
→
Create Project
,为在后续步骤中创建的
TempoMonolithic
实例创建一个项目。
决定用于存储 trace 的存储类型:内存中存储、持久性卷或对象存储。
对象存储不包括在分布式追踪平台(Tempo)中,需要由受支持的供应商设置对象存储:
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 示例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque创建 TempoMonolithic 实例: 您可以在同一集群的单独项目中创建多个 TempoMonolithic 实例。 进入 Operators → Installed Operators 。 选择 TempoMonolithic → Create TempoMonolithic → YAML view 。 在 YAML 视图中 ,自定义
TempoMonolithic
自定义资源 (CR)。
以下
TempoMonolithic
CR 创建一个 TempoMonolithic 部署,它通过 OTLP/gRPC 和 OTLP/HTTP 将 trace 存储在支持的存储中,并通过路由公开 Jaeger UI:
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoMonolithic metadata: name: <metadata_name> namespace: <project_of_tempomonolithic_instance> spec: storage: traces: backend: <supported_storage_type> 1 size: <value>Gi 2 s3: 3 secret: <secret_name> 4 jaegerui: enabled: true 5 route: enabled: true 6
tmpfs
内存中存储的值是
memory
。持久性卷的值是
pv
。对象存储接受的值是
s3
、
gcs
或
azure
,具体取决于使用的对象存储类型。
内存大小:对于内存存储,这意味着
tmpfs
卷的大小,默认值为
2Gi
。对于持久性卷,这意味着持久性卷声明的大小,默认值为
10Gi
。对于对象存储,这意味着 Tempo WAL 的持久性卷声明的大小,默认值为
10Gi
。
可选: 对于对象存储,对象存储的类型。接受的值包括
s3
、
gcs
和
azure
,具体取决于使用的对象存储类型。
可选: 对于对象存储,存储 secret 的
metadata
中的
name
值。存储 secret 必须与 TempoMonolithic 实例位于同一个命名空间中,并包含 "Table 1 中指定的字段。"Object storage setup" 部分中所需的 secret 参数"。
启用 Jaeger UI。
启用为 Jaeger UI 创建路由。
选择
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
端点。
TempoMonolithic 实例只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅
技术预览功能支持范围
。
您可以从命令行安装 TempoMonolithic 实例。
集群管理员具有
cluster-admin
角色的活跃 OpenShift CLI (
oc
) 会话。
确保您的 OpenShift CLI (
oc
) 版本为最新版本,并与您的 OpenShift Container Platform 版本匹配。
运行
oc login
命令:
$ oc login --username=<your_username>
流程
运行以下命令,为您将在后续步骤中创建的 TempoMonolithic 实例创建您选择的项目:
$ oc apply -f - << EOF apiVersion: project.openshift.io/v1 kind: Project metadata: name: <project_of_tempomonolithic_instance> 决定用于存储 trace 的存储类型:内存中存储、持久性卷或对象存储。 对象存储不包括在分布式追踪平台(Tempo)中,需要由受支持的供应商设置对象存储: Red Hat OpenShift Data Foundation、MinIO、Amazon S3、Azure Blob Storage 或 Google Cloud Storage。 另外,选择对象存储需要在您为 TempoMonolithic 实例创建的项目中为您的对象存储桶创建一个 secret。您可以运行以下命令来完成此操作:$ oc apply -f - << EOF <object_storage_secret> 如需更多信息,请参阅"对象存储设置"。Amazon S3 和 MinIO 存储的 secret 示例
apiVersion: v1 kind: Secret metadata: name: minio-test stringData: endpoint: http://minio.minio.svc:9000 bucket: tempo access_key_id: tempo access_key_secret: <secret> type: Opaque在您为其创建的项目中创建一个 TempoMonolithic 实例。 您可以在同一集群的单独项目中创建多个 TempoMonolithic 实例。 自定义TempoMonolithic
自定义资源 (CR)。 以下TempoMonolithic
CR 创建一个 TempoMonolithic 部署,它通过 OTLP/gRPC 和 OTLP/HTTP 将 trace 存储在支持的存储中,并通过路由公开 Jaeger UI:apiVersion: tempo.grafana.com/v1alpha1 kind: TempoMonolithic metadata: name: <metadata_name> namespace: <project_of_tempomonolithic_instance> spec: storage: traces: backend: <supported_storage_type> 1 size: <value>Gi 2 s3: 3 secret: <secret_name> 4 jaegerui: enabled: true 5 route: enabled: true 6
- 1
用于存储 trace 的存储类型:内存存储、持久性卷或对象存储。tmpfs
内存中存储的值是memory
。持久性卷的值是pv
。对象存储接受的值是s3
、gcs
或azure
,具体取决于使用的对象存储类型。 内存大小:对于内存存储,这意味着tmpfs
卷的大小,默认值为2Gi
。对于持久性卷,这意味着持久性卷声明的大小,默认值为10Gi
。对于对象存储,这意味着 Tempo WAL 的持久性卷声明的大小,默认值为10Gi
。 可选: 对于对象存储,对象存储的类型。接受的值包括s3
、gcs
和azure
,具体取决于使用的对象存储类型。 可选: 对于对象存储,存储 secret 的metadata
中的name
值。存储 secret 必须与 TempoMonolithic 实例位于同一个命名空间中,并包含 "Table 1 中指定的字段。"Object storage setup" 部分中所需的 secret 参数"。 启用 Jaeger UI。 启用为 Jaeger UI 创建路由。 运行以下命令来应用自定义 CR:$ oc apply -f - << EOF <tempomonolithic_cr> EOF
验证
运行以下命令,验证所有 TempoMonolithic
components
的
状态
是否为
Running
,且
conditions
是
type: Ready
$ oc get tempomonolithic.tempo.grafana.com <metadata_name_of_tempomonolithic_cr> -o yaml
运行以下命令,以验证 TempoMonolithic 实例的 pod 是否正在运行:
$ oc get pods
访问 Jaeger UI:
运行以下命令,查询
tempo-<metadata_name_of_tempomonolithic_cr>-jaegerui
路由的路由详情:
$ oc get route
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
端点。
在设置受支持的对象存储时,您可以使用以下配置参数。
表 3.1. 所需的 secret 参数
存储供应商 |
---|
Secret 参数
Red Hat OpenShift Data Foundation
|
Tempo Operator 使用自定义资源定义(CRD)文件来定义创建和部署分布式追踪平台(Tempo)资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件。
有关配置后端存储的详情,请参考 了解持久性存储 以及您选择的存储选项的适当配置主题。
TempoStack
自定义资源 (CR)定义创建分布式追踪平台 (Tempo) 资源时要使用的架构和设置。您可以修改这些参数以根据您的业务需求自定义分布式追踪平台(Tempo)实现。
通用 Tempo YAML 文件示例
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: name spec: storage: {} resources: {} storageSize: 200M replicationFactor: 1 retention: {} template: distributor:{} ingester: {} compactor: {} querier: {} queryFrontend: {} gateway: {}
表 3.2. Tempo 参数
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
apiVersion:创建对象时要使用的 API 版本。
tempo.grafana.com/v1alpha1
tempo.grafana.com/v1alpha1
kind:定义要创建的 Kubernetes 对象的种类。
tempo
metadata:唯一标识对象的数据,包括
name
字符串,
UID
, 和可选的
namespace
。
OpenShift Container Platform 会自动生成
UID
并使用创建对象的项目名称完成
namespace
。
name:对象的名称。 TempoStack 实例的名称。
tempo-all-in-one-inmemory
spec:要创建的对象的规格。 包含 TempoStack 实例的所有配置参数。当需要所有 Tempo 组件的通用定义时,会在
spec
节点下定义它。当定义与单个组件相关时,它将放置在
spec/template/<component>
节点下。
resources:分配给 TempoStack 实例的资源。 storageSize:ingester PVC 的存储大小。 replicationFactor:复制因素的配置。 retention:保留 trace 的配置选项。 storage:定义存储的配置选项。所有与存储相关的选项都必须放在
storage
下,而不是放在
allInOne
或其他组件选项下。
template.distributor:Tempo
distributor
的配置选项。
template.ingester:Tempo
ingester
的配置选项。
template.compactor:Tempo
compactor
的配置选项。
template.querier:Tempo
querier
的配置选项。
template.queryFrontend:Tempo
query-frontend
的配置选项。
template.gateway:Tempo
gateway
的配置选项。
|
最低要求配置
以下是使用默认设置创建分布式追踪平台(Tempo)部署所需的最小值:
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest spec: storage: 1 secret: name: minio type: s3 resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: type: route
您可以在
spec.storage
下的
TempoStack
自定义资源中为分布式追踪平台(Tempo)配置对象存储。您可以从支持的多个存储供应商中选择。
表 3.3. Tempo Operator 用来定义分布式追踪存储的一般存储参数
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
spec: storage: secret type:要在部署中使用的存储类型。
内存
。内存存储仅适用于开发、测试、演示和概念验证环境,因为数据在 pod 关闭时不会保留。
storage: secretname:包含设置对象类型凭证的 secret 名称。 storage: caName:CA 是包含 CA 证书的
ConfigMap
对象的名称。
|
表 3.4. 所需的 secret 参数
存储供应商 |
---|
Secret 参数
Red Hat OpenShift Data Foundation
|
分布式追踪平台 (Tempo) 的两个组件,即 querier 和 query frontend,用于管理查询。您可以配置这两个组件。
querier 组件在 ingesters 或后端存储中查找请求的 trace ID。根据设置的参数,querier 组件可以查询 ingesters,并从后端拉取 bloom 或索引,以便在对象存储中搜索块。querier 组件在
GET /querier/api/traces/<trace_id>
公开 HTTP 端点,但不预期直接使用。查询必须发送到查询前端。
表 3.5. querier 组件的配置参数
参数 | 描述 | 值 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
表 3.6. 查询前端组件的配置参数
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest spec: storage: secret: name: minio type: s3 storageSize: 200M resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: route: termination: edge type: route 3.2.1.3.1. 其他资源3.2.1.4. 在 Jaeger UI 中配置 monitor 选项卡跟踪数据包含丰富的信息,数据在检测的语言和框架中规范化。因此,请求率、错误和持续时间(RED)指标可以从 trace 中提取。指标可以在 Jaeger 控制台的 Monitor 选项卡中视觉化。 指标派生自 OpenTelemetry Collector 中的 span,由 user-workload 监控堆栈中部署的 Prometheus 从 Collector 中提取。Jaeger UI 从 Prometheus 端点查询这些指标,并视觉化它们。 3.2.1.4.1. OpenTelemetry Collector 配置
OpenTelemetry Collector 需要配置
OpenTelemetry Collector 自定义资源,用于 span RED
kind: OpenTelemetryCollector apiVersion: opentelemetry.io/v1alpha1 metadata: name: otel spec: mode: deployment observability: metrics: enableMetrics: true 1 config: | connectors: spanmetrics: 2 metrics_flush_interval: 15s receivers: otlp: 3 protocols: grpc: http: exporters: prometheus: 4 endpoint: 0.0.0.0:8889 add_metric_suffixes: false resource_to_telemetry_conversion: enabled: true # by default resource attributes are dropped otlp: endpoint: "tempo-simplest-distributor:4317" insecure: true service: pipelines: traces: receivers: [otlp] exporters: [otlp, spanmetrics] 5 metrics: receivers: [spanmetrics] 6 exporters: [prometheus]创建
ServiceMonitor
自定义资源,以启用 Prometheus exporter 的提取。
Spanmetrics 连接器接收 trace 和 exports 指标。
OTLP 接收器在 OpenTelemetry 协议中接收 span。
Prometheus exporter 用于导出 Prometheus 格式的指标。
Spanmetrics 连接器在 trace 管道中被配置为 exporter。
Spanmetrics 连接器在 metrics 管道中配置为接收器。
3.2.1.4.2. Tempo 配置
带有启用的 Monitor 选项卡的 TempoStack 自定义资源
kind: TempoStack apiVersion: tempo.grafana.com/v1alpha1 metadata: name: simplest spec: template: queryFrontend: jaegerQuery: enabled: true monitorTab: enabled: true 1 prometheusEndpoint: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091 2 ingress: type: route在 Jaeger 控制台中启用 Monitoring 选项卡。 来自 user-workload 监控的 Thanos Querier 的服务名称。 3.2.1.4.3. Span RED 指标和警报规则
表 3.7. 在
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: span-red
spec:
groups:
- name: server-side-latency
rules:
- alert: SpanREDFrontendAPIRequestLatency
expr: histogram_quantile(0.95, sum(rate(duration_bucket{service_name="frontend", span_kind="SPAN_KIND_SERVER"}[5m])) by (le, service_name, span_name)) > 2000 1
labels:
severity: Warning
annotations:
summary: "High request latency on {{$labels.service_name}} and {{$labels.span_name}}"
description: "{{$labels.instance}} has 95th request latency above 2s (current value: {{$value}}s)"
这个表达式检查,是否 95% 的前端服务器响应时间值低于 2000 ms。时间范围 (
[5m]
) 必须至少是提取间隔的四倍,并且足以适应指标的变化。
3.2.1.5. 多租户
Tempo Gateway 服务中提供了带有身份验证和授权的多租户。身份验证使用 OpenShift OAuth 和 Kubernetes
带有两个租户的 Tempo CR 示例,
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: simplest spec: tenants: mode: openshift 1 authentication: 2 - tenantName: dev 3 tenantId: "1610b0c3-c509-4592-a256-a1871353dbfa" 4 - tenantName: prod tenantId: "1610b0c3-c509-4592-a256-a1871353dbfb" template: gateway: enabled: true 5 queryFrontend: jaegerQuery: enabled: true必须设置为
openshift
。
租户列表。
租户名称。在选择数据时,必须在
X-Scope-OrgId
标头中提供。
唯一的租户 ID。
启用执行身份验证和授权的网关。Jaeger UI 通过
http://<gateway-ingress>/api/traces/v1/<tenant-name>/search
公开。
授权配置使用 Kubernetes 基于角色的访问控制(RBAC)的
ClusterRole
和
ClusterRoleBinding
。默认情况下,任何用户都没有读取或写入权限。
允许经过身份验证的用户读取
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: tempostack-traces-reader rules: - apiGroups: - 'tempo.grafana.com' resources: 1 - dev - prod resourceNames: - traces verbs: - 'get' 2 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tempostack-traces-reader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tempostack-traces-reader subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated 3列出租户。
get
值可启用读取操作。
授予所有经过身份验证的用户的 trace 数据读取权限。
允许
apiVersion: v1 kind: ServiceAccount metadata: name: otel-collector 1 namespace: otel apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: tempostack-traces-write rules: - apiGroups: - 'tempo.grafana.com' resources: 2 - dev resourceNames: - traces verbs: - 'create' 3 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tempostack-traces roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tempostack-traces-write subjects: - kind: ServiceAccount name: otel-collector namespace: otel导出 trace 数据时要使用的客户端的服务帐户名称。客户端必须将服务帐户令牌
/var/run/secrets/kubernetes.io/serviceaccount/token
发送为 bearer 令牌标头。
列出租户。
create
值启用写入操作。
追踪数据可以从 OpenTelemetry 收集器发送到 Tempo 实例,该收集器使用带有 RBAC 的服务帐户来写入数据。
OpenTelemetry CR 配置示例
apiVersion: opentelemetry.io/v1alpha1 kind: OpenTelemetryCollector metadata: name: cluster-collector namespace: tracing-system spec: mode: deployment serviceAccount: otel-collector config: | extensions: bearertokenauth: filename: "/var/run/secrets/kubernetes.io/serviceaccount/token" exporters: otlp/dev: endpoint: tempo-simplest-gateway.tempo.svc.cluster.local:8090 insecure: false ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt" auth: authenticator: bearertokenauth headers: X-Scope-OrgID: "dev" service: extensions: [bearertokenauth] pipelines: traces: exporters: [otlp/dev] 3.2.2. 配置监控和警报Tempo Operator 支持每个 TempoStack 组件的监控和警报,如经销商、ingester 等,并公开有关 Operator 本身的升级和操作指标。 3.2.2.1. 配置 TempoStack 指标和警报
您可以启用 TempoStack 实例的指标和警报。
在集群中启用对用户定义的项目的监控。
要启用 TempoStack 实例的指标,请将
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: <name> spec: observability: metrics: createServiceMonitors: true
要为 TempoStack 实例启用警报,请将
apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: <name> spec: observability: metrics: createPrometheusRules: true 验证
您可以使用 Web 控制台的
Administrator
视图来验证配置是否成功:
进入
Observe
→
Targets
,过滤
Source: User
, 检查
ServiceMonitors
(格式为
3.2.2.1.1. 其他资源3.2.2.2. 配置 Tempo Operator 指标和警报
从 web 控制台安装 Tempo Operator 时,您可以选择
Enable Operator recommended cluster monitoring on this Namespace
复选框,它允许创建 Tempo Operator 的指标和警报。
如果在安装过程中没有选择复选框,您可以在安装 Tempo Operator 后手动启用指标和警报。
在安装了 Tempo Operator 的项目中添加
3.3. 升级对于版本升级,Tempo Operator 使用 Operator Lifecycle Manager (OLM),用于控制集群中 Operator 的安装、升级和基于角色的访问控制(RBAC)。 OLM 默认在 OpenShift Container Platform 中运行。OLM 可以查询可用的 Operator 以及已安装的 Operator 的升级。 当 Tempo Operator 升级到新版本时,它会扫描它管理的 TempoStack 实例,并将其升级到与 Operator 新版本对应的版本。 3.3.1. 其他资源3.4. 删除从 OpenShift Container Platform 集群中删除 Red Hat OpenShift distributed tracing Platform (Tempo)的步骤如下: 关闭所有分布式追踪平台(Tempo) pod。 删除任何 TempoStack 实例。 删除 Tempo Operator。 3.4.1. 使用 Web 控制台删除
您可以在 web 控制台的
Administrator
视图中删除 TempoStack 实例。
以具有
3.4.2. 使用 CLI 删除
您可以在命令行中删除 TempoStack 实例。
集群管理员具有
$ oc login --username=<your_username> 流程
3.4.3. 其他资源第 4 章 分布式追踪平台(Jaeger)4.1. 安装
重要
Red Hat OpenShift distributed tracing Platform (Jaeger) 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。
有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中
已弃用和删除的功能
部分。
您可以通过以下两种方式之一在 OpenShift Container Platform 上安装 Red Hat OpenShift distributed tracing 平台:
作为 Red Hat OpenShift Service Mesh 的一部分安装 Red Hat OpenShift distributed tracing 平台。Service Mesh 安装中默认包含了分布式追踪。要将 Red Hat OpenShift distributed tracing 平台作为服务网格的一部分安装,请按照
Red Hat Service Mesh 安装
说明进行操作。您必须在与服务网格相同的命名空间中安装 Red Hat OpenShift distributed tracing 平台,即
4.1.1. 先决条件
在安装 Red Hat OpenShift distributed tracing 平台前,请查看安装活动,并确保满足先决条件:
您的红帽帐户中拥有活跃的 OpenShift Container Platform 订阅。如果您没有相关订阅,请联络您的销售代表以获得更多信息。
查看
OpenShift Container Platform 4.15 概述
。
安装 OpenShift Container Platform 4.15。
在 AWS 上安装 OpenShift Container Platform 4.15
在用户置备的 AWS 上安装 OpenShift Container Platform 4.15
在裸机上安装 OpenShift Container Platform 4.15
在 vSphere 上安装 OpenShift Container Platform 4.15
安装与 OpenShift Container Platform 版本匹配的
4.1.2. Red Hat OpenShift distributed tracing 平台安装概述安装 Red Hat OpenShift distributed tracing 平台的步骤如下: 查看文档并确定您的部署策略。 如果您的部署策略需要持久性存储,请通过 OperatorHub 安装 OpenShift Elasticsearch Operator。 通过 OperatorHub 安装 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator。 修改自定义资源 YAML 文件,以支持您的部署策略。 将一个或多个 Red Hat OpenShift distributed tracing 平台(Jaeger)实例部署到 OpenShift Container Platform 环境中。 4.1.3. 安装 OpenShift Elasticsearch Operator
默认的 Red Hat OpenShift distributed tracing 平台(Jaeger)部署使用内存存储,因为它旨在为评估 Red Hat OpenShift distributed tracing 平台、提供演示或在测试环境中使用 Red Hat OpenShift distributed tracing 平台(Jaeger)的用户快速安装。如果您计划在生产环境中使用 Red Hat OpenShift distributed tracing 平台 (Jaeger),则必须安装并配置持久性存储选项,即 Elasticsearch。
访问 OpenShift Container Platform web 控制台。
您可以使用具有
4.1.4. 安装 Red Hat OpenShift distributed tracing Platform Operator
您可以通过
OperatorHub
安装 Red Hat OpenShift distributed tracing Platform Operator。
默认情况下,Operator 安装在
4.2. 配置
重要
Red Hat OpenShift distributed tracing Platform (Jaeger) 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。 有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中 已弃用和删除的功能 部分。 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 使用自定义资源定义(CRD)文件来定义创建和部署分布式追踪平台(Jaeger)资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件。 如果您已经安装了分布式追踪平台作为 Red Hat OpenShift Service Mesh 的一部分,您可以执行基本配置作为 ServiceMeshControlPlane 的一部分,但为了完全控制,您必须配置 Jaeger CR,然后在 ServiceMeshControlPlane 中引用您的分布式追踪配置文件 。 Red Hat OpenShift distributed tracing Platform (Jaeger)有预定义的部署策略。您可以在自定义资源文件中指定一个部署策略。当您创建分布式追踪平台(Jaeger)实例时,Operator 会使用此配置文件创建部署所需的对象。 Jaeger 自定义资源文件显示部署策略
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: MyConfigFile
spec:
strategy: production 1
部署策略。
4.2.1. 支持的部署策略Red Hat OpenShift distributed tracing Platform (Jaeger) Operator 目前支持以下部署策略:
production
streaming
streaming 策略旨在通过提供在 Collector 和 Elasticsearch 后端存储之间有效处的流传输功能来增强 production 策略。这样做的好处是在高负载情况下降低后端存储压力,并允许其他 trace 后处理功能直接从流传输平台 ( AMQ Streams / Kafka ) 中利用实时 span 数据。 streaming 策略需要额外的 AMQ Streams 订阅。 目前 IBM Z® 不支持 streaming 部署策略。 4.2.2. 从 Web 控制台部署分布式追踪平台默认策略
自定义资源定义(CRD)定义部署 Red Hat OpenShift distributed tracing 平台实例时使用的配置。默认 CR 名为
4.2.2.1. 通过 CLI 部署分布式追踪平台默认策略
按照以下步骤,从命令行创建分布式追踪平台(Jaeger)实例。
已安装并验证 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator。
您已查看了如何自定义部署的说明。
您可以访问与 OpenShift Container Platform 版本匹配的 OpenShift CLI(
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
运行以下命令,创建一个名为
$ oc new-project tracing-system
创建一个名为
示例 Jaeger-all-in-one.yaml
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-all-in-one-inmemory运行以下命令来部署分布式追踪平台(Jaeger):
$ oc create -n tracing-system -f jaeger.yaml 在安装过程中运行以下命令来监控 pod 的进度: $ oc get pods -n tracing-system -w 安装过程完成后,输出类似以下示例: NAME READY STATUS RESTARTS AGE jaeger-all-in-one-inmemory-cdff7897b-qhfdx 2/2 Running 0 24s 4.2.3. 从 Web 控制台部署分布式追踪平台生产策略
使用 Elasticsearch 的示例 jaeger-production.yaml 文件
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: jaeger-production namespace: spec: strategy: production ingress: security: oauth-proxy storage: type: elasticsearch elasticsearch: nodeCount: 3 redundancyPolicy: SingleRedundancy esIndexCleaner: enabled: true numberOfDays: 7 schedule: 55 23 * * * esRollover: schedule: '*/30 * * * *'点 Create 创建分布式追踪平台(Jaeger)实例。 在 Jaegers 页面上,点分布式追踪平台(Jaeger)实例的名称,如
jaeger-prod-elasticsearch
。
在
Jaeger Details
页面上,点击
Resources
选项卡。等到所有 Pod 的状态变为“Running”再继续操作。
4.2.3.1. 通过 CLI 部署分布式追踪平台生产策略
按照以下步骤,从命令行创建分布式追踪平台(Jaeger)实例。
已安装 OpenShift Elasticsearch Operator。
已安装 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator。
您已查看了如何自定义部署的说明。
您可以访问与 OpenShift Container Platform 版本匹配的 OpenShift CLI(
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
运行以下命令,创建一个名为
$ oc new-project tracing-system
jaeger-production.yaml
的自定义资源文件,其中包含上一步中的示例文件文本。
运行以下命令来部署分布式追踪平台(Jaeger):
$ oc create -n tracing-system -f jaeger-production.yaml 在安装过程中运行以下命令来监控 pod 的进度: $ oc get pods -n tracing-system -w 安装过程完成后,您会看到类似以下示例的输出: NAME READY STATUS RESTARTS AGE elasticsearch-cdm-jaegersystemjaegerproduction-1-6676cf568gwhlw 2/2 Running 0 10m elasticsearch-cdm-jaegersystemjaegerproduction-2-bcd4c8bf5l6g6w 2/2 Running 0 10m elasticsearch-cdm-jaegersystemjaegerproduction-3-844d6d9694hhst 2/2 Running 0 10m jaeger-production-collector-94cd847d-jwjlj 1/1 Running 3 8m32s jaeger-production-query-5cbfbd499d-tv8zf 3/3 Running 3 8m32s 4.2.4. 从 Web 控制台部署分布式追踪平台流策略
示例 Jaeger-streaming.yaml 文件
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: jaeger-streaming
spec:
strategy: streaming
collector:
options:
kafka:
producer:
topic: jaeger-spans
brokers: my-cluster-kafka-brokers.kafka:9092 1
storage:
type: elasticsearch
ingester:
options:
kafka:
consumer:
topic: jaeger-spans
brokers: my-cluster-kafka-brokers.kafka:9092
如果没有定义代理,AMQStreams 1.4.0+ self-provisions Kafka。
点
Create
创建分布式追踪平台(Jaeger)实例。
在
Jaegers
页面上,点分布式追踪平台(Jaeger)实例的名称,如
jaeger-streaming
。
在
Jaeger Details
页面上,点击
Resources
选项卡。等到所有 Pod 的状态变为“Running”再继续操作。
4.2.4.1. 通过 CLI 部署分布式追踪平台流策略
按照以下步骤,从命令行创建分布式追踪平台(Jaeger)实例。
已安装 AMQ Streams Operator。如果使用 1.4.0 或更高版本,您可以使用自助置备。否则,您必须创建 Kafka 实例。
已安装 Red Hat OpenShift distributed tracing Platform (Jaeger) Operator。
您已查看了如何自定义部署的说明。
您可以访问与 OpenShift Container Platform 版本匹配的 OpenShift CLI(
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:8443
运行以下命令,创建一个名为
$ oc new-project tracing-system
jaeger-streaming.yaml
的自定义资源文件,其中包含上一步中的示例文件文本。
运行以下命令来部署 Jaeger:
$ oc create -n tracing-system -f jaeger-streaming.yaml 在安装过程中运行以下命令来监控 pod 的进度: $ oc get pods -n tracing-system -w 安装过程完成后,您应该看到类似以下示例的输出: NAME READY STATUS RESTARTS AGE elasticsearch-cdm-jaegersystemjaegerstreaming-1-697b66d6fcztcnn 2/2 Running 0 5m40s elasticsearch-cdm-jaegersystemjaegerstreaming-2-5f4b95c78b9gckz 2/2 Running 0 5m37s elasticsearch-cdm-jaegersystemjaegerstreaming-3-7b6d964576nnz97 2/2 Running 0 5m5s jaeger-streaming-collector-6f6db7f99f-rtcfm 1/1 Running 0 80s jaeger-streaming-entity-operator-6b6d67cc99-4lm9q 3/3 Running 2 2m18s jaeger-streaming-ingester-7d479847f8-5h8kc 1/1 Running 0 80s jaeger-streaming-kafka-0 2/2 Running 0 3m1s jaeger-streaming-query-65bf5bb854-ncnc7 3/3 Running 0 80s jaeger-streaming-zookeeper-0 2/2 Running 0 3m39s 4.2.5. 验证部署4.2.5.1. 访问 Jaeger 控制台要访问 Jaeger 控制台,您必须安装 Red Hat OpenShift Service Mesh 或 Red Hat OpenShift distributed tracing 平台,并安装、配置和部署 Red Hat OpenShift distributed tracing Platform (Jaeger)。 安装过程会创建路由来访问 Jaeger 控制台。 如果您知道 Jaeger 控制台的 URL,您可以直接访问它。如果您不知道 URL,请使用以下指示: 从 Web 控制台的步骤
通过 CLI 操作的步骤
4.2.6. 自定义部署4.2.6.1. 部署最佳实践
4.2.6.2. 分布式追踪默认配置选项Jaeger 自定义资源(CR)定义创建分布式追踪平台 (Jaeger) 资源时要使用的架构和设置。您可以修改这些参数以根据您的业务需求自定义分布式追踪平台 (Jaeger) 实施。 Jaeger CR 的通用 YAML 示例
apiVersion: jaegertracing.io/v1 kind: Jaeger metadata: name: name spec: strategy: <deployment_strategy> allInOne: options: {} resources: {} agent: options: {} resources: {} collector: options: {} resources: {} sampling: options: {} storage: type: options: {} query: options: {} resources: {} ingester: options: {} resources: {} options: {} 表 4.1. Jaeger 参数
|