Ответ
OpenTelemetry (OTel) — это открытый стандарт и набор инструментов (API, SDK, агенты) для сбора телеметрии данных (логи, метрики, трассировки) из приложений. Это преемник OpenTracing и OpenCensus.
Ключевые концепции:
- Трассировка (Traces): Отслеживание пути запроса через распределенную систему. Состоит из спэнов (spans), которые представляют собой отдельные операции.
- Метрики (Metrics): Числовые измерения производительности системы (например, количество запросов в секунду, загрузка CPU).
- Логи (Logs): Текстовые записи о событиях.
Архитектура:
- API: Определяет интерфейсы для создания телеметрии в коде приложения.
- SDK: Реализация API, отвечает за обработку и экспорт данных.
- Коллектор (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();
}
Преимущества: Вендорно-независимый стандарт, унификация инструментирования кода, поддержка множества языков и бэкендов.