Exporter Configuration

Exporters 定义了如何将遥测数据从已植入的原生应用发送到可观测性后端。Instrumentation 自定义资源允许您配置控制遥测数据目标和格式的 exporter 设置。

基本 Exporter 配置

Instrumentation CR 中的 exporter 配置指定了遥测数据应发送到的端点:

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: my-instrumentation
spec:
  exporter:
    endpoint: http://otel-collector:4317

此配置将所有遥测数据(trace、metric 和 log)通过 OTLP 协议发送到指定端点。

OTLP 协议

OpenTelemetry Protocol (OTLP) 是传输遥测数据的原生协议。它支持 gRPC 和 HTTP 两种传输方式:

  • gRPC - 默认端口 4317,二进制协议,序列化效率高
  • HTTP - 默认端口 4318,支持 HTTP/1.1 或 HTTP/2,使用 protobuf 或 JSON 编码

您可以通过环境变量指定协议:

spec:
  exporter:
    endpoint: http://otel-collector:4318
  env:
    - name: OTEL_EXPORTER_OTLP_PROTOCOL
      value: http/protobuf

信号特定端点

您可以为不同的遥测信号配置不同的端点:

spec:
  env:
    - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
      value: http://traces-collector:4318/v1/traces
    - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
      value: http://metrics-collector:4318/v1/metrics
    - name: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
      value: http://logs-collector:4318/v1/logs

这样可以将不同类型的遥测数据路由到专门的后端。

Exporter Headers

您可以为 exporter 请求添加自定义头部,用于认证或路由:

spec:
  env:
    - name: OTEL_EXPORTER_OTLP_HEADERS
      value: "api-key=your-api-key,tenant-id=production"

头部以逗号分隔的键值对形式指定。

超时配置

配置导出超时以控制 SDK 等待导出操作的时间:

spec:
  env:
    - name: OTEL_EXPORTER_OTLP_TIMEOUT
      value: "10000"

超时时间以毫秒为单位。

压缩

启用压缩以减少网络带宽使用:

spec:
  env:
    - name: OTEL_EXPORTER_OTLP_COMPRESSION
      value: gzip

支持的压缩算法包括 gzipnone

示例配置

以下是一个完整的 exporter 配置示例:

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: production-instrumentation
  namespace: production
spec:
  exporter:
    endpoint: http://otel-collector.observability.svc:4318
  env:
    - name: OTEL_EXPORTER_OTLP_PROTOCOL
      value: http/protobuf
    - name: OTEL_EXPORTER_OTLP_TIMEOUT
      value: "10000"
    - name: OTEL_EXPORTER_OTLP_COMPRESSION
      value: gzip
TIP

当使用 OpenTelemetry Collector 作为后端时,请将 exporter 配置指向 Collector 的 OTLP 接收端点。Collector 可以处理路由、处理和转发遥测数据到多个后端。

验证 Exporter 配置

配置 exporter 后,通过以下方式验证遥测数据是否正确发送:

  1. 检查应用日志中的导出错误
  2. 监控后端系统的遥测数据接收情况
  3. 使用 OpenTelemetry Collector 的 debug exporter 检查数据流
NOTE

确保 exporter 端点对您的应用 Pod 可访问。网络策略、服务网格配置和防火墙规则可能影响连接性。