advanced
OpenTelemetry
Инструментируйте приложения vendor-neutral API, SDK, exporters, propagation контекста и semantic conventions.
OpenTelemetry (OTel) — vendor-neutral API, SDK и semantic conventions для traces, metrics и logs. Instrument один раз, экспорт в Jaeger, Tempo, Datadog, Honeycomb или облака через OTLP.
import { NodeSDK } from '@opentelemetry/sdk-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
const sdk = new NodeSDK({
traceExporter: otlpExporter,
instrumentations: [getNodeAutoInstrumentations()],
});
await sdk.start();
| Часть | Роль | |-------|------| | API | Tracer/meter в коде приложения | | SDK | Sampling, batching, export | | Collector | Приём, обработка, маршрутизация | | Semantic conventions | Стандартные имена атрибутов |
Auto-instrumentation быстро покрывает HTTP и драйверы БД; manual spans на бизнес-границах. Контролируйте cardinality кастомных атрибутов.
На интервью: OTel vs proprietary agents, паттерны деплоя collector и смена exporter без переinstrumentation.
Типовые ошибки: двойная instrumentation; export всего с debug cardinality; collector как узкое место без масштабирования.
Компромисс — переносимость и стандарты против сложности setup для маленьких команд.
Чеклист:
- Auto-instrumentation для HTTP/DB.
- Export через OTLP в collector или vendor.
- Semantic conventions для атрибутов.
- Sampling и batch до export.