Not a customer? Click the 'Start a free trial' link to begin a 30-day SaaS trial of our product and to join our community.
Existing Cisco AppDynamics customers should click the 'Sign In' button to authenticate to access the community
on
05-06-2015
01:40 PM
- edited on
04-13-2021
11:25 PM
by
Claudia.Landiva
This topic describes how transaction correlation works in the Java environment. In principle, it works largely the same for .NET and the other language agents.
Transaction correlation enables AppDynamics to do distributed transaction tracing in modern web applications. Transaction correlation provides the ability to draw the application flow map and depict the flow of business transactions across multiple tiers and to external services.
Transaction correlation maintains the business transaction context across all tiers and threads as the requests are processed. Whatever the transaction does across all these tiers is counted as an activity for that business transaction.
Originating tier/segment |
Tier 1 in the diagram is where the first significant entry point is discovered, named, and instrumented. This is called the originating tier.
|
Continuing tier/segment
|
Every other thread spawned either in the same JVM or externally is considered a continuing segment or continuing tier.
|
For Remote Calls
(JVM->JVM and CLR->CLR) |
AppDynamics agents decorate the protocol headers to add transaction contextual information.
|
For Async threads
(intra-JVM and intra-CLR) |
AppDynamics agents save transaction context against thread hand-offs to be picked up when the async segment starts.
|
When done the right way, this does not change application behavior. AppDynamics agents only add where there is extensibility, such as found in HTTP headers and JMS properties. Every "transaction segment" reports its own metrics.
This diagram shows how the context is maintained across tiers for various mediums.
We add a header for HTTP calls because, by definition, the headers are extensible. The name of AppDynamics' header for propagating correlation information is "singularityheader
".
Adding custom headers to carry transaction information is safe when:
This diagram illustrates the generic structure of an HTTP request. When a client tier makes an HTTP call, the AppDynamics byte code interceptor adds a safe header that uniquely identifies this transaction. The AppDynamics byte code interceptor on the receiving Servlet (for example), reads the header and carries forward the transaction context. The Controller reconstructs the flow based on the information received from each node in the flow.
We add a message property for JMS calls because by definition, the message properties are extensible. Adding custom message properties to carry transaction information is safe when:
This diagram illustrates the generic structure of a JMS call.
The following diagram shows the contents of the AppDynamics correlation header.
appId=5*ctrlguid=1520068834*acctguid=1f125f4c-d69d-4bbb-a66b-
bb896f3515d0*nodeid=849*ts=1524772123010*btid=2218*snapenable=true*guid=6ba9c1f8-ab55-4c00-9193-
95fbcd1b6ddd*exitguid=9|1*unresolvedexitid=144*tcop=1:611*cidfrom=57*etypeorder=HTTP*esubtype=HTTP*cidto=66
If the underlying framework/API is not supported by out-of-the-box correlation by AppDynamics, then there is a provision to come up with the custom configurations by analyzing the flow of the transaction.
For more details, refer to:
Cross application flows show the performance impact between business applications within a Controller account. For environments that require a larger picture of business performance, federated cross application flows allow AppDynamics to correlate business transactions across business applications in different accounts that may be on different Controllers. For details, refer to:
Published on <u+200e>05-06-2015.
Content revised 7/30/18
With the new SAP agent it uses the HTTP listner to collect data from SAP but when I set it up is complains about the HTTP header
2018-07-13 10:59:57.570435| 2|httpclient| Not using an HTTP proxy
2018-07-13 10:59:57.570562| 2|env| Starting AppDynamics Agent libagent v4.4.4 v4.4.1.0 SHA (id: )
2018-07-13 10:59:57.570599| 2|env| Instrumenting process 20533 with working directory /opt/appdynamics/appdhttpsdk
2018-07-13 10:59:57.570609| 2|env| Running on OS: Linux (version #1 SMP Mon Feb 20 02:26:38 EST 2017), CPU architecture x86_64
2018-07-13 10:59:57.570621| 2|env| Controller: Telkom@41.148.130.135:8080, ssl: 0
2018-07-13 10:59:57.570632| 2|env| Analytics processor: localhost:9090
2018-07-13 10:59:57.570852| 2|agent| Agent state reset
2018-07-13 10:59:57.570896| 2|env| Application name: SAP_BW
2018-07-13 10:59:57.570929| 2|env| Tier name: BW
2018-07-13 10:59:57.570939| 2|env| Node name: SAP_BW_bisit_BW5_02
2018-07-13 10:59:57.612085| 2|agent| Scheduling new config update request
2018-07-13 10:59:57.705277| 3|httpclient| Invalid header in Http response
2018-07-13 10:59:57.705351| 3|agent| Agent configuration update error {http status 401}
How can one fix this?
What is the name of the HTTP header used to convey the correlation information?
Appdynamics header name to propagate the correlation information is "singularityheader".
@Walt.Kacynski and @Richa.Panwar : Thank you for surfacing this useful distinction. I've edited the article to include the AppDynamics HTTP header name.
Thank you! Your submission has been received!
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form