awesome-everything EN
↑ Обратно к восхождению

Наблюдаемость

Сигналы OTel, Semantic Conventions и проводной формат OTLP

Суть Трассировки, метрики и логи имеют отдельные SDK-пайплайны и форматы OTLP-сообщений, но разделяют общие Resource и trace context — ключи объединения для кросс-сигнальной корреляции без ручного маппинга полей.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 12 min

Ваши метрики идут в vendor-A, логи — в vendor-B, трассировки — в vendor-C. Запрос падает, но ни один бэкенд не согласен с другим по имени поля для сервиса. Кросс-сигнальная корреляция превращается в работу со спредшитом. Semantic Conventions OTel — это решение.

Три сигнала, одна модель данных

OTel охватывает три типа сигналов в стабильной форме. Каждый имеет собственный API, SDK-пайплайн и форму OTLP-сообщения, но все три разделяют два концепта: Resource (атрибуты эмиттера — service.name, host.name, cloud.region, устанавливаются один раз при старте сервиса) и Trace Context (trace_id, span_id), позволяющий перейти от строки лога к соответствующей трассировке.

Трассировки — GA с 2021 года. Основной рабочий инструмент. Каждый бэкенд поддерживает их. Трассировка — это дерево спанов, каждый из которых имеет время начала, длительность, статус и атрибуты. Ключ объединения между сервисами — trace_id, передаваемый через заголовок W3C traceparent.

Метрики — GA с 2023 года. API поддерживает счётчики, gauge, гистограммы и экспоненциальные гистограммы (новый стандарт для высокоточной задержки, заменяющий фиксированные бакеты). Метрики агрегируются внутри SDK перед экспортом; проводной формат содержит resource-metrics батчи.

Логи — API стабилен с конца 2023, SDK стабилен с конца 2024. Библиотеки-мосты (“OTel log bridge” для slf4j, structlog, pino) позволяют существующему коду отправлять OTel-логи без переписывания. Проводной формат содержит resource-logs батчи с теми же полями trace_id/span_id, что и у трассировок.

Профили — экспериментальные в конце 2024/2025, GA ожидается в 2026 году как четвёртый сигнал.

СигналGAOTLP-сообщениеКлюч объединения
Трассировки2021ExportTraceServiceRequesttrace_id
Метрики2023ExportMetricsServiceRequestservice.name через Resource
ЛогиAPI 2023 / SDK 2024ExportLogsServiceRequesttrace_id, span_id

Semantic Conventions: общий словарь

Независимо от четырёхкомпонентной архитектуры, OTel публикует Semantic Conventions — нормативный набор имён атрибутов для типовых операций.

  • Resource: service.name, service.version, deployment.environment, host.name, cloud.region
  • HTTP: http.request.method, http.route, http.response.status_code, url.full
  • Базы данных: db.system, db.operation, db.namespace
  • Очереди сообщений: messaging.system, messaging.destination.name, messaging.operation

Это ключи объединения, благодаря которым метрики, логи и трассировки компонуются. Соблюдение Semantic Conventions — наиболее высокоуровневая практика в OTel: каждый авто-дашборд бэкенда и каждый кросс-командный запрос зависят от консистентного заполнения атрибутов. Зрелые платформенные команды создают языково-специфичную обёртку вокруг OTel SDK, которая предварительно конфигурирует извлечение атрибутов так, что о них нельзя забыть.

OTLP: проводной формат, связывающий всё вместе

OTLP — это определённый через protobuf проводной протокол с двумя транспортами:

  • OTLP/gRPC — бинарный protobuf поверх HTTP/2. Предпочтительный вариант. Примерно на 50-70% меньше JSON, кодируется в 2-5 раз быстрее. Поддерживает стриминг.
  • OTLP/HTTP — protobuf или JSON поверх HTTP/1.1. Существует для сред, где gRPC заблокирован (некоторые файрволы), или для браузерной телеметрии.

Три OTLP-сообщения: ExportTraceServiceRequest, ExportMetricsServiceRequest и ExportLogsServiceRequest. Каждый OTel-совместимый бэкенд предоставляет OTLP-эндпоинт. Проводной формат стабилен уже несколько лет и развивается с обратной совместимостью.

Контракт vendor-нейтральности: если ваш edge (приложение или его sidecar) отправляет OTLP — вы vendor-нейтральны. Если edge отправляет проприетарный формат — нет, даже если шлюз позже конвертирует.

Почему это работает

Зачем экспоненциальные гистограммы? Фиксированные бакеты гистограмм (0-10 мс, 10-50 мс, 50-100 мс и т.д.) требуют выбора границ в момент инструментирования. Если распределение задержки меняется — например, медленный путь внезапно занимает диапазон 1-5 с — нужен редеплой с новыми бакетами. Экспоненциальные гистограммы (в Prometheus они называются “native histograms”) используют логарифмическую шкалу и динамически подстраивают разрешение. Они дают полное распределение задержки без угадывания границ заранее. SDK OTel по умолчанию использует экспоненциальные гистограммы для новых счётчиков.

Викторина

Какой транспорт OTLP предпочтителен для связи сервис-Collector и почему?

Викторина

Команда использует `http_route` (нижнее подчёркивание) вместо `http.route` (точка) для атрибута HTTP-маршрута. Что сломается?

Расставь шаги по порядку

Упорядочите сигналы OTel от наиболее зрелого к наименее зрелому (по дате GA):

  1. 1 Трассировки (GA 2021)
  2. 2 Метрики (GA 2023)
  3. 3 Логи API (GA конец 2023), SDK (GA конец 2024)
  4. 4 Профили (экспериментальные, GA ожидается 2026)
Вспомните перед уходом
  1. 01
    Какие два общих концепта делают кросс-сигнальную корреляцию возможной в OTel?
  2. 02
    Почему Semantic Conventions — наиболее высокоуровневая практика в OTel?
  3. 03
    Что такое контракт vendor-нейтральности и где именно он находится?
Итог

OTel определяет три стабильных сигнала — трассировки (GA 2021), метрики (GA 2023), логи (API стабилен конец 2023, SDK конец 2024) — каждый со своим SDK-пайплайном и типом OTLP-сообщения, но все разделяют концепт Resource (атрибуты эмиттера: service.name) и Trace Context (trace_id, span_id) для кросс-сигнальной корреляции. Semantic Conventions дают каждому атрибуту нормативное имя, чтобы метрики, логи и трассировки компоновались без ручного маппинга полей. Проводной формат — OTLP: protobuf поверх gRPC (предпочтительно, на 50-70% меньше JSON, в 2-5 раз быстрее) или HTTP (для сред с ограничениями или браузеров). Отправляйте OTLP на edge приложения, и каждая смена бэкенда станет изменением конфигурации Collector.

Связанные уроки
встречается в202
Продолжить восхождение ↑Авто-инструментирование и ручные спаны: правило 80/20 в OTel
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.