Windows agent для java

Java Agent на службе JVM

Как я написал выше javaagent это один из параметров JVM, который позволяет указать агент который будет запущен с вашим приложением, а точнее он будет запущен еще перед запуском вашего приложения. Сам агент это отдельное приложение которое предоставляет доступ к механизму манипуляции байт-кодом ( java.lang.instrument ) в runtime. Это если вкратце. Официальную документацию можно почитать тут, но она довольно скудная. Ничего непонятно? Итак, давайте разбираться. Лучше всего разбираться на примерах.

Напишем элементарный агент

Обратите внимание, агент обязательно должен реализовывать метод premain со следующей сигнатурой
public static void premain(String args);
или
public static void premain(String args, Instrumentation inst);

Класс агента должен быть упакован в jar и содержать MANIFEST.MF , с обязательным атрибутом
PreMain-Class — указывает на класс агента с premain методом. Есть и другие атрибуты агента, но они необязательные и сейчас нам не понадобятся.

Вот так будет выглядеть наш manifest.mf.
не забудьте добавить перевод строки в конец файла

Теперь упакуем все это в jar

И наконец класс испытатель

Запускаем AgentTester из командной строки

Из этого примера видно что:

  • метод premain исполняется еще до вызова метода main основного приложения.
  • агент указывается с помощью параметра -javaagent:jarpath[=options]

Давайте попробуем извлечь из агента какую-нибудь пользу

Вообще механизм агентов предназначен для манипуляции байт-кодом, но скажу сразу модифицировать байт-код в этой статье мы не будем иначе можно уйти далеко-далеко за пределы этого поста. Кому интересно можно посмотреть на javassist так как стандартных средств для работы с байт-кодом нет.

Напишем AgentCounter который будет выводить имя загружаемого класс и подсчитывать кол-во загруженных классов. Так мы сможем понаблюдать за работой classloader`a.

Обратите внимание, теперь я использую другую сигнатуру метода premain. В объект instrumentation я передаю ClassTransformer который и выполняет всю работу. ClassTransformer будет срабатывать каждый раз при загрузке класса. Если вы хотите использовать свой ClassTransformer, вы должны реализовать интерфейс java.lang.instrument.ClassFileTransformer и добавить свой объект через метод Instrumentation.addTransformer

classfileBuffer — это и есть байт-код текущего класса представленный в виде массива байт, для его переопределения трансформер должен вернуть новый массив байт, в данном примере мы не меняем содержимое класса поэтому просто возвращаем тот же массив.

Пакуем агент и трансформер в новый jar

Немного модифицируем класс тестер

Запускаем AgentTester c новым агентом
для разных версий java результаты могут отличаться

Если запустить какое-нибудь enterprise приложение с таким агентом, можно получить довольно интересные результаты, например один из проектов после старта выдал мне следующее:

Читайте также:  Windows starts in safe mode

Измеряем размер java объектов

Рассмотрим еще один пример использования агентов. Напишем класс который будет возвращать размер java объектов и javaagent будет играть ключевую роль. Кто как ни JVM может знать реальный размер созданного объекта, в интерфейсе Instrumentation есть замечательный метод long getObjectSize(Object objectToSize) который возвращает размер объекта. Но как из нашего приложения получить доступ к агенту? А делать ничего особенного и не придется, javaagent автоматически добавляется в classpath и нам остается только добавить в агент поле типа Instrumentation instrumentation и инициализировать его в методе premain.

Мы получаем доступ к методу AgentMemoryCounter.getSize(obj) из класса приложения.

Результаты работы приложения могу выглядеть следующим образом

Обратите внимание что метод getObjectSize() не учитывает размер вложенных объектов т.е учитывается только память затраченная на ссылку на объект.

Скачать бесплатно Mail.Ru Agent (Java)

Версия: 4.3.02 updated

Категории: Интернет & Коммуникации

Дата загрузки: 31 Янв 17

Разработчик: Mail.Ru

Тип распространения: бесплатная

Рейтинг: 3.8/5 (Всего голосов: 2370)

Скачать бесплатно Mail.Ru Agent (Java) для Java

Поиск по устройству
Мое устройство
Поиск по категориям
Базы данных
Бизнес & Профессия
Здоровье & Медицина
Игры
Интернет & Коммуникации
Мультимедиа & Графика
Наука & Образование
Программирование & Разработка
Словари & Переводчики
Темы & Обои & Скины
Туризм & Навигация
Управление задачами и временем
Утилиты
Финансы
Хобби & Развлечения
Чтение
Поиск по платформе
Android
Apple iPhone OS
iPad
iPhone
iPod Touch
BlackBerry
Java
Linux
Maemo Nokia Internet Tablet
MeeGO
Sharp Zaurus
Mobile Gaming
Nintendo DS
Playstation 3
Playstation Portable
Wii
Xbox 360
Palm OS
Symbian OS
Series 60
Series 80
Series 90
UIQ
Tablet PC
Windows CE.NET
Windows Mobile Pocket PC
Windows Mobile Smartphone

Версия: 4.3.02 updated

Категории: Интернет & Коммуникации

Дата загрузки: 31 Янв 17

Разработчик: Mail.Ru

Тип распространения: бесплатная

Рейтинг: 3.8/5 (Всего голосов: 2370)

Мониторинг зависимостей, перехваченных исключений и времени выполнения методов в веб-приложениях Java Monitor dependencies, caught exceptions, and method execution times in Java web apps

Подход, описанный в этом документе, больше не рекомендуется. The approach described in this document is no longer recommended.

Для мониторинга приложений Java рекомендуется использовать автоматическое инструментирование без изменения кода. The recommended approach to monitor Java applications is to use the auto-instrumentation without changing the code. Следуйте указаниям для Application Insights агента Java 3,0. Please follow the guidelines for Application Insights Java 3.0 agent.

Если вы выполнили Инструментирование веб-приложения Java с помощью пакета SDK для Application Insights, вы можете использовать агент Java для получения более подробных сведений, не внося изменения в код: If you have instrumented your Java web app with Application Insights SDK, you can use the Java Agent to get deeper insights, without any code changes:

Зависимости — данные о вызовах других компонентов в вашем приложении, включая: Dependencies: Data about calls that your application makes to other components, including:

  • Исходящие вызовы HTTP , выполненные через Apache HttpClient, OkHttp и, java.net.HttpURLConnection фиксируются. Outgoing HTTP calls made via Apache HttpClient, OkHttp, and java.net.HttpURLConnection are captured.
  • Вызовы Redis , выполненные через клиент Jedis, фиксируются. Redis calls made via the Jedis client are captured.
  • Запросы JDBC — для MySQL и PostgreSQL, если вызов занимает больше 10 секунд, агент сообщает о плане запроса. JDBC queries — For MySQL and PostgreSQL, if the call takes longer than 10 seconds, the agent reports the query plan.

Ведение журнала приложения: Запись и сопоставление журналов приложений с запросами HTTP и другими данными телеметрии Application logging: Capture and correlate your application logs with HTTP requests and other telemetry

  • Log4j 1,2Log4j 1.2
  • Log4j2Log4j2
  • LogbackLogback

Улучшенное именование операций: (используется для агрегирования запросов на портале) Better operation naming: (used for aggregation of requests in the portal)

  • Пружинный на основе @RequestMapping . Spring — based on @RequestMapping .
  • JAX-RS -на основе @Path . JAX-RS — based on @Path .

Чтобы использовать агент для Java, его необходимо установить на сервере. To use the Java agent, you install it on your server. Веб-приложения необходимо инструментировать пакетом SDK для Java Application Insights. Your web apps must be instrumented with the Application Insights Java SDK.

Установка агента Application Insights для Java Install the Application Insights agent for Java

На компьютере, на котором работает сервер Java, Скачайте агент 2. x. On the machine running your Java server, download the 2.x agent. Убедитесь, что используемая версия агента Java для версии 2. x соответствует версии пакета SDK для Java, установленного на языке 2. x Application Insights. Please make sure the version of the 2.x Java Agent that you use matches the version of the 2.x Application Insights Java SDK that you use.

Измените скрипт запуска сервера приложений и добавьте следующий аргумент ВИРТУАЛЬНОЙ машины Java: Edit the application server startup script, and add the following JVM argument:

Например, в Tomcat на компьютере Linux: For example, in Tomcat on a Linux machine:

export JAVA_OPTS=»$JAVA_OPTS -javaagent: «

Перезапустите сервер приложений. Restart your application server.

Настройка агента Configure the agent

Создайте файл с именем AI-Agent.xml и поместите его в ту же папку, где находится JAR-файл агента. Create a file named AI-Agent.xml and place it in the same folder as the agent JAR file.

Настройка содержимого XML-файла. Set the content of the xml file. Измените приведенный ниже пример, включив необходимые функции или убрав ненужные. Edit the following example to include or omit the features you want.

Дополнительная конфигурация (пружинная загрузка) Additional config (Spring Boot)

java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar

Для служб приложений Azure выполните следующие действия. For Azure App Services, do the following:

  • Выберите элементы «Параметры > Параметры приложения». Select Settings > Application Settings
  • В разделе «Параметры приложения» добавьте новую пару «ключ — значение»: Under App Settings, add a new key value pair:

Ключ: JAVA_OPTS значение: -javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.2.jar Key: JAVA_OPTS Value: -javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.2.jar

Агент должен быть упакован в проект в виде ресурса таким образом, чтобы он закончится в папке D:/Home, site/wwwroot/. The agent must be packaged as a resource in your project such that it ends up in the D:/home/site/wwwroot/ directory. Чтобы убедиться, что агент находится в нужном каталоге службы приложений, перейдите в меню средства разработки > Дополнительные инструменты > консоль отладки и проверьте содержимое каталога сайта. You can confirm that your agent is in the correct App Service directory by going to Development Tools > Advanced Tools > Debug Console and examining the contents of the site directory.

  • Сохраните параметры и перезапустите приложение. Save the settings and Restart your app. (Эти действия применимы только к службам приложений, работающим в Windows.) (These steps only apply to App Services running on Windows.)

Файлы агента AI-Agent.xml и JAR-файл должны быть в одной папке. AI-Agent.xml and the agent jar file should be in the same folder. Они часто расположены вместе в папке /resources проекта. They are often placed together in the /resources folder of the project.

Активация распределенной трассировки W3C Enable W3C distributed tracing

Добавьте к файлу AI-Agent.xml следующее: Add the following to AI-Agent.xml:

Режим обратной совместимости включен по умолчанию, и параметр enableW3CBackCompat является необязательным и должен использоваться только в том случае, если вы хотите отключить эту функцию. Backward compatibility mode is enabled by default and the enableW3CBackCompat parameter is optional and should be used only when you want to turn it off.

В идеале он может использоваться, когда все ваши службы обновлены к новой версии пакетов SDK, поддерживающих протокол консорциума W3C. Ideally this would be the case when all your services have been updated to newer version of SDKs supporting W3C protocol. Настоятельно рекомендуется перейти к новой версии пакетов SDK с поддержкой W3C как можно скорее. It is highly recommended to move to newer version of SDKs with W3C support as soon as possible.

Убедитесь, что оба входящий и исходящий (агенты) конфигурации совпадают. Make sure that both incoming and outgoing (agent) configurations are exactly same.

Просмотр данных View the data

В ресурсе Application Insights агрегированная Удаленная зависимость и время выполнения метода отображаются под плиткой «производительность». In the Application Insights resource, aggregated remote dependency and method execution times appear under the Performance tile.

Для поиска отдельных экземпляров отчетов по зависимостям, исключениям и методам откройте Поиск. To search for individual instances of dependency, exception, and method reports, open Search.

Читайте также:  Разные рабочие столы windows 10 с разными ярлыками
Оцените статью
Поиск по устройству
Мое устройство
Поиск по категориям
Базы данных
Бизнес & Профессия
Здоровье & Медицина
Игры
Интернет & Коммуникации
Мультимедиа & Графика
Наука & Образование
Программирование & Разработка
Словари & Переводчики
Темы & Обои & Скины
Туризм & Навигация
Управление задачами и временем
Утилиты
Финансы
Хобби & Развлечения
Чтение
Поиск по платформе
Android
Apple iPhone OS
iPad
iPhone
iPod Touch
BlackBerry
Java
Linux
Maemo Nokia Internet Tablet
MeeGO
Sharp Zaurus
Mobile Gaming
Nintendo DS
Playstation 3
Playstation Portable
Wii
Xbox 360
Palm OS
Symbian OS
Series 60
Series 80
Series 90
UIQ
Tablet PC
Windows CE.NET
Windows Mobile Pocket PC
Windows Mobile Smartphone