Я провожу время с DynaTrace. Я впечатлен своей особенностью, связанной с кросс-jvm-инструментами. Простыми словами, DynaTrace способен обрабатывать Java-код, создавая трассировку с некоторой статистической информацией. Это ничего нового. Есть очень интересная функция: при вызове внешнего JVM DynaTrace может связать эту новую трассировку с вызывающим (например, удаленный сеансовый компонент, веб-службы, удаленный RMI и т.д.). Как это возможно? Я не могу представить, как реализовать эту функцию? Есть идеи?
спасибо
Dynatrace фактически не полагается на информацию из bean-компонентов. Как вы правильно сказали в своих вопросах - мы используем инструмент байтового кода, например, другие инструменты на рынке. Мы используем ключевые методы для определенных фреймворков, например: Servlet, Axis, JMS, JDBC,... В сценарии, в котором вы выполняете вызов от одной JVM к другой, используя, например: HTTP-связь, мы используем как отправную сторону HTTP Запрос, а также принимающая сторона на другой JVM. На отправляющей стороне мы присоединяем дополнительный HTTP-заголовок с идентификатором текущего PurePath. PurePath - наша патентная технология. Таким образом, каждый PurePath (= каждая транзакция) получает уникальный идентификатор. Этот идентификатор "отправляется" с запросом, например: мы помещаем его в HTTP-запрос в качестве HTTP-шейдера. На принимающей стороне - ваша вторая JVM - мы проверяем этот HTTP-HEADer и поэтому знаем, что все данные, которые мы собираем, принадлежат этому PurePath. Это позволяет нам вести реальную сквозную трассировку, не полагаясь на такие вещи, как Beans, или не сопоставляя эти данные, например: timestamps
Имеет смысл? Если у вас есть дополнительные вопросы, дайте мне знать. Я также записал несколько видеороликов и поместил на YouTube, чтобы объяснить технологию и сам продукт: http://bit.ly/dttutorials
Эта информация обычно извлекается с использованием MXBeans. Такие компоненты предоставляют стандартный API для доступа к стандартной информации о времени выполнения. Аналогичным образом, такие приложения часто просматривают загрузчики классов для определенных классов и извлекают необходимую информацию по жестко кодированному доступу. Вот почему менее популярные решения часто не поддерживаются инструментами мониторинга.