Patent ID: 8234631

Claim:
A method for tracing a distributed transaction executed on at least one host system connected by a computer network, the method comprising: (A) for each of a plurality of parts of the distributed transaction, creating and collecting part correlation information uniquely identifying the part; (B) using the part correlation information for the plurality of parts of the distributed transaction to generate relationship data representing relationships among the plurality of parts; (C) for each of the plurality of parts of the distributed transaction, creating and collecting method correlation information identifying call nesting level and call sequence of individual invocations of an instrumented method executed in the part; and (D) using the identified relationships to generate part measurement data representing performance metrics of each of the plurality of parts of the distributed transaction, and storing the part measurement data; (E) using the method correlation information to generate method measurement data representing performance metrics of the individual method invocations, and storing the method measurement data; wherein (A) comprises: (A)(1) collecting correlation information for a first thread; (A)(2) transferring the correlation information for the first thread to a second thread activated by the first thread; (A)(3) before (A)(1), placing a tagging sensor in a part of the distributed transaction corresponding to the first thread; (A)(4) before (A)(2), placing a tag extraction sensor in a part of the distributed transaction corresponding to the second thread; wherein (A)(1) comprises using the tagging sensor to collect and store the correlation information for the first thread and wherein (A)(2) comprises using the tag extraction sensor to extract the stored correlation information for the first thread and make the stored correlation information available in the second thread; and wherein (B) comprises using the correlation information to identify a parent-child relationship between the first thread and the second thread.