Java Application Performance Monitoring

Monitor everything about your Java applications with one tool

Retrace integrates code profiling, error tracking, application logs, and more

In this article I will be taking a look at 9 tools to help you with Java Performance Tuning, some are used by us at IDR Solutions and others that we may use for personal projects. NetBeans Profiler NetBeans Profiler is found in NetBeans. Monitor Java application performance — focused on business transactions — end-to-end in the most complex and distributed environments. Auto-discovered business transactions, dynamic baselining, code-level diagnostics, and Virtual War Room collaboration ensure rapid issue identification and resolution to maintain an ideal user experience for any Java application, running on-premises or in cloud. APM is application performance management for monitoring and managing the performance of your code, application dependencies, transaction times, and overall user experience. There are three types of monitoring and managing apps and the list of top application performance monitoring tools. Monitor Java application performance — focused on business transactions — end-to-end in the most complex and distributed environments. Auto-discovered business transactions, dynamic baselining, code-level diagnostics, and Virtual War Room collaboration ensure rapid issue identification and resolution to maintain an ideal user experience for any Java application, running on-premises or in cloud. Learn the metrics and planning tips you'll need to monitor applications written in Java. How to Monitor Your Java Application. Than-optimal performance. Developing a Solid Monitoring Plan.

Quickly troubleshoot problems and identify ways to optimize your code

Retrace collects detailed snapshots of what your code is doing and how long it takes

Monitor your containerized applications quickly and easily

Java Application Server Performance Monitoring

Retrace goes beyond APM to give developers all the tools they need in one easy to use solution

Retrace uses lightweight profiling to automatically track key methods in your code. Detailed performance data helps you understand how your code is performing and how to improve it.

  • Low application overhead
  • Safe for production usage
  • SaaS based solution

Our monitoring agent is installed on each of your servers or containers. Please review our docs to learn more.

Retrace automatically instruments dozens of common Java frameworks and application dependencies.

Application

Retrace is designed to work well with cloud based workloads that automatically scale up and down. Multiple cloud deployment options are supported.

Retrace also works with any physical server or virtual machine.

Quickly identify which part of your application stack is the bottleneck and which web requests are being affected.

  • Slow application dependencies
  • Slow SQL queries
  • Slow web requests
  • Top application errors

Retrace uses lightweight profiling to capture critical details about what your code is doing. Get deep, code-level insights into your application’s health. We call it Retrace because you can literally retrace what your code is doing!

Java Application Performance Monitoring Report

  • Key methods in common libraries
  • SQL queries
  • External HTTP calls
  • Exceptions
  • Log messages
  • ... and much more

Sending your logs to Retrace is easy with log4j, logback or our library.

  • Integrated error & web request profiling traces
  • Support for log tags & structured logging
  • Log monitoring

Quickly find exceptions in your code before your customers do.

Sending your logs is easy via log4j, logback or our library.

  • Get alerted about new and regressed errors
  • View related logging to an exception
  • Identify unique exceptions
  • Monitor exception rates

Monitor everything about your servers and applications in one place. Retrace includes powerful monitoring capabilities.

  • Charting, alerts, & notifications
  • Server monitoring
  • Custom application metrics via Stackify SDKs
  • Error rates

Download our free eBook to learn all of our advanced tips for monitoring your .NET applications.

Download Prefix, our free Java profiler to understand what your code is doing and find bugs.

Learn why developers love Retrace’s APM + logging solution in one affordable solution.

-->

Getting started with monitoring Java applications requires these four general steps:

  1. Import and configure the Management Pack for Java Enterprise Edition (JEE)

  2. Import the Management Pack for Java Application Performance Monitoring

  3. Manually deploy the Java Application Performance Monitoring Agent

  4. Verify the Java Application Performance Monitoring Agent deployment

Import and configure the management pack for Java Enterprise Edition

  1. Import and configure the Management Pack for Java Enterprise Edition (JEE), including installation of BeanSpy application. Java Application Performance Monitoring will not work without the JEE management pack configured and BeanSpy installed.

    Important

    Although the Management Pack for JEE supports several types of application servers, Java Application Monitoring only supports Tomcat.

    Download the Management Pack for JEE and the Management Pack Guide for JEE. This management pack monitors JEE application servers and is available for IBM WebSphere, Oracle WebLogic, Red Hat JBoss, and Apache Tomcat. Go to the System Center Management Pack for Java Enterprise Edition (JEE) on the Microsoft Download Center, click Download, and then select the files you want to download. For example, select the management pack (SC2012OM_JEE_MP.msi) and select the Management Pack Guide for Tomcat (OpsMgr_MP_Tomcat.docx).

    Important

    Make sure to download the corresponding management pack guide (.docx file) for the application server you are using. It contains the details of how to install the management pack and describes what is monitored.

    The System Center Management Pack for Tomcat, for example, allows an IT administrator to monitor the health of JEE application server instances in Operations Manager. In addition, it provides the option to deploy BeanSpy, an open source technology from Microsoft, that provides deeper monitoring, which includes memory usage.

  2. After the management packs for the JEE application servers are imported, the instances of Tomcat application servers will be automatically discovered. The discovery interval is set to 4 hours by default, so discovery can take up to that length of time. On Tomcat, an application server must be running for Operations Manager to discover it for the first time. After an instance of an application is discovered, the configuration is removed only when the application server is uninstalled.

    To monitor instances of the Tomcat Application Server, in the Operations console, click Monitoring, expand Application Monitoring, expand Java Monitoring, expand JEE Application Servers, expand Tomcat Application Server, and then select the monitoring folder you want. For details, see the Management Pack Guide for Tomcat or the management pack guide for JEE monitoring that you chose to download.

  3. Follow the procedure to deploy BeanSpy to an application server. BeanSpy is an open source technology from Microsoft that relies on Java Management Extension (JMX) to enable the monitoring pack to get detailed information from the application server instances.

  4. Using instructions in the Management Pack Guide for JEE, follow the procedure to enable deep monitoring mode.

Import the management pack for Java Application Performance Monitoring

  1. Now that the Management Pack for Java Enterprise Edition is imported and configured and BeanSpy deployed, import the Management Pack for Java Application Performance Monitoring. Download the management pack from the Microsoft Download Center.

  2. The Management Pack for Java Application Performance Monitoring (JavaAPMManagementPack.msi) contains these files:

    • Microsoft.JEE.APM.Library.mpb

    • Microsoft.JEE.Tomcat.APM.Library.mp

    • Microsoft.JEE.Tomcat.5.Apm.mp

    • Microsoft.JEE.Tomcat.6.Apm.mp

    • Microsoft.JEE.Tomcat.7.Apm.mp

    Import these library management packs:

    • Microsoft.JEE.APM.Library.mpb

    • Microsoft.JEE.Tomcat.APM.Library.mp

  3. Import the management packs for the versions of the Tomcat application servers that you are monitoring.

    • Microsoft.JEE.Tomcat.5.Apm.mp

    • Microsoft.JEE.Tomcat.6.Apm.mp

    • Microsoft.JEE.Tomcat.7.Apm.mp

Manually deploy the Java Application Performance Monitoring agent and enable Java Application Performance Monitoring

  1. Now that you have configured the Management Pack for Java Enterprise Edition (JEE) through deep monitoring and imported the Management Pack for Java Application Performance Monitoring, you are ready to manually deploy the Java Application Performance Monitoring agent. To see application servers you have configured for monitoring, in Monitoring, click Configurations.

  2. To enable Java Application Performance Monitoring, in the Monitoring pane, in the Tasks pane, click Deep Monitored Configurations, and then select a deep monitoring application server.

  3. After you select an application server to enable Java Application Performance Monitoring on, in the Tasks pane, in Monitored application server instance Tasks, click Extract APM Jar files. This extracts the Java agent files to either the monitored machine (when a server is running Windows), or to the gateway or management server (when a server is running Linux). The Task output tells you which machine the files have been extracted to and where they were extracted. For more information, see the Management Pack Guide for Java Application Performance Monitoring.

  4. Next, reconfigure the Java application server. To enable Java Application Performance Monitoring, specify command line options that use Jar file as class loader and then restart the application. Another discovery after you install the agent enables Application Performance Monitoring.

Java Application Performance Monitoring Systems

Verify Application Performance Monitoring agent deployment and override monitors

Java Application Performance Monitoring Services

  1. To verify if Application Performance Monitoring is monitoring an application, right click an application and you can see a list of counters: Monitored Requests/sec, Average Request Time, Performance Events/sec, Exception Events/sec, and, importantly, values for each counter. Five monitors apply to these. For more information about monitors, see the Management Pack Guide for Java Application Performance Monitoring.

    Important

    If you do not see values for the counters, Application Performance Monitoring is not enabled for these applications. This means that you might need to wait for Application Performance Monitoring discovery.

  2. To see monitors, in Health Explorer, right-click an application, click Open, and then click Performance View. Some monitors some are disabled.

  3. To override monitors, in Health Explorer, right-click a monitor and click Monitor properties. On the monitor's Properties page, click Overrides tab, click Override and then select the rule you want to override. On the Override Properties page you can enable/disable monitors and change the monitor threshold settings.

Java Application Performance Monitoring Tools Open Source

View events using Application Diagnostics

Java Application Performance Monitoring Advantage

Like .NET Application Performance Monitoring, you can use Application Diagnostics to view event information for Java Application Performance Monitoring. For information about opening and using Application Diagnostics, see Working with the Application Diagnostics Console and Working with Events by Using Application Diagnostics.

Java Web App Performance Monitoring

Due to the way Java statistics are reported, some of the standard Application Performance Monitoring reports do not apply to Java Application Performance Monitoring. For instance, you might see NA in some of the report columns where Java Application Performance Monitoring does not apply. Additionally, due to the way that Java application containers map to servers, many server-level reports do not have data.