4.2. 配置和部署分布式追踪平台(Tempo)

Tempo Operator 使用自定义资源定义(CRD)文件来定义创建和部署分布式追踪平台(Tempo)资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件。

4.2.1. 自定义部署

有关配置后端存储的详情,请参考 了解持久性存储 以及您选择的存储选项的适当配置主题。

4.2.1.1. 分布式追踪默认配置选项

Tempo 自定义资源(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: {}

表 4.3. Tempo 参数

参数描述默认值

apiVersion:

创建对象时要使用的 API 版本。

tempotracing.io/v1

tempotracing.io/v1

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> 节点下。

N/A

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
1
本节指定部署的对象存储后端,它需要一个含有凭据的 secret 才能访问对象存储。

4.2.1.2. 分布式追踪平台(Tempo)存储配置

您可以在 spec.storage 下的 TempoStack 自定义资源中为分布式追踪平台(Tempo)配置对象存储。您可以从支持的多个存储供应商中选择。

表 4.4. Tempo Operator 用来定义分布式追踪存储的一般存储参数

参数描述默认值
spec:
  storage:
    secret
      type:

要在部署中使用的存储类型。

内存。内存存储仅适用于开发、测试、演示和概念验证环境,因为数据在 pod 关闭时不会保留。

内存

storage:
  secretname:

包含设置对象类型凭证的 secret 名称。

 

N/A

storage:
  tls:
    caName:

CA 是包含 CA 证书的 ConfigMap 对象的名称。

  

表 4.5. 所需的 secret 参数

存储供应商

Secret 参数

Red Hat OpenShift Data Foundation

name: tempostack-dev-odf # example

bucket: <bucket_name> # requires an ObjectBucketClaim

endpoint: https://s3.openshift-storage.svc

access_key_id: <data_foundation_access_key_id>

access_key_secret: <data_foundation_access_key_secret>

MinIO

请参阅 MinIO Operator

name: tempostack-dev-minio # example

bucket: <minio_bucket_name> # MinIO documentation

endpoint: <minio_bucket_endpoint>

access_key_id: <minio_access_key_id>

access_key_secret: <minio_access_key_secret>

Amazon S3

name: tempostack-dev-s3 # example

bucket: <s3_bucket_name> # Amazon S3 documentation

endpoint: <s3_bucket_endpoint>

access_key_id: <s3_access_key_id>

access_key_secret: <s3_access_key_secret>

Microsoft Azure Blob Storage

name: tempostack-dev-azure # example

container: <azure_blob_storage_container_name> # Microsoft Azure documentation

account_name: <azure_blob_storage_account_name>

account_key: <azure_blob_storage_account_key>

Google Cloud Storage on Google Cloud Platform (GCP)

name: tempostack-dev-gcs # example

bucketname: <google_cloud_storage_bucket_name> # requires a bucket created in a GCP project

key.json: <path/to/key.json> # requires a service account in the bucket’s GCP project for GCP authentication

4.2.1.3. 查询配置选项

Query 是一个从存储中检索 trace 并托管用户界面来显示它们的服务。

表 4.6. Tempo Operator 用来定义 Query 的参数

参数描述默认值
spec:
  query:
    replicas:

指定要创建的 Query 副本数。

正整数

 

表 4.7. 传递给 Query 的配置参数

参数描述默认值
spec:
  query:
    options: {}

定义 Query 服务的配置选项。

  
options:
  log-level:

Query 的日志记录级别。

debug,info,warn,error,fatal,panic

 
options:
  query:
    base-path:

您可以将所有 tempo-query HTTP 路由的基本路径设置为非 root 值:例如,/tempo 将导致所有 UI URL 都以 /tempo 开头。这在在反向代理后面运行 tempo-query 时很有用。

/<path>

 

示例 Query 配置

apiVersion: tempotracing.io/v1
kind: "Tempo"
metadata:
  name: "my-tempo"
spec:
  strategy: allInOne
  allInOne:
    options:
      log-level: debug
      query:
        base-path: /tempo

4.2.2. 为分布式追踪平台设置监控(Tempo)

Tempo Operator 支持每个 TempoStack 组件的监控和警报,如经销商、ingester 等,并公开有关 Operator 本身的升级和操作指标。

4.2.2.1. 配置 TempoStack 指标和警报

您可以启用 TempoStack 实例的指标和警报。

先决条件

流程

  1. 要启用 TempoStack 实例的指标,请将 spec.observability.metrics.createServiceMonitors 字段设置为 true

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoStack
    metadata:
      name: <name>
    spec:
      observability:
        metrics:
          createServiceMonitors: true
  2. 要为 TempoStack 实例启用警报,请将 spec.observability.metrics.createPrometheusRules 字段设置为 true

    apiVersion: tempo.grafana.com/v1alpha1
    kind: TempoStack
    metadata:
      name: <name>
    spec:
      observability:
        metrics:
          createPrometheusRules: true

验证

您可以使用 Web 控制台的 Administrator 视图来验证配置是否成功:

  1. 进入 ObserveTargets,过滤 Source: User, 检查 ServiceMonitors(格式为 tempo-<instance_name>-<component>)的状态为 Up
  2. 要验证警报是否已正确设置,请转至 ObserveAlertingAlerting 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 视图来验证配置是否成功:

  1. 进入 ObserveTargets,过滤 Source: Platform,并搜索 tempo-operator,它必须具有 Up 状态。
  2. 要验证警报是否已正确设置,请转至 ObserveAlertingAlerting rules,过滤 Source: Platform,再找到 Tempo OperatorAlert 规则