Brave — это распределенная библиотека инструментов трассировки. Brave обычно перехватывает производственные запросы для сбора данных о времени, корреляции и распространения контекстов трассировки. Хотя обычно данные трассировки отправляются на сервер Zipkin, сторонние плагины доступны для отправки в альтернативные службы, такие как Amazon X-Ray.
Этот репозиторий включает библиотеки Java без зависимостей и инструменты для общих компонентов, используемых в производственных сервисах. Например, сюда входят фильтры трассировки для сервлетов и корреляция журналов для Apache Log4J.
Вы можете посмотреть наш пример проекта, чтобы узнать, как отслеживать простое веб-приложение.
Библиотека трассировки Brave без зависимостей работает с JRE6+. Это базовый API, который инструментарий использует для определения времени операций и добавления тегов, описывающих их. Эта библиотека также включает код, который анализирует заголовки X-B3-TraceId
.
Большинство пользователей не будут писать код трассировки напрямую. Скорее, они повторно используют инструменты, написанные другими. Прежде чем приступить к использованию своего собственного, ознакомьтесь с нашим оборудованием и списком Zipkin. Общие библиотеки трассировки, такие как JDBC, Servlet и Spring, уже существуют. Инструменты, написанные здесь, протестированы и протестированы.
Если вы пытаетесь отслеживать устаревшие приложения, вас может заинтересовать конфигурация Spring XML. Это позволяет настроить трассировку без какого-либо специального кода.
Возможно, вы захотите поместить идентификаторы трассировки в файлы журналов или изменить локальное поведение потока. Посмотрите наши контекстные библиотеки для интеграции с такими инструментами, как SLF4J.
Все библиотеки Brave соответствуют минимальной версии Java того, что отслеживается или с чем интегрируется, и не добавляют сторонних зависимостей. Цель состоит в том, чтобы не влиять на выбор ваших проектов и не подвергать ваш проект зависимости от решений, принятых другими.
Например, даже включая базовую библиотеку отчетов zipkin-sender-urlconnection, Brave транзитивно не включает json, ведение журналов, protobuf или зависимости от экономии. Это означает отсутствие проблем, если ваше приложение выбирает конкретную версию SLF4J, Gson или Guava. Более того, все дерево зависимостей, включая базовую отчетность в формате json, thrift или protobuf, занимает менее 512 КБ jar-файлов.
Существует базовая версия Java 1.6, которая поддерживает старые JRE и старые среды выполнения Android, но может ограничивать некоторые приложения. Например, Servlet 2.5 работает с Java 1.5, но поскольку Brave — это версия 1.6, вы не сможете отслеживать приложения Servlet 2.5, пока не используете хотя бы JRE 1.6.
Все интеграции устанавливают для связанной библиотеки «предоставленную» область действия. Это гарантирует, что Brave не будет мешать выбранным вами версиям.
Некоторые библиотеки часто обновляются, что приводит к дрейфу API. В некоторых случаях мы тестируем диапазоны версий, чтобы уменьшить влияние этого. Например, мы тестируем gRPC и Kafka на нескольких версиях библиотек.
Все артефакты публикуются с идентификатором группы «io.zipkin.brave». Мы используем общую версию релиза для всех компонентов.
Снимки загружаются в Sonatype, который синхронизируется с Maven Central.
Снимки загружаются в Sonatype после фиксации в мастере.
При использовании нескольких компонентов Brave вам потребуется объединить версии в одном месте. Это позволяет более безопасно выполнять обновление и меньше беспокоиться о конфликтах.
Для этого вы можете использовать нашу спецификацию инструментов Maven (спецификация материалов):
Бывший. в разделе зависимостей импортируйте спецификацию следующим образом:
< dependencyManagement >
< dependencies >
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-bom</ artifactId >
< version >${brave.version}</ version >
< type >pom</ type >
< scope >import</ scope >
</ dependency >
</ dependencies >
</ dependencyManagement >
Теперь вы можете отказаться от версии при выборе любого поддерживаемого инструментария. Кроме того, при любом косвенном использовании версии будут выровнены:
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-instrumentation-okhttp3</ artifactId >
</ dependency >
Имея вышеизложенное, вы можете использовать свойство brave.version
для согласованного переопределения версий зависимостей. Чаще всего это делается для тестирования новой функции или исправления.
Примечание. Если вы переопределяете версию, всегда дважды проверяйте, что ваша версия действительна (равна или более позднюю), чем та, которую вы обновляете. Это позволит избежать классовых конфликтов.