Введение в OpenTelemetry
Тема дорожной карты · Observability
OpenTelemetry — это открытый, независимый от поставщика фреймворк наблюдаемости для генерации, сбора и экспорта данных телеметрии — метрик, логов и распределённых трассировок — из облачно-нативных приложений. Он образовался путём слияния проектов OpenCensus и OpenTracing и является инкубируемым проектом CNCF с широким отраслевым распространением среди поставщиков, включая Datadog, Grafana, New Relic и AWS. OpenTelemetry предоставляет единый API и SDK для всех трёх столпов наблюдаемости, поэтому инженерным командам необходимо изучить только одну модель инструментирования вне зависимости от выбранного бэкенда. OpenTelemetry Collector (otel-collector) действует как центральный конвейер телеметрии, который принимает, обрабатывает и экспортирует данные в любой бэкенд; его конфигурация определяется YAML-файлом с секциями receivers, processors и exporters. Установка переменных окружения OTEL_SERVICE_NAME и OTEL_EXPORTER_OTLP_ENDPOINT — самый быстрый способ подключить инструментированное OpenTelemetry приложение к коллектору.
Как это работает
Введение в OpenTelemetry (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; оба работают.
Типичные ошибки
Ловушки Введение в OpenTelemetry: ручное инструментирование, когда сработала бы auto-instrumentation (DRY + баги); запуск Collector с дефолт-конфигом во внутренний API production (нет auth + TLS — защитите); pre-OTel и post-OTel SDK в одном проекте (путано, хрупко); не выставлены resources service.name + service.version (traces без provenance).