Подключение OpenTelemetry
На этой странице:
- Введение
- Включение поддержки OpenTelemetry на агенте
- Отправка трейсов и метрик OpenTelemetry Агенту ProtoOBP
Введение
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
-
Добавьте переменные окружения к контейнеру с 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
-
-
Убедитесь, что порты
4317
и4318
у контейнера открыты/подключены к хосту.
-
Включите эндпоинты 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
-
Есть чарт уже был применен, обновите его, чтобы новые параметры применились, например:
helm upgrade protoobp -f values.yaml protoobp/protoobp --namespace protoobp
Отправка трейсов и метрик OpenTelemetry Агенту ProtoOBP
-
Для контейнера с приложением установите переменную окружения
OTEL_EXPORTER_OTLP_ENDPOINT
так, чтобы она указывала на контейнер с Агентом. Например:OTEL_EXPORTER_OTLP_ENDPOINT=http://protoobp-agent:4318
-
Убедитесь, что оба контейнера (с приложением и Агентом) находятся в одной и той же 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