第 5 章 从 Web 控制台部署 Jaeger streaming 策略

streaming 部署策略主要用于生产环境,在生产环境中,对 trace 数据进行长期存储非常重要,同时需要更容易扩展和高度可用的构架。

streaming 策略提供了在 Collector 和存储 (Elasticsearch) 之间发挥作用的流传输功能。这在高负载情况下降低了存储压力,并允许其他 trace 后处理功能直接从流传输平台 (Kafka) 中利用实时 span 数据。

注意

streaming 策略需要额外的 AMQ Streams 订阅。如果您没有 AMQ Streams 订阅,请联络您的销售代表以了解更多信息。

先决条件

  • 必须安装 AMQ Streams Operator。如果使用 1.4.0 或更高版本,您可以使用自助置备。否则,您需要创建 Kafka 实例。
  • 必须安装 Jaeger Operator。
  • 查看有关如何自定义 Jaeger 安装的说明。
  • 具有 cluster-admin 角色的帐户。

流程

  1. 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform web 控制台。
  2. 创建一个新项目,如 jaeger-system

    1. 浏览至 HomeProject
    2. 点击 Create Project
    3. Name 字段中输入 jaeger-system
    4. 点击 Create
  3. 导航到 OperatorsInstalled Operators
  4. 如果需要,请在 Project 菜单中选择 jaeger-system。您可能需要等待一些时间,让 Operator 复制到新项目中。
  5. 点 Jaeger Operator在 Overview 选项卡上的 Provided APIs 下,Operator 提供了单个链接。
  6. Jaeger 下点击 Create Instance
  7. Create Jaeger 页面上,将默认的 all-in-one yaml 文本替换为您的流传输 YAML 配置,例如:

示例 Jaeger-streaming.yaml 文件

apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: jaeger-streaming
spec:
  strategy: streaming
  collector:
    options:
      kafka:
        producer:
          topic: jaeger-spans
          #Note: If brokers are not defined,AMQStreams 1.4.0+ will self-provision Kafka.
          brokers: my-cluster-kafka-brokers.kafka:9092
  storage:
    type: elasticsearch
  ingester:
    options:
      kafka:
        consumer:
          topic: jaeger-spans
          brokers: my-cluster-kafka-brokers.kafka:9092

  1. 点击 Create 创建 Jaeger 实例。
  2. Jaegers 页面上,点击 Jaeger 实例的名称,如 jaeger-streaming
  3. Jaeger Details 页面上,点击 Resources 选项卡。等到所有 Pod 的状态变为“Running”再继续操作。

5.1. 通过 CLI 部署 Jaeger 流

按照以下步骤,通过命令行创建 Jaeger 实例。

先决条件

  • 已安装并验证 OpenShift Jaeger Operator。
  • 访问 OpenShift CLI(oc)。
  • 具有 cluster-admin 角色的帐户。

流程

  1. 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform CLI。

    $ oc login https://{HOSTNAME}:8443
  2. 创建一个名为 jaeger-system 的新项目。

    $ oc new-project jaeger-system
  3. 创建一个名为 jaeger-streaming.yaml 的自定义资源文件,其中包含上一步中的示例文件文本。
  4. 运行以下命令来部署 Jaeger:

    $ oc create -n jaeger-system -f jaeger-streaming.yaml
  5. 在安装过程中运行以下命令来监控 Pod 的进度:

    $ oc get pods -n jaeger-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