IP Library Granted Patent US 10,599,496
Granted Patent B2
US 10,599,496 · App. 15/796,510 · Granted Mar 24, 2020

End-to-end application tracking framework

Inventors: Igor I. Malkiman (Bexley, OH); Chauncey G. Powis (Conifer, CO); Tyson Matthew Bunch (El Dorado Hills, CA)
Assignee: Qwest Communications International Inc.
G06F9/546G06F11/3419G06F11/3466G06F16/22G06F2201/865
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,599,496
App. No.
15/796,510
Granted
Mar 24, 2020
Kind
B2
Abstract

Novel tools and techniques for tracing application execution and performance. Some of the tools provide a framework for monitoring the execution and/or performance of applications in an execution chain. In some cases, the framework can accomplish this monitoring with a few simple calls to an application programming interface on an application server. In other cases, the framework can provide for the passing of traceability data in protocol-specific headers of existing inter-application (and/or intra-application) communication protocols.

Claims (83)

1. A method for establishing a framework for end-to-end traceability and performance monitoring of an execution chain, the method comprising:

receiving, at a first application component, a request for processing;

measuring a first start time of the first application component;

calling an application programming interface (“API”) to a tracking framework, which transmits a first object to a tracking server, the first object creating in a database at the tracking server a first request record comprising the first start time, the first request record indicating start of execution of the first application component;

measuring a second start time of an application callout;

calling the API, which transmits, to the tracking server, a second object that creates a callout record in the database, the callout record comprising the second start time and indicating that the first application component has initiated an application callout to a second application component;

establishing a parent-child relationship in the database between the first request record and the callout record, wherein the parent-child relationship between the first request record and the callout record comprises assigning a first Record ID of the first request record as the Parent ID of the callout record when generating and/or storing the callout record;

sending application data from the first application component to the second application component;

storing, in the callout record, traceability data about the application data sent from the first application component to the second application component;

measuring a third start time of execution of the second application component;

calling the API to transmit a third object, the third object creating, in the database, a second request record comprising the third start time;

establishing, in the database, a parent-child relationship between the callout record and the second request record, wherein establishing a parent-child relationship between the callout record and the second request record comprises assigning a Record ID of the callout record as the Parent ID of the request record when generating and/or storing the second request record;

measuring a first stop time of the second application component after execution but before the second application passes a response to the first application component;

storing the first stop time in the second request record;

measuring a second stop time of the application callout after the first application component receives a response from the called application;

storing the second stop time in the callout record;

measuring a third stop time of the first application component, after the first application component returns a response to the request for processing; and

storing the third stop time in the first request record.

2. The method of claim 1 , wherein the request for processing is a first request in the execution chain, and wherein a Parent ID field is blank for the first request in an execution chain.

3. The method of claim 1 , wherein creating the first request record in the database comprises generating and the first request record in the database, and wherein creating the callout record in the database comprises generating and storing the callout record in the database.

4. The method of claim 1 , further comprising:

storing a plurality of request records and a plurality of callout records.

5. The method of claim 4 , further comprising:

analyzing the stored request records and callout records to determine one or more request durations and one or more callout durations.

6. The method of claim 4 , further comprising:

analyzing the stored request records and callout records to identify a trace of execution between the first application component and the second application component.

7. The method of claim 1 , wherein the first application component is a first application layer of a first application, and wherein the second application component is a second application layer of the first application.

8. The method of claim 1 , wherein the first application component is a first application, and wherein the second application component is a second application.

9. The method of claim 1 , wherein the application data comprises a message from the first application component to the second application component.

10. The method of claim 1 , further comprising:

generating traceability data for a first application component before the first application component sends application data to a second application component.

11. The method of claim 10 , wherein the traceability data comprises one or more identifiers selected from the group consisting of: a request record identifier (“ID”), a callout record ID, a correlation ID and user interface (“UI”) session ID.

12. The method of claim 10 , further comprising sending the traceability data from the first component to the second application component using a protocol-specific header of a protocol used to transmit the application data.

13. The method of claim 12 , wherein the protocol-specific header is selected from the group consisting of an HTTP header, a SOAP header, an Information Bus header, and a JMS header.

14. The method of claim 10 , further comprising placing the traceability data on a message queue.

15. The method of claim 1 , further comprising:

assigning a correlation identifier to the first request record to identify an instance of the application;

assigning the correlation identifier to the callout record; and

assigning the correlation identifier to the second request record.

16. The method of claim 1 , further comprising:

maintaining an end-to-end execution chain between the first application component and the second application component, using traceability data, the traceability data including traceability data for each of the first application component, the second application component, and any intermediate application components of the end-to-end execution chain.

17. The method of claim 1 , further comprising:

generating a report comprising an end-to-end execution chain, the report listing an actual execution time attributable to each application component in the end-to-end execution chain in processing each request, wherein the actual execution time, for each request by each application component, is measured by adding a pre-callout processing time and a post-callout processing time, the pre-callout processing time being measured by measuring a difference between a start time of each application component and a start time of a subsequent application callout, and the post-callout processing time being measured by measuring a difference between a stop time of the subsequent callout and a stop time of each request.

18. The method of claim 1 , wherein the API transmits the first object to the tracking server after the third stop time has been measured, and wherein storing the third stop time in the first request record comprises updating the first object with the third stop time before transmitting the first object to the tracking server.

19. A computer system, comprising:

one or more processors; and

one or more non-transitory computer-readable storage media having encoded thereon one or more sets of instructions executable by one or more computers to perform one or more operations, the one or more sets of instructions collectively comprising instructions executable to:

receive, at a first application component, a request for processing;

measure a first start time of the first application component;

call an application programming interface (“API”) to a tracking framework, which transmits a first object to a tracking server, the first object creating in a database at the tracking server a first request record comprising the first start time, the first request record indicating start of execution of the first application component;

measure a second start time of an application callout;

call the API, which transmits, to the tracking server, a second object that creates a callout record in the database, the callout record comprising the second start time and indicating that the first application component has initiated an application callout to a second application component;

establish a parent-child relationship in the database between the first request record and the callout record, wherein the parent-child relationship between the first request record and the callout record comprises assigning a first Record ID of the first request record as the Parent ID of the callout record when generating and/or storing the callout record;

send application data from the first application component to the second application component;

store, in the callout record, traceability data about the application data sent from the first application component to the second application component;

measure a third start time of execution of the second application component;

call the API to transmit a third object, the third object creating, in the database, a second request record comprising the third start time;

establish, in the database, a parent-child relationship between the callout record and the second request record, wherein establishing a parent-child relationship between the callout record and the second request record comprises assigning a Record ID of the callout record as the Parent ID of the request record when generating and/or storing the second request record;

measure a first stop time of the second application component after execution but before the second application passes a response to the first application component;

store the first stop time in the second request record;

measure a second stop time of the application callout after the first application component receives a response from the called application;

store the second stop time in the callout record;

measure a third stop time of the first application component, after the first application component returns a response to the request for processing; and

store the third stop time in the first request record.

20. An apparatus, comprising:

one or more non-transitory computer-readable storage media having encoded thereon one or more sets of instructions executable by one or more computers to perform one or more operations, the one or more sets of instructions collectively comprising instructions executable to:

receive, at a first application component, a request for processing;

measure a first start time of the first application component;

call an application programming interface (“API”) to a tracking framework, which transmits a first object to a tracking server, the first object creating in a database at the tracking server a first request record comprising the first start time, the first request record indicating start of execution of the first application component;

measure a second start time of an application callout;

call the API, which transmits, to the tracking server, a second object that creates a callout record in the database, the callout record comprising the second start time and indicating that the first application component has initiated an application callout to a second application component;

establish a parent-child relationship in the database between the first request record and the callout record, wherein the parent-child relationship between the first request record and the callout record comprises assigning a first Record ID of the first request record as the Parent ID of the callout record when generating and/or storing the callout record;

send application data from the first application component to the second application component;

store, in the callout record, traceability data about the application data sent from the first application component to the second application component;

measure a third start time of execution of the second application component;

call the API to transmit a third object, the third object creating, in the database, a second request record comprising the third start time;

establish, in the database, a parent-child relationship between the callout record and the second request record, wherein establishing a parent-child relationship between the callout record and the second request record comprises assigning a Record ID of the callout record as the Parent ID of the request record when generating and/or storing the second request record;

measure a first stop time of the second application component after execution but before the second application passes a response to the first application component;

store the first stop time in the second request record;

measure a second stop time of the application callout after the first application component receives a response from the called application;

store the second stop time in the callout record;

measure a third stop time of the first application component, after the first application component returns a response to the request for processing; and

store the third stop time in the first request record.

Assignments (6)
RELEASE (REEL 066874 / FRAME 0793) Recorded Apr 15, 2026
From: BANK OF AMERICA, N.A.
To: QWEST COMMUNICATIONS INTERNATIONAL INC.
Reel/Frame 075405/0877 →
SECURITY INTEREST (FIRST LIEN) Recorded Apr 15, 2026
From: QWEST COMMUNICATIONS INTERNATIONAL INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 075406/0026 →
RELEASE OF SECURITY INTEREST Recorded Mar 25, 2024
From: COMPUTERSHARE TRUST COMPANY, N.A, AS SUCCESSOR TO WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: QWEST COMMUNICATIONS INTERNATIONAL INC.
Reel/Frame 066885/0917 →
SECURITY AGREEMENT (FIRST LIEN) Recorded Mar 22, 2024
From: QWEST COMMUNICATIONS INTERNATIONAL INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 066874/0793 →
NOTES SECURITY AGREEMENT Recorded Jan 24, 2020
From: QWEST COMMUNICATIONS INTERNATIONAL INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 051692/0646 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2017
From: MALKIMAN, IGOR I.; POWIS, CHAUNCEY G.; BUNCH, TYSON MATTHEW
To: QWEST COMMUNICATIONS INTERNATIONAL INC.
Reel/Frame 043981/0353 →
Continuity (5)
Continuation 14970944 · Dec 16, 2015
Continuation 14747228 · Jun 23, 2015
Continuation 13073504 · Mar 28, 2011
Provisional Application 61428709 · Dec 30, 2010
Related Publication 20180046526A1 · Feb 15, 2018