Кросс-инструментарий JVM

Я провожу время с DynaTrace. Я впечатлен его функцией, связанной с перекрестным инструментарием jvm. Проще говоря, DynaTrace может использовать код Java для создания трассировки с некоторой статистической информацией. В этом нет ничего нового. Есть очень интересная функция: когда выполняется вызов внешней JVM, DynaTrace может связать эту новую трассировку с трассировкой вызывающего (т. е. удаленного сеансового компонента, веб-сервисов, удаленного RMI и т. д.). Как это возможно? Я не могу представить, как реализовать эту функцию? Любые идеи?

Спасибо


person DocJava    schedule 22.12.2014    source источник


Ответы (2)


Dynatrace на самом деле не полагается на информацию от бобов. Как вы правильно сказали в своих вопросах, мы используем инструменты байт-кода, такие как другие инструменты на рынке. Мы инструментируем ключевые методы определенных фреймворков, например: Servlet, Axis, JMS, JDBC,... В сценарии, когда вы делаете вызов с одной JVM на другую, используя, например, связь на основе Запрос, а также принимающая сторона на другой JVM. На стороне отправки мы прикрепляем дополнительный HTTP-заголовок с идентификатором текущего PurePath. PurePath — наша запатентованная технология. Таким образом, каждый PurePath (= каждая отдельная транзакция) получает уникальный идентификатор. Этот идентификатор «путешествует» с запросом, например: мы помещаем его в HTTP-запрос в качестве HTTP-заголовка. НА принимающей стороне — вашей второй JVM — мы проверяем этот HTTP-заголовок и, следовательно, знаем, что все данные, которые мы собираем, принадлежат этому PurePath. Это позволяет нам выполнять настоящую сквозную трассировку, не полагаясь на такие вещи, как Beans, или без корреляции этих данных на основе, например, временных меток.

Имеет смысл? Если у вас есть дополнительные вопросы, дайте мне знать. Я также записал несколько видеороликов и разместил их на YouTube, чтобы объяснить технологию и сам продукт: http://bit.ly/dttutorials

person Andreas Grabner    schedule 11.02.2015
comment
Привет Андреас, спасибо за ваш ответ. В качестве примера вы используете HTTP-запрос, но я полагаю, что механизм между JVM работает также для RMI, веб-сервисов и любых других технологий удаленного вызова. Я думаю, что вы не будете изменять подпись mothid в случае вызова RMI/EJB, так как вы передаете свой идентификатор на удаленную JVM? - person DocJava; 12.02.2015
comment
Привет Андреас, еще раз спасибо за ваш ответ. Я понимаю, что вы не можете поделиться технической реализацией коммерческого продукта. Но это информация, которую я ищу, даже если в качестве общего описания. - person DocJava; 16.02.2015
comment
Как и в случае с HTTP, мы нашли способы добавить наш идентификатор PurePath в протокол, не нарушая ни один из компонентов, участвующих в этой связи. С HTTP мы используем заголовок HTTP. Для RMI подход немного другой. К сожалению, я не могу рассказать вам точные детали, как бы мне этого ни хотелось. Для JMS или MSMQ мы используем свойства сообщения. То же верно и для WCF. - person Andreas Grabner; 16.02.2015
comment
@AndreasGrabner - я понимаю, что PurePath запатентован как есть, со всеми деталями реализации, но как насчет идеи инструментирования кода для соответствия HTTP-связи через дополнительный HTTP-заголовок? Должен ли он также рассматриваться как запатентованный? Я хотел бы сделать такой инструмент с аналогичным подходом и не уверен, где заканчивается ваш патент... - person Konrad Kokosa; 12.08.2015
comment
Я предполагаю, что нет патента на добавление пользовательского HTTP-заголовка в каждый запрос тега и трассировки. Вы должны быть сохранены, чтобы двигаться вперед с таким подходом - person Andreas Grabner; 24.08.2015

Эта информация обычно извлекается с помощью MXBeans. Такие bean-компоненты предоставляют стандартный API для доступа к стандартной информации времени выполнения. Точно так же такие приложения часто сканируют загрузчики классов в поисках определенных классов и извлекают соответствующую информацию с помощью жестко запрограммированного доступа. Вот почему менее популярные решения часто не поддерживаются инструментами мониторинга.

person Rafael Winterhalter    schedule 23.12.2014