IP Library Granted Patent US 9,037,707
Granted Patent B2
US 9,037,707 · App. 14/071,503 · Granted May 19, 2015

Propagating a diagnostic session for business transactions across multiple servers

Inventors: Jyoti Bansal (San Francisco, CA); Bhaskar Sunkara (San Francisco, CA)
Assignee: AppDynamics, Inc.
H04L43/04H04L43/022H04L43/045H04L67/22H04L67/02
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,037,707
App. No.
14/071,503
Granted
May 19, 2015
Kind
B2
Abstract

The present technology may determine an anomaly in a portion of a distributed business application. Data can automatically be captured and analyzed for the portion of the application associated with the anomaly. By automatically capturing data for just the portion associated with the anomaly, the present technology reduces the resource and time requirements associated with other code-based solutions for monitoring transactions. In an embodiment, a method for monitoring an application may begin with detecting a diagnostic event. A diagnostic identifier may be associated with the request in response to the diagnostic event. An outgoing call may be detected at a first server associated with processing the request. The outgoing call may be modified at the first server to include the diagnostic identifier, the outgoing call with the diagnostic identifier received by a remote computer.

Claims (55)

1. A method for monitoring a distributed transaction, comprising detecting a diagnostic event;

associating a diagnostic identifier with the request in response to the diagnostic event;

sampling a thread call stack handling the request at a first server in response to detecting the diagnostic event;

detecting an outgoing call at the first server associated with processing the request; and

modifying the outgoing call at the first server to include the diagnostic identifier and a call chain of the sequence of one or more servers that have processed the distributed transaction, the outgoing call with the diagnostic identifier received by a remote computer, the call chain identifying a sequence of computers or services that have processed the particular request,

wherein an identifier is added to the call chain once the call to the remote computer is detected,

wherein an additional identifier is added to the call chain upon detection of a subsequent call that is associated with processing the request, the additional identifier added to the call chain at the remote computer or subsequent remote computer at which the call is detected, the call chain with the additional identifier added to the outgoing call at the particular remote computer or subsequent remote computer at which the particular subsequent call was detected.

2. The method of claim 1 , wherein the diagnostic event includes detecting an anomaly associated with the request.

3. The method of claim 1 , wherein the diagnostic event includes receiving a request from an user to collect diagnostic data.

4. The method of claim 1 , wherein detecting the outgoing call is performed by bytecode instrumentation.

5. The method of claim 1 , wherein detecting the outgoing call is performed by code embedded into exit points within the application which makes the outgoing call.

6. The method of claim 1 , wherein the diagnostic identifier is a global unique identifier (GUID).

7. The method of claim 1 , wherein the diagnostic identifier is provided to a remote agent by a controller.

8. The method of claim 1 , wherein the diagnostic identifier is generated by an agent and provided to a controller.

9. The method of claim 1 , further comprising:

detecting an incoming call at a second server, the incoming call including the diagnostic identifier;

associating the diagnostic identifier with a second thread handling the incoming call at the second server; and

sampling the thread call stack in response to detecting the diagnostic identifier in the incoming call.

10. The method of claim 1 , further comprising:

detecting a second outgoing call at the remote computer, wherein the second outgoing call detected at the remote computer and the outgoing call detected at the first server are part of a business transaction; and

modifying the second outgoing call at the remote computer to include the diagnostic identifier, the second outgoing call with the diagnostic identifier received by a second remote computer.

11. A system for monitoring a business transaction, comprising:

a first application server having memory; and

one or more modules stored in memory of the first application server and executable by a processor to detect a diagnostic event, associate a diagnostic identifier with the request in response to the diagnostic event, the diagnostic identifier associated with the diagnostic event, sample a thread call stack handling the request at a first server in response to detecting the diagnostic event detect an outgoing call at the first server associated with processing the request, and modify the outgoing call at the first server to include the diagnostic identifier and a call chain of a sequence of one or more servers that have processed the distributed transaction, wherein the outgoing call with the diagnostic identifier received by a remote computer, the call chain identifying a sequence of computers or services that have processed the particular request, wherein an identifier is added to the call chain once the call to by the remote computer is detected, wherein an additional identifier is added to the call chain upon detection of a subsequent call that is associated with processing the request, the additional identifier added to the call chain at the remote computer or subsequent remote computer at which the call is detected, the call chain with the additional identifier added to the outgoing call at the particular remote computer or subsequent remote computer at which the particular subsequent call was detected.

12. The system of claim 11 , wherein the diagnostic event includes detecting an anomaly associated with the request.

13. The system of claim 11 , wherein the diagnostic event includes receiving a request from an user to collect diagnostic data.

14. The system of claim 11 , wherein detecting the outgoing call is performed by bytecode instrumentation.

15. The system of claim 11 , wherein detecting the outgoing call is performed by code embedded into exit points within the application which makes the outgoing call.

16. The system of claim 11 , wherein the diagnostic identifier is a global unique identifier (GUID).

17. The system of claim 11 , wherein the diagnostic identifier is provided to a remote agent by a controller.

18. The system of claim 11 , wherein the diagnostic identifier is generated by an agent and provided to a controller.

19. The system of claim 11 , wherein the modules are executable by the processor to detect an incoming call at a second server, the incoming call including the diagnostic identifier, associate the diagnostic identifier with a second thread handling the incoming call at the second server, and sample the thread call stack in response to detecting the diagnostic identifier in the incoming call.

20. The system of claim 11 , wherein the modules are executable by the processor to detect a second outgoing call at the remote computer, wherein the second outgoing call detected at the remote computer and the outgoing call detected at the first server are part of a business transaction and modify the second outgoing call at the remote computer to include the diagnostic identifier, the second outgoing call with the diagnostic identifier received by a second remote computer.

21. A non-transitory computer readable storage medium having embodied thereon a program, the program being executable by a processor to perform a method for monitoring a business transaction, the method comprising:

detecting a diagnostic event;

associating a diagnostic identifier with the request in response to the diagnostic event;

sampling a thread call stack handling the request at a first server in response to detecting the diagnostic event;

detecting an outgoing call at the first server associated with processing the request; and

modifying the outgoing call at the first server to include the diagnostic identifier and a call chain of the sequence of one or more servers that have processed the distributed transaction, the outgoing call with the diagnostic identifier received by a remote computer, the call chain identifying a sequence of computers or services that have processed the particular request,

wherein an identifier is added to the call chain once the call to the remote computer is detected,

wherein an additional identifier is added to the call chain upon detection of a subsequent call that is associated with processing the request, the additional identifier added to the call chain at the remote computer or subsequent remote computer at which the call is detected, the call chain with the additional identifier added to the outgoing call at the particular remote computer or subsequent remote computer at which the particular subsequent call was detected.

22. The non-transitory computer readable storage medium of claim 21 , wherein the diagnostic event includes detecting an anomaly associated with the request.

23. The non-transitory computer readable storage medium of claim 21 , wherein the diagnostic event includes receiving a request from an user to collect diagnostic data.

24. The non-transitory computer readable storage medium of claim 21 , wherein detecting the outgoing call is performed by bytecode instrumentation.

25. The non-transitory computer readable storage medium of claim 21 , wherein detecting the outgoing call is performed by code embedded into exit points within the application which makes the outgoing call.

26. The non-transitory computer readable storage medium of claim 21 , wherein the diagnostic identifier is a global unique identifier (GUID).

27. The non-transitory computer readable storage medium of claim 21 , wherein the diagnostic identifier is provided to a remote agent by a controller.

28. The non-transitory computer readable storage medium of claim 21 , wherein the diagnostic identifier is generated by an agent and provided to a controller.

29. The non-transitory computer readable storage medium of claim 21 , the method further comprising:

detecting an incoming call at a second server, the incoming call including the diagnostic identifier;

associating the diagnostic identifier with a second thread handling the incoming call at the second server; and

sampling the thread call stack in response to detecting the diagnostic identifier in the incoming call.

30. The non-transitory computer readable storage medium of claim 21 , the method further comprising:

detecting a second outgoing call at the remote computer, wherein the second outgoing call detected at the remote computer and the outgoing call detected at the first server are part of a business transaction; and

modifying the second outgoing call at the remote computer to include the diagnostic identifier, the second outgoing call with the diagnostic identifier received by a second remote computer.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: APPDYNAMICS LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 044173/0050 →
CHANGE OF NAME Recorded Jun 23, 2017
From: APPDYNAMICS, INC.
To: APPDYNAMICS LLC
Reel/Frame 042964/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2013
From: BANSAL, JYOTI; SUNKARA, BHASKAR
To: APPDYNAMICS, INC.
Reel/Frame 031646/0427 →
Continuity (4)
Continuation 13189360 · Jul 22, 2011
Continuation In Part 12878919 · Sep 9, 2010
Provisional Application 61241256 · Sep 10, 2009
Related Publication 20140068067A1 · Mar 6, 2014