将遥测数据转发到第三方系统

OpenTelemetry Collector 使用 OTLP exporter 通过 OpenTelemetry Protocol (OTLP) 导出遥测数据,该协议同时支持 gRPC 和 HTTP 传输。如果您需要将遥测数据转发到不支持 OTLP 或 Alauda Build of OpenTelemetry v2 支持的其他协议的第三方系统,可以部署一个不受支持的自定义 OpenTelemetry Collector。该 Collector 通过 OTLP 接收遥测数据,并使用自定义 exporter 将其转发到目标系统。

WARNING

Alauda 不支持用于第三方转发场景的自定义 Collector 部署。

前提条件

  • 您已开发自己的不受支持的自定义 exporter,能够将遥测数据转发到第三方系统。
  • 由具有 cluster-admin 角色的集群管理员建立的有效 ACP CLI (kubectl) 会话。

操作步骤

  1. 为自定义 Collector 配置创建一个 ConfigMap

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: custom-otel-collector-config
    data:
      otel-collector-config.yaml: |
        receivers:
          otlp:
            protocols:
              grpc:
        exporters:
          # Replace debug with the exporter required by your third-party system.
          debug: {}
        service:
          pipelines:
            traces:
              receivers: [otlp]
              exporters: [debug]
    1. debug 替换为您的第三方系统所需的 exporter。
  2. 部署自定义 Collector,并挂载来自 ConfigMap 的配置:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: custom-otel-collector-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          component: otel-collector
      template:
        metadata:
          labels:
            component: otel-collector
        spec:
          containers:
          - name: opentelemetry-collector
            image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest
            command:
            - "/otelcol-contrib"
            - "--config=/conf/otel-collector-config.yaml"
            ports:
            - name: otlp
              containerPort: 4317
              protocol: TCP
            volumeMounts:
            - name: otel-collector-config-vol
              mountPath: /conf
              readOnly: true
          volumes:
          - name: otel-collector-config-vol
            configMap:
              name: custom-otel-collector-config
    1. 将镜像替换为包含第三方系统所需 exporter 的目标 OpenTelemetry Collector 版本。
  3. 使用 Service 公开自定义 Collector:

    apiVersion: v1
    kind: Service
    metadata:
      name: custom-otel-collector-service
      labels:
        component: otel-collector
    spec:
      type: ClusterIP
      ports:
      - name: otlp-grpc
        port: 4317
        targetPort: 4317
      selector:
        component: otel-collector
    1. 在为 Alauda Build of OpenTelemetry v2 Collector 自定义资源配置 OTLP exporter 时,会使用该服务名称。
  4. 应用这些资源:

    kubectl apply -f custom-collector-configmap.yaml
    kubectl apply -f custom-collector-deployment.yaml
    kubectl apply -f custom-collector-service.yaml