Performance
Tracking and displaying performance metrics
Admin4J makes tracking performance easy. Optionally, adminsitrators can be notified when performance of an Http request exceeds a defined threshold.
Screen Shots
Installing Performance Tracking
Add the following filter and filter mapping to your applications web.xml:
<filter> <filter-name>Performance Filter</filter-name> <filter-class> net.admin4j.ui.filters.PerformanceMonitoringFilter </filter-class> </filter> <filter-mapping> <filter-name>Performance Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
The following configuration parameters are supported for the performance tracking filter.
Parameter | Required | Default | Description |
---|---|---|---|
notification.threshold.in.millis | N | none. | If set, a notification will be issued should a page take longer than the specified number of milliseconds. For this option to work, values must be provided for notifier |
notifier | N | Defaults to default.notifier.class value in the Admin4J configuration. | Handles admin notification. See documentation for the Notifier you're using for any additional configuration requirements. See Admin4J Notifiers section for more detail. |
uri.consolidator | N | Defaults to no URI consolidation. | Class name for consolidator that implements interface net.admin4j.ui.filters.consolidator.HttpRequestConsolidator. Bundled option is net.admin4j.ui.filters.consolidator.RestServiceHttpRequestConsolidator, which will consolidate RESTful web service URIs that include data as well as resource designations. If you specify RestServiceHttpRequestConsolidator, then you must include parameters rest.resource.tokens and rest.service.uri.prefix. |
rest.resource.tokens | N | Required if URI consolidator RestServiceHttpRequestConsolidator is specified. | Comma delimited list of REST resource identifiers. For example, "students,classes,charges". All other parts of the URI are ignored for performance tracking purposes. |
rest.service.uri.prefix | N | Required if URI consolidator RestServiceHttpRequestConsolidator is specified. | Identifies a URI prefix used for RESTful web services. For example "/services". This is needed so that URIs that aren't RESTful web services aren't ignored as data identifiers. |
Tracking performance for items other than Http requests
Performance can be monitored for batch jobs or other transactions that aren't Http requests. In fact, the Performance Monitoring filter referenced above is a good example. You simply start a performance monitor at the beginning and stop the monitor at the end of the work to be measured. An example follows:
import net.admin4j.timer.TaskTimer; import net.admin4j.timer.TaskTimerFactory; // At the start of section to be monitored for performance. TaskTimer perfMonitor = TaskTimerFactory.start("My Label"); // At the end of the section to be monitored -- preferably in a 'finally' block. perfMonitor.stop();
Tracking performance for RESTful Web Services
Admin4J can optionally consolidate performance tracking for RESTful Web Service URIs as they contain specific data as well as resources. For example, tracking /services/students/12345 as a URI isn't useful as it names one specific data item. Tracking the mask /services/students/* is, however.
There are two options for configuring performance tracking for RESTful web services. If you registered the performance tracking filter via web.xml, then you should include init parameters specifications for uri.consolidator, rest.resource.tokens, and rest.service.uri.prefix as detailed above.
Additionally, you can configure the performance tracker via the admin4j.properties file.
Tracking performance for Quartz Batch Jobs
Admin4J provides a Quartz Job Listener that can monitor performance for Quartz batch jobs. To install, just add the following line to your quartz.properties file:
org.quartz.jobListener.Admin4JPerformanceMonitor.class=net.admin4j.timer.QuartzPerformanceMonitoringJobListener
Installing Performance Metrics Display
Add the following servlet and servlet mapping to your applications web.xml:
<servlet> <servlet-name>Performance Display Servlet</servlet-name> <servlet-class>net.admin4j.ui.servlets.PerformanceDisplayServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Performance Display Servlet</servlet-name> <url-pattern>/admin4j/perf</url-pattern> </servlet-mapping>