8.3. 使用 Jaeger 启用分布式追踪

如果您不想安装 Red Hat OpenShift distributed tracing 的所有组件,您仍可使用带有 OpenShift Serverless 的 OpenShift Container Platform 上的分布式追踪。要做到这一点,您必须安装并配置 Jaeger 作为独立集成。

先决条件

  • 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
  • 已安装 OpenShift Serverless Operator、Knative Serving 和 Knative Eventing。
  • 已安装 Red Hat OpenShift distributed tracing platform Operator。
  • 已安装 OpenShift CLI(oc)。
  • 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。

流程

  1. 创建并应用包含以下内容的 Jaeger 自定义资源(CR):

    Jaeger CR

    apiVersion: jaegertracing.io/v1
    kind: Jaeger
    metadata:
      name: jaeger
      namespace: default

  2. 通过编辑 KnativeServing CR 并添加用于追踪的 YAML 配置来启用 Knative Serving 的追踪:

    Serving 的追踪 YAML 示例

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      config:
        tracing:
          sample-rate: "0.1" 1
          backend: zipkin 2
          zipkin-endpoint: "http://jaeger-collector.default.svc.cluster.local:9411/api/v2/spans" 3
          debug: "false" 4

    1
    sample-rate 定义抽样概率。sample-rate: "0.1" 表示在 10 个 trace 中会抽样 1 个。
    2
    后端 必须设为 zipkin
    3
    zipkin-endpoint 必须指向您的 jaeger-collector 服务端点。要获取此端点,请替换应用 Jaeger CR 的命名空间。
    4
    调试(debugging)应设为 false。通过设置 debug: "true" 启用调试模式,可绕过抽样将所有 span 发送到服务器。
  3. 通过编辑 KnativeEventing CR 来启用 Knative Eventing 的追踪:

    Eventing 的追踪 YAML 示例

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeEventing
    metadata:
      name: knative-eventing
      namespace: knative-eventing
    spec:
      config:
        tracing:
          sample-rate: "0.1" 1
          backend: zipkin 2
          zipkin-endpoint: "http://jaeger-collector.default.svc.cluster.local:9411/api/v2/spans" 3
          debug: "false" 4

    1
    sample-rate 定义抽样概率。sample-rate: "0.1" 表示在 10 个 trace 中会抽样 1 个。
    2
    backend 设置为 zipkin
    3
    zipkin-endpoint 指向 jaeger-collector 服务端点。要获取此端点,请替换应用 Jaeger CR 的命名空间。
    4
    调试(debugging)应设为 false。通过设置 debug: "true" 启用调试模式,可绕过抽样将所有 span 发送到服务器。

验证

您可以使用 jaeger 路由来访问 Jaeger web 控制台以查看追踪数据。

  1. 输入以下命令来获取 jaeger 路由的主机名:

    $ oc get route jaeger -n default

    输出示例

    NAME     HOST/PORT                         PATH   SERVICES       PORT    TERMINATION   WILDCARD
    jaeger   jaeger-default.apps.example.com          jaeger-query   <all>   reencrypt     None

  2. 在浏览器中使用端点地址来查看控制台。