Я пытаюсь создать автоматическое инструментирование для пользовательской библиотеки (MyLibrary) с помощью инструментария Java OpenTelemetry. Моя цель — сгенерировать трассировки для метода метод1() в MyLibrary, который не принимает параметров и записывает в файл.
Я создал агент Java и следующие классы для инструментирования:< /p> MyLibraryInstrumentationModule
@AutoService(InstrumentationModule.class)
public class MyLibraryInstrumentationModule extends InstrumentationModule {
public MyLibraryInstrumentationModule() {
super("my-library");
}
@Override
public List typeInstrumentations() {
return Collections.singletonList(new MyLibraryInstrumentation());
}
}
public class MyLibraryInstrumentation implements TypeInstrumentation {
@Override
public ElementMatcher typeMatcher() {
return named("method1");
}
@Override
public void transform(TypeTransformer transformer) {
transformer.applyAdviceToMethod(
isPublic().and(named("method1")).and(takesNoArguments()),
this.getClass().getName() + "$MethodAdvice");
}
@SuppressWarnings("unused")
public static class MethodAdvice {
@Advice.OnMethodEnter(suppress = Throwable.class)
public static void methodEnter(
@Advice.Local("otelContext") Context context, @Advice.Local("otelScope") Scope scope) {
Context parentContext = currentContext();
instrumenter().start(parentContext, "this is request from start");
}
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
public static void methodExit(
@Advice.Local("otelContext") Context context, @Advice.Local("otelScope") Scope scope) {
if (scope == null) {
return;
}
scope.close();
instrumenter()
.end(
context,
"This is request end of the method1",
"This is response for end of method1",
null);
}
}
}
Проблема:
Я создал JAR-файл Java-агента с помощью приведенного выше кода.< /li>
Затем я запустил приложение с помощью -javaagent:path/to/opentelemetry-javaagent.jar.
Приложение работает нормально, но для метода 1() в моей MyLibrary не создается никаких следов .
Шаги отладки, которые я пробовал:
Проверил этот метод1() в MyLibrary вызывается.
Подтверждено, что агент Java загружается правильно, добавив другие инструменты, которые работают должным образом.
Проверено, что InstrumentationModule настроен правильно. зарегистрирован в META-INF/services/io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule.
Вопросы:
Почему инструментарий метода Method1() не работает?
Возможна ли проблема с логикой typeMatcher или преобразования в MyLibraryInstrumentation?
Как я могу отладить процесс инструментирования, чтобы определить, что идет не так?
Я пытаюсь создать автоматическое инструментирование для пользовательской библиотеки (MyLibrary) с помощью инструментария Java OpenTelemetry. Моя цель — сгенерировать трассировки для метода метод1() в MyLibrary, который не принимает параметров и записывает в файл. Я создал агент Java и следующие классы для инструментирования:< /p> [b]MyLibraryInstrumentationModule[/b] [code]@AutoService(InstrumentationModule.class) public class MyLibraryInstrumentationModule extends InstrumentationModule {
public MyLibraryInstrumentationModule() { super("my-library"); }
@Override public List typeInstrumentations() { return Collections.singletonList(new MyLibraryInstrumentation()); } } [/code] [b]MyLibrarySingletons[/b] [code]public class MyLibrarySingletons {
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.mylibrary"; private static final Instrumenter INSTRUMENTER;
instrumenter() .end( context, "This is request end of the method1", "This is response for end of method1", null); } } } [/code] [b]Проблема:[/b] [list] [*]Я создал JAR-файл Java-агента с помощью приведенного выше кода.< /li> Затем я запустил приложение с помощью -javaagent:path/to/opentelemetry-javaagent.jar. Приложение работает нормально, но для метода 1() в моей MyLibrary не создается никаких следов . [/list] [b]Шаги отладки, которые я пробовал:[/b] [list] [*]Проверил этот метод1() в MyLibrary вызывается. [*]Подтверждено, что агент Java загружается правильно, добавив другие инструменты, которые работают должным образом. [*]Проверено, что InstrumentationModule настроен правильно. зарегистрирован в META-INF/services/io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule. [/list] [b]Вопросы:[/b] [list] [*]Почему инструментарий метода Method1() не работает? [*]Возможна ли проблема с логикой typeMatcher или преобразования в MyLibraryInstrumentation? [*]Как я могу отладить процесс инструментирования, чтобы определить, что идет не так? [/list]
У меня есть базовая настройка opentelemetry, состоящая из:
Развертывание с использованием веб-сервера Tomcat (с подключенным во время выполнения Java-агентом отеля) несколько развертываний с различными микросервисами (с прикрепленным ко всем...
При использовании Java-агента OpenTelemetry или opentelemetry-spring-starter он может автоматически использовать Spring MVC и Spring Data. Это обеспечивает диапазоны для методов контроллера и операций с репозиторием, которые затем можно...
При использовании Java-агента OpenTelemetry или opentelemetry-spring-starter он может автоматически использовать Spring MVC и Spring Data. Это обеспечивает диапазоны для методов контроллера и операций с репозиторием, которые затем можно...
Приложение Spring Boot на основе версии 3.1.3
Добавлена зависимость Spring-boot-starter-actuator
Добавлена пользовательская метрика MyHealthMetricsExportConfiguration согласно документации (показано ниже)
В разделе...
Мне нужно реализовать локальное видео автоматического видео на моем сайте. Тем не менее, я знал, что новые браузеры, то есть Chrome, Mozilla и Safari, блокировали автоплавление, когда у видео нет «приглушенного» атрибута.
Итак,
Есть ли способ...