Подключение OpenTelemetry

Подключение трейсинга c помощью OpenTelemetry.

На этой странице:

Введение

OpenTelemetry – это open source observability framework, предоставляющий ИТ-командам стандартизированные протоколы и инструменты для сбора и маршрутизации данных телеметрии. Созданный в качестве инкубаторского проекта Cloud Native Computing Foundation (CNCF), OpenTelemetry обеспечивает единообразный формат для инструментации, генерации, сбора и экспорта данных телеметрии приложений – метрик, журналов и трейсов – на платформы мониторинга для анализа и изучения.

Proto Observability Platform нативно поддерживает формат данных OpenTelemetry.

Если ваши приложения и сервисы инструментированы библиотеками OpenTelemetry, вы можете выбрать способ получения трейсов, метрик и логов в бэкэнд Proto Observability Platform.

Включение поддержки OpenTelemetry на агенте

Proto Observability Platform поддерживает стандарт W3C Trace Context, обеспечивая захват полного трейса, даже если запрос перемещается между сервисами, которые были инструментированы различными средствами. Обработка данных OTLP в Агентe ProtoOBP позволяет отправлять данные телеметрии непосредственно из приложений, оснащенных SDK OpenTelemetry. Агент может получать трейсы OTLP и метрики OTLP через gRPC или HTTP.

Чтобы приступить к работе, сначала подключите инструментацию для своего приложения с помощью OpenTelemetry SDK. Затем экспортируйте данные телеметрии в формате OTLP в Агента. Настройка этого зависит от типа инфраструктуры, на которой развернут ваш сервис, как описано на странице ниже. Хотя целью является совместимость с последней версией OTLP, обработка OTLP в Агенте совместима не со всеми версиями OTLP.

Ознакомьтесь с документацией по инструментации OpenTelemetry, чтобы понять, как направить данные в Агента. Раздел receiver, описанный ниже, соответствует схеме конфигурации receiver в OTLP OpenTelemetry Collector.

По умолчанию OTLP интеграция отключена, вы можете включить ее, изменив конфигурацию файла protoobp.yaml Агента или задав переменные окружения. Следующие конфигурации protoobp.yaml включают эндпоинты на портах по умолчанию. Для удобства в следующих примерах в качестве адреса эндпоинта используется 0.0.0.0. Это позволяет подключаться с любого сетевого интерфейса.

Для gRPC по умолчанию используется порт 4317:

otlp_config:
  receiver:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317

Для HTTP порт по умолчанию 4318:

otlp_config:
  receiver:
    protocols:
      http:
        endpoint: 0.0.0.0:4318

В качестве альтернативы можно настроить эндпоинты, указав порт в переменных окружения:

  • Для gRPC:

    POBP_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT=0.0.0.0:4317
    
  • Для HTTP:

    POBP_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT=0.0.0.0:4318
    
  1. Добавьте переменные окружения к контейнеру с ProtoOBP Агентом:

    • Для gRPC:

      POBP_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT: 0.0.0.0:4317
      
    • Для HTTP:

      POBP_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT: 0.0.0.0:4318
      
  2. Убедитесь, что порты 4317 и 4318 у контейнера открыты/подключены к хосту.

  1. Включите эндпоинты OTLP на агенте, отредактировав секцию protoobp.otlp в файле values.yaml Helm чарта:

    Для gRPC:

    otlp:
    receiver:
      protocols:
        grpc:
          endpoint: 0.0.0.0:4317
          enabled: true
    

    Для HTTP:

    otlp:
    receiver:
      protocols:
        http:
          endpoint: 0.0.0.0:4318
          enabled: true
    
  2. Есть чарт уже был применен, обновите его, чтобы новые параметры применились, например:

    helm upgrade protoobp -f values.yaml protoobp/protoobp --namespace protoobp
    

Отправка трейсов и метрик OpenTelemetry Агенту ProtoOBP

  1. Для контейнера с приложением установите переменную окружения OTEL_EXPORTER_OTLP_ENDPOINT так, чтобы она указывала на контейнер с Агентом. Например:

    OTEL_EXPORTER_OTLP_ENDPOINT=http://protoobp-agent:4318
    
  2. Убедитесь, что оба контейнера (с приложением и Агентом) находятся в одной и той же Docker сети, чтобы порт Агента был доступен для контейнера с приложением.

В файле деплоймента приложения укажите эндпоинт, который будет использоваться OpenTelemetry клиентом для отсылки трейсов с помощью переменной окружения OTEL_EXPORTER_OTLP_ENDPOINT.

Для gRPC:

env:
 - name: HOST_IP
   valueFrom:
     fieldRef:
       fieldPath: status.hostIP
 - name: OTEL_EXPORTER_OTLP_ENDPOINT
   value: "http://$(HOST_IP):4317" # gRPC

Для HTTP:

env:
 - name: HOST_IP
   valueFrom:
     fieldRef:
       fieldPath: status.hostIP
 - name: OTEL_EXPORTER_OTLP_ENDPOINT
   value: "http://$(HOST_IP):4318" # HTTP