This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.2. 配置和部署分布式追踪平台(Tempo)
Tempo Operator 使用自定义资源定义(CRD)文件来定义创建和部署分布式追踪平台(Tempo)资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件。
4.2.1. 自定义部署 复制链接链接已复制到粘贴板!
有关配置后端存储的详情,请参考 了解持久性存储 以及您选择的存储选项的适当配置主题。
4.2.1.1. 分布式追踪默认配置选项 复制链接链接已复制到粘贴板!
Tempo 自定义资源(CR)定义创建分布式追踪平台(Tempo)资源时要使用的架构和设置。您可以修改这些参数以根据您的业务需求自定义分布式追踪平台(Tempo)实现。
通用 Tempo YAML 文件示例
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
apiVersion:
| 创建对象时要使用的 API 版本。 |
|
|
kind:
| 定义要创建的 Kubernetes 对象的种类。 |
| |
metadata:
|
唯一标识对象的数据,包括 |
OpenShift Container Platform 会自动生成 | |
name:
| 对象的名称。 | TempoStack 实例的名称。 |
|
spec:
| 要创建的对象的规格。 |
包含 TempoStack 实例的所有配置参数。当需要所有 Tempo 组件的通用定义时,会在 | N/A |
resources:
| 分配给 TempoStack 的资源。 | ||
storageSize:
| ingester PVC 的存储大小。 | ||
replicationFactor:
| 复制因素的配置。 | ||
retention:
| 保留 trace 的配置选项。 | ||
storage:
|
定义存储的配置选项。所有与存储相关的选项都必须放在 | ||
template.distributor:
|
Tempo | ||
template.ingester:
|
Tempo | ||
template.compactor:
|
Tempo | ||
template.querier:
|
Tempo | ||
template.queryFrontend:
|
Tempo | ||
template.gateway:
|
Tempo |
最低要求配置
以下是使用默认设置创建分布式追踪平台(Tempo)部署所需的最小值:
- 1
- 本节指定部署的对象存储后端,它需要一个含有凭据的 secret 才能访问对象存储。
4.2.1.2. 分布式追踪平台(Tempo)存储配置 复制链接链接已复制到粘贴板!
您可以在 spec.storage
下的 TempoStack
自定义资源中为分布式追踪平台(Tempo)配置对象存储。您可以从支持的多个存储供应商中选择。
参数 | 描述 | 值 | 默认值 |
---|---|---|---|
spec: storage: secret type:
| 要在部署中使用的存储类型。 |
|
|
storage: secretname:
| 包含设置对象类型凭证的 secret 名称。 | N/A | |
storage: tls: caName:
|
CA 是包含 CA 证书的 |
存储供应商 |
---|
Secret 参数 |
|
MinIO |
请参阅 MinIO Operator。
|
Amazon S3 |
|
Microsoft Azure Blob Storage |
|
Google Cloud Storage on Google Cloud Platform (GCP) |
|
4.2.1.3. 查询配置选项 复制链接链接已复制到粘贴板!
分布式追踪平台 (Tempo) 的两个组件,即 querier 和 query frontend,用于管理查询。您可以配置这两个组件。
querier 组件在 ingesters 或后端存储中查找请求的 trace ID。根据设置的参数,querier 组件可以查询 ingesters,并从后端拉取 bloom 或索引,以便在对象存储中搜索块。querier 组件在 GET /querier/api/traces/<traceID>
公开 HTTP 端点,但不预期直接使用它。查询必须发送到查询前端。
参数 | 描述 | 值 |
---|---|---|
| node-selection 约束的简单形式。 | 类型:对象 |
| 为组件创建的副本数。 | 类型:整数;格式: int32 |
| 特定于组件的 pod 容限。 | 类型:数组 |
查询前端组件负责为传入的查询对搜索空间进行分片。查询前端通过简单的 HTTP 端点公开 trace:GET /api/traces/<traceID>
。在内部,查询 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.2.1.4. 在 Jaeger UI 中配置 monitor 选项卡 复制链接链接已复制到粘贴板!
跟踪数据包含丰富的信息,数据在检测的语言和框架中规范化。因此,请求率、错误和持续时间(RED)指标可以从 trace 中提取。指标可以在 Jaeger 控制台的 Monitor 选项卡中视觉化。
指标派生自 OpenTelemetry Collector 中的 span,由 user-workload 监控堆栈中部署的 Prometheus 从 Collector 中提取。Jaeger UI 从 Prometheus 端点查询这些指标,并视觉化它们。
4.2.1.4.1. OpenTelemetry Collector 配置 复制链接链接已复制到粘贴板!
OpenTelemetry Collector 需要配置 spanmetrics
连接器,该连接器从 trace 中派生指标,并以 Prometheus 格式导出指标。
OpenTelemetry Collector 自定义资源,用于 span RED
4.2.1.4.2. Tempo 配置 复制链接链接已复制到粘贴板!
TempoStack
自定义资源必须指定以下内容: Monitor 选项卡已启用,Prometheus 端点则设置为 Thanos querier 服务,以从用户定义的监控堆栈查询数据。
带有启用的 Monitor 选项卡的 TempoStack 自定义资源
4.2.1.5. 多租户 复制链接链接已复制到粘贴板!
Tempo Gateway 服务中提供了带有身份验证和授权的多租户。身份验证使用 OpenShift OAuth 和 Kubernetes TokenReview
API。授权使用 Kubernetes SubjectAccessReview
API。
带有两个租户的 Tempo CR 示例,dev
和 prod
授权配置使用 Kubernetes 基于角色的访问控制(RBAC)的 ClusterRole
和 ClusterRoleBinding
。默认情况下,任何用户都没有读取或写入权限。
允许经过身份验证的用户读取 dev
和 prod
租户的 trace 数据的读取 RBAC 配置示例
允许 otel-collector
服务帐户编写 dev
租户的 trace 数据的写入 RBAC 配置示例
追踪数据可以从 OpenTelemetry 收集器发送到 Tempo 实例,该收集器使用带有 RBAC 的服务帐户来写入数据。
OpenTelemetry CR 配置示例
4.2.2. 为分布式追踪平台设置监控(Tempo) 复制链接链接已复制到粘贴板!
Tempo Operator 支持每个 TempoStack 组件的监控和警报,如经销商、ingester 等,并公开有关 Operator 本身的升级和操作指标。
4.2.2.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.2.2.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 规则。