OpenTracing
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
Для обеспечения поддержки захвата данных о длине трассы.
- Перейдите в Настройки > Предпочтения > Функции ЕдиногоАгента.
- Фильтр для OpenTracing.
- Вы можете включить ЕдиныйАгент для следующих целей:
- Автоматически зарегистрировать Ключ-АСТРОМ в качестве системы трассировки
GlobalTracerи тем самым переопределить другие системы трассировки, зарегистрированные в приложении. Выберите этот параметр только в том случае, если вы уверены, что хотите переопределить другие системы трассировки (например, Jaeger) в вашей системе трассировки. - Автоматически зарегистрировать Ключ-АСТРОМ в качестве трассировки
GlobalTracer, если в приложении не зарегистрирован другая трассировка. Сделайте это, если вы не хотите, чтобы это мешало работе других трассировок в вашей системе трассировки.
- Автоматически зарегистрировать Ключ-АСТРОМ в качестве системы трассировки
- В коде вашего приложения используйте возвращаемое значение
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.