分布式追踪与服务网格

目录

使用服务网格配置分布式追踪平台

Alauda Service Mesh 通过集成以下组件支持分布式追踪:

  • Alauda Build of Jaeger:基于开源项目 Jaeger 的定制发行版,提供对复杂分布式系统中请求的端到端可视化。

  • Alauda Build of OpenTelemetry:基于 OpenTelemetry 项目,该组件通过管理 OpenTelemetry Collector 和工作负载的检测,实现跨指标、日志和追踪的遥测数据采集简化。

OpenTelemetry Collector 作为遥测信号的中介,支持多种数据格式,并提供标准化的管道,用于处理和导出遥测数据到如 Jaeger 等后端。

使用服务网格配置分布式追踪数据采集

您可以将 Alauda Service Mesh 与 OpenTelemetry 集成,实现对 OpenTelemetry 追踪、指标和日志的检测、生成、采集和导出,从而分析和理解软件的性能与行为。

前提条件

  • 已安装 Alauda Build of Jaeger。
  • 已安装 Alauda Build of OpenTelemetry。
  • cpaas-system 命名空间中已安装并配置 Jaeger 实例。
  • 已创建 Istio 实例。
  • 已创建 Istio CNI 实例。

操作步骤

进入 OperatorHub 中的 Alauda Build of OpenTelemetry,并在 istio-system 命名空间中创建 OpenTelemetryCollector

istio-system 命名空间中的 OpenTelemetry Collector 示例

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel
  namespace: istio-system
spec:
  observability:
    metrics: {}
  deploymentUpdateStrategy: {}
  config:
    processors:
      batch: {}
    exporters:
      debug: {}
      otlp:
        endpoint: 'dns:///jaeger-prod-collector-headless.cpaas-system:4317'
        balancer_name: round_robin
        tls:
          insecure: true
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: '0.0.0.0:4317'
    service:
      pipelines:
        traces:
          exporters:
            - debug
            - otlp
          processors:
            - batch
          receivers:
            - otlp
  1. endpoint 字段指向 cpaas-system 命名空间中的 Jaeger collector 服务。

更新 Istio 资源以启用追踪,并定义 OpenTelemetry 追踪提供者:

示例:通过 meshConfig 启用追踪

apiVersion: sailoperator.io/v1
kind: Istio
metadata:
  name: default
  # ...
spec:
  namespace: istio-system
  # ...
  values:
    meshConfig:
      enableTracing: true
      extensionProviders:
      - name: otel
        opentelemetry:
          port: 4317
          service: otel-collector.istio-system.svc.cluster.local
  1. service 字段指向 istio-system 命名空间中的 OpenTelemetry collector 服务。

更新 Telemetry 资源以启用 meshConfig 中定义的追踪提供者:

Istio Telemetry 资源示例

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: asm-default
  namespace: istio-system
  # ...
spec:
  # ...
  tracing:
    - providers:
        - name: otel
      randomSamplingPercentage: 100
NOTE

一旦确认可以看到追踪数据,请降低 randomSamplingPercentage 的值或设置为 default,以减少请求数量。