Что такое OpenTelemetry?

«Что такое OpenTelemetry?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

OpenTelemetry (OTel) — это открытый стандарт и набор инструментов (API, SDK, агенты) для сбора телеметрии данных (логи, метрики, трассировки) из приложений. Это преемник OpenTracing и OpenCensus.

Ключевые концепции:

  • Трассировка (Traces): Отслеживание пути запроса через распределенную систему. Состоит из спэнов (spans), которые представляют собой отдельные операции.
  • Метрики (Metrics): Числовые измерения производительности системы (например, количество запросов в секунду, загрузка CPU).
  • Логи (Logs): Текстовые записи о событиях.

Архитектура:

  1. API: Определяет интерфейсы для создания телеметрии в коде приложения.
  2. SDK: Реализация API, отвечает за обработку и экспорт данных.
  3. Коллектор (Collector): Прием, обработка и экспорт данных в различные системы мониторинга (Jaeger, Prometheus, Grafana Loki и др.).

Пример добавления трассировки в код:

// Создание трейсера
Tracer tracer = openTelemetry.getTracer("my.service.name");

// Создание спэна
Span span = tracer.spanBuilder("my-operation").startSpan();
try (Scope scope = span.makeCurrent()) {
    // Выполняемая операция
    span.setAttribute("http.method", "GET");
} finally {
    span.end();
}

Преимущества: Вендорно-независимый стандарт, унификация инструментирования кода, поддержка множества языков и бэкендов.