OpenTracing

Материал из Документация Ключ-АСТРОМ
Версия от 19:56, 15 января 2026; IKuznetsov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

OpenTracing — это проект с открытым исходным кодом, предоставляющий API и инструменты для распределенной трассировки. Хотя OpenTracing и OpenCensus объединились в 2019 году, образовав OpenTelemetry, инструменты OpenTracing по-прежнему используются многими популярными фреймворками, библиотеками и проектами.

Ключ-АСТРОМ ЕдиныйАгент для Java автоматически собирает данные трассировки OpenTracing и интегрирует их в сквозные распределенные трассировки PurePath®. OpenTracing с ЕдинымАгентом позволяет:

  • Получить представление о сторонних библиотеках или фреймворках Java, которые изначально не поддерживаются ЕдинымАгентом, но поставляются с предварительным инструментарием OpenTracing.
  • Расширить данные мониторинга, добавляя информацию, специфичную для проекта (например, пользовательские инструменты, добавляющие бизнес-данные, или сбор диагностических данных, специфичных для разработчиков).
  • Объединить независимые, несвязанные транзакции, чтобы расширить сквозные распределенные трассировки (например, добавив независимые от поставщика пользовательские средства мониторинга для получения сквозных данных о транзакциях, специфичных для конкретных бизнес-процессов или предметной области).

Качество трассировок OpenTracing, получаемых с помощью ЕдиногоАгента, зависит от качества инструментов, предоставляемых сторонней библиотекой.

Предварительные требования

Система мониторинга Версии
OpenTelemetry 1.0 - 1.31 ,1,4 - 1,541
OpenTracing 0,33,0,32,0,31

1 Поддерживается в AWS Lambda.

Включение интеграции OpenTracing

Для обеспечения поддержки захвата данных о длине трассы.

  1. Перейдите в Настройки > Предпочтения > Функции ЕдиногоАгента.
  2. Фильтр для OpenTracing.
  3. Вы можете включить ЕдиныйАгент для следующих целей:
    • Автоматически зарегистрировать Ключ-АСТРОМ в качестве системы трассировки GlobalTracer и тем самым переопределить другие системы трассировки, зарегистрированные в приложении. Выберите этот параметр только в том случае, если вы уверены, что хотите переопределить другие системы трассировки (например, Jaeger) в вашей системе трассировки.
    • Автоматически зарегистрировать Ключ-АСТРОМ в качестве трассировки GlobalTracer, если в приложении не зарегистрирован другая трассировка. Сделайте это, если вы не хотите, чтобы это мешало работе других трассировок в вашей системе трассировки.
  4. В коде вашего приложения используйте возвращаемое значение GlobalTracer.get() для создания трассировок. Следующий пример показывает, как вручную создавать трассировки с помощью OpenTracing:
// Make sure to use the correct Tracer.

Tracer tracer = GlobalTracer.get();

SpanBuilder spanBuilder = tracer.buildSpan("hello");

spanBuilder.withTag("foo", "bar");

Span span = spanBuilder.start();

// Make sure to close every created Scope.

// It is recommended to use a try-with-resource statement for that.

try (Scope scope = tracer.activateSpan(span)) {

    // Do actual operation.

} finally {

    // Make sure to finish every started Span.

    span.finish();

}

В следующем примере показано, как использовать существующий осциллограф/библиотеку инструментов для создания трассировок с помощью OpenTracing:

HazelcastInstance untraced = HazelcastClient.newHazelcastClient();

// This operation will not be visible in astromkey.

untraced.getMap("map").put("key", "value");

// TracingHazelcastInstance implements the same interface (HazelcastInstance)

// but automatially creates span for every operation.

// It internally calls GlobalTracer.get().

// Available as a separate instrumentation scope/library:

// https://github.com/opentracing-contrib/java-hazelcast

HazelcastInstance traced = new TracingHazelcastInstance(

    HazelcastClient.newHazelcastClient(),

    false // traceWithActiveSpanOnly

);

// This operation will be visible in astromkey.

traced.getMap("map").put("key", "value");

См. раздел Настройки Span для получения информации обо всех параметрах конфигурации.

Ограничения

  • Сервис по умолчанию Span
  • При наличии инструментов ЕдиногоАгента и OpenTracing для одной и той же технологии (например, входящих веб-запросов через API) могут возникнуть следующие ограничения:
    • Дублирующиеся узлы в распределенных трассировках PurePath®
    • Дополнительная нагрузка
    • Для JDBC подобная двойная инструментация может нарушить обнаружение сервисов. Будьте особенно осторожны при включении поддержки ЕдиногоАгента OpenTracing Java для технологий, поддерживаемых ЕдинымАгентом по умолчанию.
  • В настоящее время интеграция трассировок из инструментария OpenTracing Spring Framework не поддерживается.
  • OpenTracing Java не захватывает атрибуты типа array.

Поддерживаемые технологии

Ключ-АСТРОМ интегрирует трассировки из любых инструментов OpenTracing. Мы успешно протестировали инструментарий следующих библиотек и фреймворков:

  • Hazelcast для OpenTracing Java
  • Couchbase начинает работу с версией java-client 3.1.3 для OpenTracing Java.