第 4 章 分布式追踪平台(Tempo)


4.1. 安装分布式追踪平台(Tempo)

安装分布式追踪平台(Tempo)涉及以下步骤:

  1. 设置支持的对象存储。
  2. 安装 Tempo Operator。
  3. 为对象存储凭据创建 secret。
  4. 为 TempoStack 实例创建命名空间。
  5. 创建 TempoStack 自定义资源,以至少部署一个 TempoStack 实例。

4.1.1. 对象存储设置

在设置受支持的对象存储时,您可以使用以下配置参数。

表 4.1. 所需的 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.1.2. 从 web 控制台安装分布式追踪平台(Tempo)

您可以从 web 控制台的 Administrator 视图安装分布式追踪平台(Tempo)。

先决条件

流程

  1. 安装 Tempo Operator:

    1. 进入 Operators OperatorHub 并搜索 Tempo Operator
    2. 选择 Tempo OperatorOpenShift Operator for Tempo Install Install View Operator.

      重要

      这会使用默认预设置来安装 Operator:

      • Update channel stable
      • Installation mode All namespaces on the cluster
      • Installed Namespace openshift-tempo-operator
      • Update approval Automatic
    3. 在已安装 Operator 页面的 Details 选项卡中,在 ClusterServiceVersion details 下验证安装 Status 是否为 Succeeded
  2. 为您要在后续步骤中创建的 TempoStack 实例创建一个项目: 进入 Home Projects Create Project
  3. 在您为 TempoStack 实例创建的项目中,为您的对象存储桶创建一个 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

  4. 创建 TempoStack 实例。

    注意

    您可以在同一集群中的独立项目中创建多个 TempoStack 实例。

    1. 进入 Operators Installed Operators
    2. 选择 TempoStack Create TempoStack YAML view
    3. YAML 视图中,自定义 TempoStack 自定义资源(CR):

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage:
          secret:
            name: <secret-name> 1
            type: <secret-provider> 2
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
      1
      secret metadataname 的值。
      2
      可接受的值是 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:
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route

      本例中部署的堆栈被配置为接收通过 HTTP 和 OpenTelemetry 协议(OTLP)的 Jaeger Thrift,它允许使用 Jaeger UI 可视化数据。

    4. 选择 Create

验证

  1. 使用 Project: 下拉列表选择 TempoStack 实例的项目。
  2. 进入 Operators Installed Operators,以验证 TempoStack 实例的 Status 是否为 Condition: Ready
  3. 进入 Workloads Pods,以验证 TempoStack 实例的所有组件 pod 都在运行。
  4. 访问 Tempo 控制台:

    1. 进入 Networking RoutesCtrl+F,以搜索 tempo
    2. Location 列中,打开 URL 以访问 Tempo 控制台。
    3. 选择 Log In With OpenShift,将集群管理员凭证用于 Web 控制台。

      注意

      Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。

4.1.3. 使用 CLI 安装分布式追踪平台(Tempo)

您可以从命令行安装分布式追踪平台(Tempo)。

先决条件

流程

  1. 安装 Tempo Operator:

    1. 运行以下命令,为 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
      EOF
    2. 运行以下命令来创建 Operator 组:

      $ oc apply -f - << EOF
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: openshift-tempo-operator
        namespace: openshift-tempo-operator
      spec:
        upgradeStrategy: Default
      EOF
    3. 运行以下命令来创建订阅:

      $ 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
    4. 运行以下命令检查 Operator 状态:

      $ oc get csv -n openshift-tempo-operator
  2. 运行以下命令,为您将在后续步骤中创建的 TempoStack 实例创建您选择的项目:

    $ oc apply -f - << EOF
    apiVersion: project.openshift.io/v1
    kind: Project
    metadata:
      name: <project_of_tempostack_instance>
    EOF
  3. 在您为 TempoStack 实例创建的项目中,运行以下命令来为您的对象存储桶创建一个 secret:

    $ oc apply -f - << EOF
    <object_storage_secret>
    EOF

    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

  4. 在您为 TempoStack 实例创建的项目中创建一个 TempoStack 实例。

    注意

    您可以在同一集群中的独立项目中创建多个 TempoStack 实例。

    1. 自定义 TempoStack 自定义资源(CR):

      apiVersion: tempo.grafana.com/v1alpha1
      kind: TempoStack
      metadata:
        name: sample
        namespace: <project_of_tempostack_instance>
      spec:
        storageSize: 1Gi
        storage:
            secret:
                name: <secret-name> 1
                type: <secret-provider> 2
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route
      1
      secret metadataname 的值。
      2
      可接受的值是 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:
          secret:
            name: minio-test
            type: s3
        resources:
          total:
            limits:
              memory: 2Gi
              cpu: 2000m
        template:
          queryFrontend:
            jaegerQuery:
              enabled: true
              ingress:
                route:
                  termination: edge
                type: route

      本例中部署的堆栈被配置为接收通过 HTTP 和 OpenTelemetry 协议(OTLP)的 Jaeger Thrift,它允许使用 Jaeger UI 可视化数据。

    2. 运行以下命令来应用自定义 CR。

      $ oc apply -f - << EOF
      <TempoStack_custom_resource>
      EOF

验证

  1. 运行以下命令,验证所有 TempoStack 组件状态是否为 Running,并且条件type: Ready

    $ oc get tempostacks.tempo.grafana.com simplest -o yaml
  2. 运行以下命令,验证所有 TempoStack 组件 pod 是否正在运行:

    $ oc get pods
  3. 访问 Tempo 控制台:

    1. 运行以下命令来查询路由详情:

      $ export TEMPO_URL=$(oc get route -n <control_plane_namespace> tempo -o jsonpath='{.spec.host}')
    2. 在网页浏览器中打开 https://<route_from_previous_step>
    3. 使用 Web 控制台的集群管理员凭证登录。

      注意

      Tempo 控制台最初不会在 Tempo 控制台安装后显示 trace 数据。

4.1.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.