Method and system for processing application performance data ouside of monitored applications to limit overhead caused by monitoring
First Claim
1. A method to process application performance data, the method performed by at least one computer processor executing computer-readable instructions tangibly stored on at least one computer-readable medium, the method comprising the steps of:
- (A) injecting an agent into a monitored application;
(B) at the agent;
(B)(1) capturing original byte code of the monitored application;
(B) (2) sending the captured byte code of the monitored application to a monitoring server external to the monitored application;
(C) at an instrumentation engine in the monitoring server;
(C) (1) inserting sensor bytecode into the captured original bytecode to generate instrumented byte code at runtime of the application and without altering source code of the application;
(C) (2) transmitting the instrumented byte code to the monitored application;
(D) at the monitored application;
(D) (1) loading the instrumented byte code instead of the original bytecode;
(D) (2) executing the sensor bytecode to generate measurement data which describes performance characteristics of the original bytecode; and
(D) (3) writing the measurement data to a data set of fixed size.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides a system and method that aggregates and processes monitoring data acquired inside a monitored application outside of the said application to reduce overhead caused by monitoring tasks in the monitored application. Monitoring data acquired by monitoring sensors is stored in a ring buffer after acquisition, which decouples acquisition of data and its transfer, enabling asynchronous sending of performance data to a monitoring server for analysis. Memory consumption of said ring buffer is limited to a fixed size which keeps memory consumption caused by monitoring processes low and predictable. Correlation, analysis, all computation of monitoring data, and bytecode manipulation to place sensors is performed outside of the monitored application, by a monitoring server.
125 Citations
42 Claims
-
1. A method to process application performance data, the method performed by at least one computer processor executing computer-readable instructions tangibly stored on at least one computer-readable medium, the method comprising the steps of:
-
(A) injecting an agent into a monitored application; (B) at the agent; (B)(1) capturing original byte code of the monitored application; (B) (2) sending the captured byte code of the monitored application to a monitoring server external to the monitored application; (C) at an instrumentation engine in the monitoring server; (C) (1) inserting sensor bytecode into the captured original bytecode to generate instrumented byte code at runtime of the application and without altering source code of the application; (C) (2) transmitting the instrumented byte code to the monitored application; (D) at the monitored application; (D) (1) loading the instrumented byte code instead of the original bytecode; (D) (2) executing the sensor bytecode to generate measurement data which describes performance characteristics of the original bytecode; and (D) (3) writing the measurement data to a data set of fixed size. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer-readable medium comprising computer-readable instructions tangibly stored on the computer-readable medium, wherein the computer-readable instructions are executable by at least one computer processor to cause a monitoring server to perform a method, the method comprising:
-
(A) injecting an agent into a monitored application; (B) at the agent; (B) (1) capturing original byte code of the monitored application; (B) (2) sending the captured byte code of the monitored application to a monitoring server external to the monitored application; (C) at an instrumentation engine in the monitoring server; (C) (1) inserting sensor bytecode into the captured original bytecode to generate instrumented byte code at runtime of the application and without altering source code of the application; (C) (2) transmitting the instrumented byte code to the monitored application; (D) at the monitored application; (D) (1) loading the instrumented byte code instead of the original bytecode; (D) (2) executing the sensor bytecode to generate measurement data which describes performance characteristics of the original bytecode; and (D) (3) writing the measurement data to a data set of fixed size. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A computer-implemented method performed by a monitoring server, the method comprising:
-
(A) receiving original bytecode of an application from an agent, wherein the agent is in the application and external to the monitoring server; (B) inserting sensor bytecode into the captured original bytecode to generate instrumented bytecode at runtime of the application and without altering source code of the application; (C) transmitting the instrumented bytecode to the agent; (D) generating metadata about the context of the inserted sensor bytecode; and (E) storing the metadata in a sensor metadata node external to the application. - View Dependent Claims (24, 25)
-
-
26. A computer-readable medium comprising computer-readable instructions tangibly stored on the computer-readable medium, wherein the computer-readable instructions are executable by at least one computer processor to cause a monitoring server to perform a method, the method comprising:
-
(A) receiving original bytecode of an application from an agent, wherein the agent is in the application and external to the monitoring server; (B) inserting sensor bytecode into the captured original bytecode to generate instrumented bytecode at runtime of the application and without altering source code of the application; (C) transmitting the instrumented bytecode to the agent; (D) generating metadata about the context of the inserted sensor bytecode; and (E) storing the metadata in a sensor metadata node external to the application. - View Dependent Claims (27, 28)
-
-
29. A computer-implemented method for use with an application and a monitoring server, wherein the monitoring server is external to the application, wherein the application includes instrumented bytecode, and wherein the instrumented bytecode includes original bytecode and sensor bytecode inserted into the original bytecode, the method comprising:
-
(A) at an application, without blocking execution of the application, executing the sensor bytecode to; (A) (1) generate measurement data which describes performance characteristics of the original bytecode into which the sensor bytecode is inserted; (A) (2) tag the measurement data with a unique sensor identifier (ID) of the sensor bytecode; (A) (3) storing a first event record in an event buffer in the application, wherein the first event record includes the measurement data and the sensor ID; (B) at an agent in the application; (B) (1) transmitting the first event record to the monitoring server asynchronously with a second event record being written to the event buffer; and (B) (2) repeating (B) (1) cyclically; (C) at the monitoring server; (C) (1) receiving the first event record; and (C) (2) extracting the unique sensor ID from the first event record. - View Dependent Claims (30, 31, 32)
-
-
33. A computer-readable medium comprising computer-readable instructions tangibly stored on the computer-readable medium, wherein the computer-readable instructions are executable by at least one computer processor to perform a method for use with an application and a monitoring server, wherein the monitoring server is external to the application, wherein the application includes instrumented bytecode, and wherein the instrumented bytecode includes original bytecode and sensor bytecode inserted into the original bytecode, the method comprising:
-
(A) at an application, without blocking execution of the application, executing the sensor bytecode to; (A) (1) generate measurement data which describes performance characteristics of the original bytecode into which the sensor bytecode is inserted; (A) (2) tag the measurement data with a unique sensor identifier (ID) of the sensor bytecode; (A) (3) storing a first event record in an event buffer in the application, wherein the first event record includes the measurement data and the sensor ID; (B) at an agent in the application; (B) (1) transmitting the first event record to the monitoring server asynchronously with a second event record being written to the event buffer; and (B) (2) repeating (B) (1) cyclically; (C) at the monitoring server; (C) (3) receiving the first event record; and (C) (4) extracting the unique sensor ID from the first event record. - View Dependent Claims (34, 35, 36)
-
-
37. A computer-implemented method performed by an application, wherein the application includes instrumented bytecode, and wherein the instrumented bytecode includes original bytecode and sensor bytecode inserted into the original bytecode, the method comprising:
-
(A) without blocking execution of the application, executing the sensor bytecode to; (A) (1) generate measurement data which describes performance characteristics of the original bytecode into which the sensor bytecode is inserted; (A) (2) tag the measurement data with a unique sensor identifier (ID) of the sensor bytecode; (A) (3) storing a first event record in a buffer in the application, wherein the first event record includes the measurement data and the sensor ID; (B) at an agent in the application; (B) (1) transmitting the first event record to a monitoring server external to the application asynchronously with a second event record being written to the buffer; and (B) (2) repeating (B) (1) cyclically. - View Dependent Claims (38, 39)
-
-
40. A computer-readable medium comprising computer-readable instructions tangibly stored on the computer-readable medium, wherein the computer-readable instructions are executable by at least one computer processor to cause an application to perform a method, wherein the application includes instrumented bytecode, and wherein the instrumented bytecode includes original bytecode and sensor bytecode inserted into the original bytecode, the method comprising:
-
(A) without blocking execution of the application, executing the sensor bytecode to; (A) (1) generate measurement data which describes performance characteristics of the original bytecode into which the sensor bytecode is inserted; (A) (2) tag the measurement data with a unique sensor identifier (ID) of the sensor bytecode; (A) (3) storing a first event record in a buffer in the application, wherein the first event record includes the measurement data and the sensor ID; (B) at an agent in the application; (B) (1) transmitting the first event record to a monitoring server external to the application asynchronously with a second event record being written to the buffer; and (B) (2) repeating (B) (1) cyclically. - View Dependent Claims (41, 42)
-
Specification