IP Library Granted Patent US 10,516,747
Granted Patent B2
US 10,516,747 · App. 15/412,129 · Granted Dec 24, 2019

Method and system for tracing end-to-end transaction, including browser side processing and end user performance experience

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 10,516,747
App. No.
15/412,129
Granted
Dec 24, 2019
Kind
B2
Abstract

A system is provided for tracing end-to-end transactions. The system uses bytecode instrumentation and a dynamically injected agent to gather web server side tracing data, and a browser agent which is injected into browser content to instrument browser content and to capture tracing data about browser side activities. Requests sent during monitored browser activities are tagged with correlation data. On the web server side, this correlation information is transferred to tracing data that describes handling of the request. This tracing data is sent to an analysis server which creates tracing information which describes the server side execution of the transaction and which is tagged with the correlation data allowing the identification of the causing browser side activity. The analysis server receives the browser side information, finds matching server side transactions and merges browser side tracing information with matching server side transaction information to form tracing information that describes end-to-end transactions.

Claims (88)

1. A computer-implemented method for determining a performance metric of a web browser executing on a computing device, comprising:

identifying, by an agent instrumented to a web server, a request handling method of the web server, where the request handling method is implemented by executable instructions executing on the web server and the web server is located over a network remotely from the computing device;

instrumenting, by the agent, the request handling method with a request entry sensor, where the request entry sensor is implemented by executable instructions executing in conjunction with the execution of the request handling method and where the request entry sensor monitors the execution of the request handling method;

detecting, by the request entry sensor, the processing of a request for content performed by the request handling method, where the request for content is received from the web browser executing on the computing device;

providing, by the request handling method, content in response to receiving the request for content from the web browser;

formulating, by the request handling method, a response to the content request, where the created response contains the retrieved content:

adding, by the request entry sensor, a session identifier and a request identifier to the formulated response to create an instrumented response, where the session identifier identifies an instance of the web browser and the request identifier identifies the requested content;

determining, by the request entry sensor, whether the retrieved content is capable of hosting a browser agent, where the browser agent is a script that is executed by the computing device;

injecting, by the request entry sensor, a browser agent into the retrieved content in the instrumented response, where the injection of the browser agent is in response to a determination that the retrieved content is capable of hosting the browser agent; and

sending, by the request handling method, the instrumented response to the web browser.

2. The method of claim 1 wherein retrieving content further comprises retrieving content defined in accordance with a markup language.

3. The method of claim 1 further comprises injecting the browser agent into the retrieved content such that the browser agent is first resource loaded and interpreted by the web browser.

4. The method of claim 1 wherein determining whether the retrieved content is capable of hosting a browser agent further comprises determining whether the retrieved content is defined in accordance with hypertext markup language and injecting a browser agent into the retrieved content when the retrieved content is defined in accordance with hypertext markup language.

5. The method of claim 4 further comprises injecting the browser agent into the retrieved content immediately following first occurrence of <HEAD> tag.

6. The method of claim 1 further comprises

capturing, at the browser agent, a first action event which is executing on the computing device, where the first action event is indicative of a user interaction with a user interaction element on the web browser, wherein the first action event identifies the user interaction element by name and type of user interaction element and the type of user interaction is selected from a plurality of different types of user interactions;

capturing, at the browser agent, a second action event, where the second action event is caused by the first action and is indicative of a content request sent from the web browser to the web server;

associating, by the browser agent, the second action event with the first action event;

creating, by the browser agent, an action record for the user interaction, where the action record includes an identifier for the user interaction and a performance metric that is related to the user interaction and accounts for the second action event;

sending, by the browser agent, the action record over the network to a monitoring node located remotely from the computing device;

maintaining, by the browser agent, correlation data that uniquely identifies the user interaction, where the correlation data includes the session identifier, an action identifier that identifies the user interaction, and a frame identifier that identifies page view for the content presented by the web browser; and

appending, by the browser agent, the correlation data to each content request sent by the web browser to the web server to create tagged content requests.

7. The method of claim 6 further comprises

receiving, by the request handling method, the tagged content requests from the web browser;

extracting, by the request entry sensor, the correlation data from each tagged content request;

creating, by the request handling method, a request record for each tagged content request, where the request record includes a performance metric related to handling of a given tagged content request and the correlation data extracted from the given tagged content request; and

sending, by the request handling method, the request record over the data network to the monitoring node.

8. The method of claim 7 further comprises

creating, by the browser agent, an action record for the user interaction, where the action record includes the correlation data; and

sending, by the browser agent, the action record over the network to the monitoring node.

9. The method of claim 8 further comprises

receiving, by the monitoring node, the request record from the web server;

receiving, by the monitoring node, the action record from the computing device;

comparing, by the monitoring node, correlation data from the request record with correlation data from the action record; and

associating, by the monitoring node, the request record with the action record when the correlation data from the request record matches the correlation data from the action record.

10. The method of claim 9 further comprises

determining whether a request record stability time period has elapsed, where the request record stability time period indicates that no further updates to the request record are expected;

comparing a session identifier contained in the request record with a session identifier contained in the action record;

comparing a request identifier contained in the request record with a request identifier contained in the action record; and

associating the request record with the action record when the session identifiers match each other and the request identifiers match each other, where the steps of comparing a session identifier, comparing a request identifier and associating the request record are performed in response to a determination that the request record stability time period has lapsed.

11. The method of claim 10 further comprises

determining whether an action record availability time period has elapsed, where the action record availability time period indicates that the request record is available at the monitoring node;

determining whether the action identifier and the frame identifier in the request record are set respectively to a value, where the determination is performed in response to a determination that the action record availability time period has lapsed;

comparing a session identifier contained in the request record with a session identifier contained in the action record;

comparing the action identifier contained in the request record with an action identifier in the action record;

comparing the frame identifier contained in the request record with a frame identifier in the action record; and

associating the request record with the action record when session identifier match each other, the action identifiers match each other and the frame identifiers match each other, where the steps of comparing the session identifier, comparing the action identifier, comparing the frame identifier and associating the request record with the action record are performed in response to a determination that the action identifier and the frame identifier in the request record are set respectively to a value.

12. The method of claim 11 further comprises

comparing a referrer of the request record with a referrer of the action record, wherein the referrer identifies content that caused loading of the content on which the causing action was performed and where the comparison is performed in response to a the determination is performed in response to a determination that the action record availability time period has lapsed and a determination that the action identifier and the frame identifier in the request record are not set; and

associating the request record with the action record when the referrers match each other.

13. The method of claim 9 further comprises

grouping, by the monitoring node, action records by their session identifier;

clustering, by the monitoring node, action records of each group temporally, to identify clusters of action records where each cluster contains action records that were executed on a given web browser in a continuous sequence;

selecting, by the monitoring node, the request records associated to the action records of each cluster;

analyzing, by the monitoring node, the action records and request records corresponding to each cluster to determine cluster characteristics; and

classifying, by the monitoring node, the user interaction for each cluster of records into a predefined category according to the determined cluster characteristics.

14. The method of claim 1 further comprises

detecting, by the browser agent, an unload of a presented web page;

identifying, by the browser agent, user interaction with the web browser that caused unloading of the presented web page;

storing, by the browser agent, a source action record for the unloading of the web page in a non-transitory data store of the computing device, where the source action record includes an action identifier that identifies the user interaction and a frame identifier that identifies page view associated with the presented web page;

detecting, by the browser agent, loading of a new web page;

retrieving, by the browser agent, the source action record from the non-transitory data store in response to detecting loading of a new web page;

creating, by the browser agent, a destination action record, where the destination action event accounts for the loading of the new web page and includes a session identifier that identifies an instance of the web browser, an action identifier that identifies the loading of the new web page, and a frame identifier that identifies page view associated with the new web page;

appending, by the browser agent, the source action record to the destination action record; and

sending, by the browser agent, the destination action record over the network to the monitoring node.

15. The method of claim 14 further comprises

performing, by the monitoring node, a plausibility check on the correlation between the source action record and the destination action record; and

associating, by the monitoring node, the source action record with the destination action record in response to passing the plausibility check.

16. The method of claim 15 further comprises

extracting a starting time for the unloading of the presented web page from the source action record contained destination action record;

extracting a time for the loading of the new web page from the destination action record;

determining a difference between the time for the loading of the new web page and a starting time for the unloading of the presented web page; and

associating the source action event with the destination action event when the difference between the time for the loading of the new web page and a starting time for the unloading of the presented web page is less than a threshold.

17. The method of claim 16 further comprises

determining a duration for handling the content request for the new web page by the web server; and

associating the source action record with the destination action record when the duration for handling the content request corresponds to the difference between the time for the loading of the new web page and a starting time for the unloading of the presented web page.

18. A performance management system that measure end user performance in a distributed computing environment, comprising:

an agent instrumented in a web server on a server computer, where the agent identifies a request handling method of the web server and instruments the request handling method with a request entry sensor, where the agent and the request entry sensor are implemented by executable instructions executing by a processor of the server computer;

the request handling method formulates a response to a request for content from a web browser and provides the response to the web browser, where the response contains the requested content and the web browser resides on a computer device located over a network remotely from the server computer; and

the request entry sensor detects processing of the request for content performed by the request handling method and adds a session identifier and a request identifier to the formulated response to create an instrumented response, where the session identifier identifies an instance of the web browser and the request identifier identifies the requested content;

the request entry sensor further determines whether the retrieved content is capable of hosting a browser agent, and injects a browser agent into the requested content in the instrumented response, where the browser agent is a script that is executed by the computing device and the injection of the browser agent is in response to a determination that the requested content is capable of hosting the browser agent.

19. The performance management system of claim 18 wherein the request entry sensor sends the instrumented response over the network to the web browser.

20. The performance management system of claim 18 wherein the request entry sensor injects the browser agent into the requested content such that the browser agent is first resource loaded and interpreted by the web browser.

21. The performance management system of claim 18 wherein the request entry sensor determines whether the requested content is capable of hosting a browser agent by determining whether the requested content is defined in accordance with hypertext markup language and injecting a browser agent into the requested content when the requested content is defined in accordance with hypertext markup language.

22. The performance management system of claim 18 wherein the browser agent identifies a user interaction with a user interaction element displayed by the web browser, maintains correlation data that uniquely identifies the user interaction, and appends the correlation data to each content request sent by the web browser to the web server to create tagged content requests, where the correlation data includes the session identifier, an action identifier that identifies the user interaction, and a frame identifier that identifies page view for the content presented by the web browser.

23. The performance management system of claim 18 wherein the request entry sensor extracts the correlation data from each tagged content request; and the request handling method creates a request record for each tagged content request and sends the request record over the network to the monitoring node, where the request record includes a performance metric related to handling of a given tagged content request and the correlation data extracted from the given tagged content request.

24. The performance management system of claim 23 wherein the browser agent creates an action record for the user interaction and sends the action record over the network for the monitoring node, where the action record includes the correlation data.

25. The performance management system of claim 23 wherein the monitoring node receives the request record from the web server; receives the action record from the computing device; compares the correlation data from the request record with correlation data from the action record; and associates the request record with the action record when the correlation data from the request record matches the correlation data from the action record.

Assignments (7)
SECURITY INTEREST Recorded Dec 16, 2022
From: DYNATRACE LLC
To: BMO HARRIS BANK N.A.
Reel/Frame 062142/0187 →
RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 046923/0557 Recorded Dec 5, 2022
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: DYNATRACE, LLC
Reel/Frame 062056/0562 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 46923/0528 Recorded Aug 6, 2019
From: JEFFERIES FINANCE LLC, COLLATERAL AGENT
To: DYNATRACE LLC
Reel/Frame 049966/0518 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Aug 24, 2018
From: DYNATRACE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 046923/0557 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Aug 24, 2018
From: DYNATRACE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 046923/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2017
From: COMPUWARE CORPORATION
To: DYNATRACE LLC
Reel/Frame 042961/0964 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2017
From: GREIFENEDER, BERND; SPIEGL, HELMUT; GAISBAUER, MARKUS; FUCHS, CLEMENS
To: COMPUWARE CORPORATION
Reel/Frame 042793/0732 →