Exporters

Тема дорожной карты · Observability

Экспортеры OpenTelemetry — это компоненты, ответственные за сериализацию данных телеметрии и их передачу из SDK или otel-collector в конкретный бэкенд наблюдаемости. Экспортер OTLP является стандартным и рекомендуемым: он отправляет метрики, логи и трассировки в формате OpenTelemetry Protocol по gRPC или HTTP в любой OTLP-совместимый бэкенд. Дополнительные экспортеры поддерживают популярные форматы и системы: экспортер prometheus открывает HTTP-эндпоинт /metrics для scraping Prometheus, экспортер jaeger отправляет трассировки в Jaeger, экспортер zipkin поддерживает бэкенды Zipkin, а экспортер logging записывает телеметрию в stdout для отладки. Экспортеры настраиваются в секции exporters файла otel-collector-config.yaml и указываются в одном или нескольких определениях конвейера в service.pipelines. Переменная окружения OTEL_EXPORTER_OTLP_ENDPOINT управляет адресом, на который SDK-стороние OTLP-экспортеры отправляют данные, а OTEL_EXPORTER_OTLP_HEADERS добавляет заголовки аутентификации для управляемых платформ наблюдаемости.

Как это работает

Exporters (OTel) — vendor-neutral стандарт инструментирования. Спеки покрывают API + SDK + протокол (OTLP — gRPC или HTTP). Auto-instrumentation библиотеки — для популярных фреймворков. OTel Collector — sidecar/daemon, принимающий OTLP + роутящий в backends (Prometheus, Loki, Tempo, Jaeger, vendor API). Один API + SDK для метрик, логов, traces. Поддерживается CNCF, принят AWS, Google, Microsoft, Datadog, Splunk, Yandex.

Когда применять

OpenTelemetry — для любого нового проекта; нет причин запираться в vendor SDK. Auto-instrumentation сначала (покрывает 80% без изменения кода). Collector — для централизации роутинга; смена backend без переинструментирования приложений. Для метрик OTel может заменить Prometheus client libs или кормить Prometheus через OTLP-receiver; оба работают.

Типичные ошибки

Ловушки Exporters: ручное инструментирование, когда сработала бы auto-instrumentation (DRY + баги); запуск Collector с дефолт-конфигом во внутренний API production (нет auth + TLS — защитите); pre-OTel и post-OTel SDK в одном проекте (путано, хрупко); не выставлены resources service.name + service.version (traces без provenance).

Связанные понятия

Полезные ресурсы