[Перевод] Давайте использовать OpenTelemetry со Spring

Команда Spring АйО перевела статью, раскрывающую преимущества использования OpenTelemetry для мониторинга и трассировки Spring Boot приложений.

В статье показано, как интеграция с OpenTelemetry с использованием OTLP и других компонентов позволяет легко встроить стандартизированный сбор метрик, логов и трассировок в экосистему Spring.

Введение

В мире современных технологий observability, OpenTelemetry — это новый набор инструментов, который пришел на смену проектам OpenCensus и OpenTracing. В контексте Spring Framework, Spring Boot, Spring Data и Spring Cloud уже активно применяются зрелые решения, такие как Micrometer — стандарт для observability в Java. Проект OpenTelemetry включает множество компонентов, из которых особенно выделяется протокол OpenTelemetry Protocol (OTLP). Этот протокол позволяет разработчикам унифицировать формат телеметрии и интегрировать его с любыми бэкэндами, поддерживающими OTLP. Давайте посмотрим, как Spring Boot интегрируется с этими инструментами, обеспечивая высокий уровень observability.

Мощь Observation API в Micrometer

Observation API в Micrometer — ключевая часть стратегии observability Spring Boot. Это надежное и универсальное решение, которое легко интегрируется с различными системами мониторинга и трассировки. Почему оно является лучшим выбором для Spring Boot приложений?

  • Стабильность и надежность: Micrometer — проверенное временем решение, обеспечивающее стабильную платформу для работы с observability.

  • Широкая совместимость: Micrometer поддерживает множество протоколов (AppOptics, Azure Monitor, Netflix Atlas, AWS CloudWatch, Datadog, Dynatrace, Elastic, и другие), включая OTLP, что гарантирует совместимость с OpenTelemetry и другими инструментами observability.

  • Универсальная интеграция: Observation API используется как в проектах на Spring, так и вне его, предоставляя единый API для упрощения настройки метрик и публикации собранных данных.

  • Простота API: Один раз настроив обработку, можно получать множественные преимущества — трассировка, метрики, логи и другое.

  • Гибкость в выборе: Micrometer позволяет разработчикам свободно выбирать технологии observability, что обеспечивает устойчивость к изменениям в технологическом стекe.

Использование протокола OpenTelemetry

Протокол OpenTelemetry (OTLP) облегчает взаимодействие между различными инструментами наблюдаемости. Благодаря OTLP приложения Spring Boot могут экспортировать логи, метрики и трассировки в стандартизированном формате, что упрощает интеграцию с разными бэкендами и платформами. В конечном счёте, главное — это протокол!

Почему OTLP важен:

  • Стандартизация: OTLP предоставляет единый способ экспорта данных наблюдаемости, обеспечивая совместимость и снижая сложность интеграции.

  • Гибкость: Используя OTLP, разработчики могут выбирать лучшие инструменты под свои задачи, не привязываясь к конкретному поставщику или технологическому стеку.

  • Защита на будущее: По мере развития сферы наблюдаемости OTLP гарантирует, что ваши данные трассировки останутся доступными и пригодными для использования в различных системах.

Знакомство с Micrometer

Spring всегда стремится к абстракциям и свободе выбора для разработчиков. То же касается и Micrometer, созданного в 2016 году с идеей: «как SLF4J, но для метрик». Micrometer позволяет абстрагировать ваш код от конкретного бэкенда метрик. С 2022 года Micrometer поддерживает OTLP через специальный OtlpMeterRegistry.

Мы хотели внедрить аналогичную абстракцию для трассировки. Поэтому перенесли зрелый проект Spring Cloud Sleuth (основан в 2014 году) в Micrometer Tracing, сделав его независимым от Spring. С Micrometer Tracing вы можете выбрать любую библиотеку трассировки по своему усмотрению (трассер управляет жизненным циклом span (span — структура данных, хранящая информацию о единой операции, прим. пер.) и критичен для распределенной трассировки). Micrometer Tracing поддерживает две библиотеки: OpenZipkin Brave (Brave) и OpenTelemetry.

Мы верим в зрелые, проверенные решения, поэтому считаем Micrometer и Brave ключевыми инструментами в наборе средств observability в Spring Boot. Они предоставляют надежные возможности, помогая разработчикам отслеживать и анализировать запросы в распределённых системах.

Micrometer и Brave отлично работают с Micrometer Observation и оба поддерживают OTLP. Это гарантирует, что ваши метрики (уже около двух лет) и данные трассировки могут быть легко экспортированы и использованы (через недавно выпущенный проект zipkin-otel).

Постоянное совершенствование

Команда Spring досконально знает Spring Framework, ведь мы работаем с ним каждый день. Мы серьёзно подходим к observability, а наш опыт и понимание потребностей сообщества помогают нам создавать отличный UX для разработчиков. Мы верим, что возможности фреймворка и их сопровождение идут рука об руку: код, документация и поддержка.

Никто не идеален, и мы тоже. Мы осознаем, что всегда есть возможность улучшить опыт использования OpenTelemetry и Spring. Сейчас мы работаем над тем, чтобы OTLP стал полноправным элементом (first class citizen) в метриках, трассировках, логировании и семантических соглашениях. Это приведёт к лучшей автоконфигурации, улучшенной поддержке в библиотеках и упрощению работы для разработчиков.

Spring Boot и OpenTelemetry: Пример использования

Порой одна картинка стоит тысячи слов — давайте взглянем на результат выполнения кода, доступного здесь.

Настройка Maven для интеграции Spring Boot с OpenTelemetry (OTLP) через Micrometer Observation, Micrometer Core и Micrometer Tracing:

Зависимости





	org.springframework.boot

	spring-boot-starter-actuator









	io.micrometer

	micrometer-registry-otlp









	io.micrometer

	micrometer-tracing-bridge-brave









	io.zipkin.contrib.otel

	encoder-brave

	0.1.0







	com.github.loki4j

	loki-logback-appender

	1.5.2

	runtime

Граф узлов клиентского консольного приложения, отправляющего HTTP-запросы на сервер

9c1cdf3d03c75201b35efc1ac7eb1305.png

Корреляция логов с помощью Spring Boot, Micrometer Observation, Micrometer Tracing и OpenZipkin Brave

ceddf78b32476507f9829aa9106144bd.png

Просмотр трассировки: данные span«ов в формате OTLP, полученные через OTel Brave Encoder (также с использованием Micrometer Observation, Micrometer Tracing и OpenZipkin Brave)

76b70c62e763d2f4743af0b8ebdccb61.png

Анализ задержек входящих запросов в Spring Boot с Micrometer Observation, Micrometer Core, Micrometer OTLP push MeterRegistry и включенным приемником OTLP в Prometheus

c2314d8fcf905097799426120ce803bc.png

Выводы

Подход Spring Boot к observability:

  • Экспертиза библиотек: Разработчики, поддерживающие код, также отвечают за его инструментирование.

  • Интегрированные решения: С Micrometer и Brave все необходимые инструменты встроены в экосистему Spring Boot, обеспечивая согласованный и надежный фреймворк с точки зрения observability.

  • Важность протокола: Стандартизируя протокол через OTLP, упрощается интеграция с различными бэкендами и платформами observability.

Spring Boot активно внедряет принципы OpenTelemetry, используя OTLP, Micrometer для метрик, Brave для трассировки и Micrometer Observation в качестве общей абстракции, что демонстрирует приверженность надежной и устойчивой observability. Благодаря этим инструментам разработчики получают полную картину происходящего в приложении. Такой подход не только упрощает настройку observability, но и обеспечивает стабильную и зрелую платформу для продакшена. Spring Boot — настоящий поклонник OpenTelemetry, что видно по легкости интеграции с мощными инструментами observability.

Полезные ссылки

725c0cddbe78ce9d7a9dd868c3632ad6.png

Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм — Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.

Ждем всех,  присоединяйтесь

© Habrahabr.ru