IP Library Granted Patent US 9,251,026
Granted Patent B2
US 9,251,026 · App. 13/457,189 · Granted Feb 2, 2016

Application instrumentation code extension

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,251,026
App. No.
13/457,189
Granted
Feb 2, 2016
Kind
B2
Abstract

The embodiments provide an application diagnostics apparatus including an instrumentation engine configured to monitor one or more methods of a call chain of the application in response to a server request according to an instrumentation file specifying which methods are monitored and which methods are associated with a code extension, an extension determining unit configured to determine that at least one monitored method is associated with the code extension based on code extension identification information, a class loading unit configured to load the code extension from a resource file when the at least one monitored method associated with the code extension is called within the call chain, a code extension execution unit configured to execute one or more data collection processes, and a report generator configured to generate at least one report for display based on collected parameters.

Claims (52)

1. An application diagnostics apparatus comprising:

at least one processor;

a non-transitory computer-readable storage medium including instructions executable by the at least one processor, the instructions configured to implement,

an instrumentation engine configured to monitor an application executing on an application server based on an instrumentation file including monitoring one or more methods of a call chain of the application in response to a server request directed to the application, the instrumentation file specifying which methods are monitored and which methods are associated with a code extension, the instrumentation engine configured to perform a data collection process including collecting performance information related to the methods specified in the instrumentation file, the code extension including logic for supplementing the data collection process of the instrumentation file;

an extension determining unit configured to determine that at least one specified method is associated with the code extension based on code extension identification information being included in the instrumentation file, the code extension identification information identifying the code extension associated with the at least one specified method and a location in which the code extension is located within a resource file;

a class loading unit configured to dynamically insert the code extension into the application without restarting the application including selecting a class loader that was used to load the application in a manner that class loading delegation is bypassed and loading the code extension from the resource file using the selected class loader based on the code extension identification information when the at least one specified method associated with the code extension is called within the call chain, the class loading unit being configured to bypass the class loading delegation by renaming a class name associated with the code extension to a unique class name such that a parent class loader is not used to load the code extension;

a code extension execution unit configured to collect additional performance information regarding execution of the application as specified by the code extension; and

a report generator configured to generate at least one report for display based on at least one of the collected performance information relating to the instrumentation file and the collected additional performance information relating to the code extension.

2. The application diagnostics apparatus of claim 1 , further comprising:

a code extension interface configured to receive updated code extension information from a user, the updated code extension information including an update to the code extension, an addition of one or more new code extensions, or a deletion of one or more of the plurality of code extensions within the resource file; and

a code extension updating unit configured to update the code extension, add the one or more new code extensions, or delete the one or more code extensions based on the updated code extension information such that a change to at least one code extension is dynamically implemented during a course of monitoring the application.

3. The application diagnostics apparatus of claim 1 , wherein execution of the code extension derives a new key performance indicator (KPI) beyond one or more KPIs derived by the instrumentation file.

4. The application diagnostics apparatus of claim 1 , wherein the instrumentation engine is configured to instrument the application including:

intercepting the one or more methods according to the instrumentation file;

interjecting code at entries and exits of the one or more methods; and

monitoring the one or more methods in response to the server request during runtime of the call chain.

5. The application diagnostics apparatus of claim 1 , wherein the instrumentation file includes a plurality of rules, and each rule specifies at least one method to be monitored, at least one of the rules including information identifying the at least one specified-method, and tier information identifying which tier the at least one specified method is located.

6. The application diagnostics apparatus of claim 1 , wherein the code extension is further configured to alter the call chain such that an application flow of the application is modified.

7. The application diagnostics apparatus of claim 1 , wherein the code extension is further configured to modify a user interface associated with the application.

8. The application diagnostics apparatus of claim 1 , wherein the parent class loader is upstream from the class loader that was used to load the application, the class loading unit configured to select the class loader that was used to load the application to insert the code extension into the application based on the unique class name.

9. The application diagnostics apparatus of claim 1 , wherein the collected performance information related to the instrumentation file includes information measuring an amount of time spent within different portions of the call chain, attributes of the application associated with the specified methods, and metrics that occur within the call chain.

10. The application diagnostics apparatus of claim 1 , wherein the report generator configured to generate at least one report includes:

a parameter map generator configured to generate a parameter map based on at least one of the collected performance information relating to the instrumentation file and the collected additional performance information relating to the code extension, the parameter map including at least one key-value pair representing a parameter and associated value; and

an analysis unit configured to analyze the parameter map and generate the at least one report based on the analyzed parameter map.

11. A method for monitoring performance, the method being performed by at least one processor, the method comprising:

monitoring an application executing on an application server based on an instrumentation file including monitoring one or more methods of a call chain of the application in response to a server request directed to the application, the instrumentation file specifying which methods are monitored and which methods are associated with a code extension, wherein the monitoring the one or more methods includes collecting performance information related to the methods specified in the instrumentation file, the code extension including logic for supplementing the collection of performance information by the instrumentation file;

determining that at least one specified method is associated with the code extension based on code extension identification information being included in the instrumentation file, the code extension identification information identifying the code extension associated with the at least one specified method and a location in which the code extension is located within a resource file;

inserting the code extension into the application without restarting the application including selecting a class loader that was used to load the application in a manner that class loading delegation is bypassed and loading the code extension from the resource file using the selected class loader based on the code extension identification information when the at least one specified method associated with the code extension is called within the call chain, wherein the class loading delegation is bypassed by renaming a class name associated with the code extension to a unique class name such that a parent class loader is not used to load the code extension;

collecting additional performance information regarding execution of the application as specified by the code extension; and

generating at least one report for display based on at least one of the collected performance information relating to the instrumentation file and the collected additional performance information relating to the code extension.

12. The method of claim 11 , further comprising:

receiving, via a code extension interface, updated code extension information from a user, the updated code extension information including an update to the code extension, an addition of one or more new code extensions, or a deletion of one or more of the plurality of code extensions within the resource file; and

updating the code extension, adding the one or more new code extensions, or deleting the one or more code extensions based on the updated code extension information such that a change to at least one code extension is dynamically implemented during a course of monitoring the application.

13. The method of claim 11 , wherein execution of the code extension derives a new key performance indicator (KPI) beyond one or more KPIs derived by the instrumentation file.

14. The method of claim 11 , wherein the instrumentation file includes a plurality of rules, and each rule specifies at least one method to be monitored, at least one of the rules including information identifying the at least one specified method, and tier information identifying which tier the at least one specified method is located, signature information.

15. The method of claim 11 ,

wherein the parent class loader is upstream from the class loader that was used to load the application,

wherein the class loader that was used to load the application is selected to insert the code extension into the application based on the unique class name.

16. The method of claim 11 , wherein the code extension is configured to alter an application flow of the methods of the call chain during runtime of the application.

17. A non-transitory computer-readable medium storing instructions that when executed cause at least one processor to perform a monitoring process, the instructions comprising instructions to:

monitor an application executing on an application server based on an instrumentation file including monitor one or more methods of a call chain of the application in response to a server request directed to the application, the instrumentation file specifying which methods are monitored and which methods are associated with a code extension, wherein the monitor the one or more methods includes collect performance information related to the methods specified in the instrumentation file, the code extension including logic for supplementing the collection of performance information, altering an application flow of the methods of the call chain pertaining to the server request, or modifying a user interface associated with the application;

determine that at least one specified method is associated with the code extension based on code extension identification information being included in the instrumentation file, the code extension identification information identifying the code extension associated with the at least one specified method and a location in which the code extension is located within a resource file;

insert the code extension into the application without restarting the application including select a class loader that was used to load the application in a manner that class loading delegation is bypassed and load the code extension from the resource file using the selected class loader based on the code extension identification information when the at least one specified method associated with the code extension is called within the call chain,

wherein the class loading delegation is bypassed by renaming a class name associated with the code extension to a unique class name such that a parent class loader is not used to load the code extension, the parent class loader being upstream from the class loader that was used to load the application, the class loader that was used to load the application being selected to insert the code extension into the application based on the unique class name; and

execute the code extension including collect additional performance information regarding execution of the application, alter the application flow of the methods of the call chain, or modify the user interface associated with the application.

18. The non-transitory computer-readable medium of claim 17 , further comprising instructions to:

receive, via a code extension interface, updated code extension information from a user, the updated code extension information including an update to the code extension, an addition of one or more new code extensions, or a deletion of one or more of the plurality of code extensions within the resource file; and

update the code extension, add the one or more new code extensions, or delete the one or more code extensions based on the updated code extension information such that a change to at least one code extension is dynamically implemented during a course of monitoring the application.

19. The non-transitory computer-readable medium of claim 17 , wherein the resource file stores a plurality of different code extensions.

20. The non-transitory computer-readable medium of claim 17 , further comprising instructions to:

generate a first report based on the collected performance information relating to the instrumentation file and the collected additional performance information relating to the code extension, the first report providing performance of the application characterized by at least one of performance across tiers of the application, performance across tier latencies, and server performance across server components; and

generate a second report based on the collected performance information relating to the instrumentation file and the collected additional performance information relating to the code extension, the second report providing information related to each task of the at least one specified method and information related to an amount of time required to execute the at least one specified method.

Assignments (15)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2025
From: BMC SOFTWARE, INC.
To: BMC HELIX, INC.
Reel/Frame 070442/0197 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY INTEREST Recorded Jul 27, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043351/0189 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2012
From: HULICK, WALTER T.
To: BMC SOFTWARE, INC.
Reel/Frame 028660/0259 →