• Русский
  • Отправка телеметрических данных в OpenTelemetry Collector без внедрения sidecar

    Вместо внедрения sidecar вы можете развернуть OpenTelemetry Collector как отдельное развертывание. Приложения отправляют телеметрические данные в endpoint сервиса Collector по сети. Такой подход позволяет централизованному экземпляру Collector получать данные от нескольких приложений.

    Предварительные требования

    • Установлена сборка Alauda OpenTelemetry v2 Operator.
    • Установлена и развернута сборка Alauda Jaeger v2.
    • Активная сессия ACP CLI (kubectl), открытая администратором кластера с ролью cluster-admin.
    • Включите автоматическое создание RBAC, следуя инструкциям в Procedure.

    Процедура

    1. Разверните экземпляр OpenTelemetry Collector в режиме deployment, выполнив следующую команду:

      kubectl apply -f - <<EOF
      apiVersion: opentelemetry.io/v1beta1
      kind: OpenTelemetryCollector
      metadata:
        name: otel
        namespace: observability
      spec:
        mode: deployment
        replicas: 1
        config:
          receivers:
            jaeger:
              protocols:
                grpc: {}
                thrift_binary: {}
                thrift_compact: {}
                thrift_http: {}
            otlp:
              protocols:
                grpc:
                  endpoint: 0.0.0.0:4317
                http:
                  endpoint: 0.0.0.0:4318
            zipkin: {}
          processors:
            batch: {}
            k8sattributes: {}
            memory_limiter:
              check_interval: 1s
              limit_percentage: 80
              spike_limit_percentage: 20
          exporters:
            otlp/traces:
              endpoint: "<jaeger-instance-name>-collector:4317"
              tls:
                insecure: true
          service:
            pipelines:
              traces:
                receivers: [jaeger, otlp, zipkin]
                processors: [memory_limiter, k8sattributes, batch]
                exporters: [otlp/traces]
      EOF
      1. Namespace определяет, где создаются ресурсы Collector.
      2. Endpoint экспортера должен указывать на сервис Jaeger collector. Замените <jaeger-instance-name>-collector:4317 на фактическое имя сервиса вашего развертывания Jaeger.
    2. Задайте переменные среды в контейнере с вашим instrumented-приложением, чтобы отправлять телеметрические данные в Collector:

      kubectl apply -f - <<EOF
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: my-app
        namespace: observability
      spec:
        selector:
          matchLabels:
            app: my-app
        replicas: 1
        template:
          metadata:
            labels:
              app: my-app
          spec:
            containers:
            - name: app
              image: myapp:latest
              env:
              - name: OTEL_SERVICE_NAME
                value: "my-application"
              - name: OTEL_EXPORTER_OTLP_ENDPOINT
                value: "http://otel-collector.observability.svc.cluster.local:4318"
              - name: OTEL_EXPORTER_OTLP_PROTOCOL
                value: "http/protobuf"
              - name: OTEL_TRACES_SAMPLER
                value: "parentbased_traceidratio"
              - name: OTEL_EXPORTER_OTLP_TIMEOUT
                value: "20000"
              - name: OTEL_EXPORTER_OTLP_INSECURE
                value: "true"
      EOF

    Переменные среды

    В следующей таблице описаны переменные среды, используемые для настройки OpenTelemetry SDK в вашем приложении:

    Переменная средыОписаниеЗначение по умолчанию
    OTEL_SERVICE_NAMEЗадает значение атрибута ресурса service.name.""
    OTEL_EXPORTER_OTLP_ENDPOINTБазовый endpoint URL для экспортера OTLP.http://localhost:4317
    OTEL_EXPORTER_OTLP_CERTIFICATEПуть к файлу TLS-сертификата для проверки идентичности сервера.""
    OTEL_TRACES_SAMPLERSampler, используемый для traces.parentbased_always_on
    OTEL_EXPORTER_OTLP_PROTOCOLПротокол передачи для экспортера OTLP. Поддерживаемые значения: grpc, http/protobuf.grpc
    OTEL_EXPORTER_OTLP_TIMEOUTМаксимальное время ожидания (в миллисекундах) для экспортера OTLP.10000
    OTEL_EXPORTER_OTLP_INSECUREОтключать ли проверку TLS для экспортера OTLP.false