Проверяет понимание назначения OpenTelemetry как стандарта для сбора телеметрии в распределённых системах.
OpenTelemetry (OTel) — это open-source проект, который предоставляет единый стандарт для сбора телеметрии: распределённых трейсов, метрик и логов. Он объединяет бывшие проекты OpenTracing и OpenCensus, предлагая унифицированный API, SDK и инструменты для инструментирования приложений. Основная цель — упростить observability, позволяя разработчикам один раз добавить инструментирование и затем экспортировать данные в любую backend-систему (Jaeger, Prometheus, Grafana, Datadog и др.).
В микросервисной архитектуре запрос проходит через множество сервисов, и без стандартизированного сбора данных сложно отследить, где возникает задержка или ошибка. OpenTelemetry решает эту проблему, предоставляя единый способ генерации контекста (trace ID, span ID) и передачи его между сервисами. Это позволяет строить полную картину запроса от клиента до базы данных.
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
const provider = new NodeTracerProvider();
provider.addSpanProcessor(new SimpleSpanProcessor(new JaegerExporter()));
provider.register();
// Автоматическое инструментирование HTTP
require('@opentelemetry/instrumentation-http');
После этого каждый HTTP-запрос будет создавать спан, который отправляется в Jaeger для визуализации.
OpenTelemetry стоит применять в проектах с распределённой архитектурой, где требуется стандартизированный сбор телеметрии без привязки к конкретному вендору. Он упрощает интеграцию observability и облегчает переход между инструментами мониторинга.