SlideShare una empresa de Scribd logo
1 de 46
AppDynamics Custom
Transaction Correlation
AppDynamics Version 4.2
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 2
Notice
The information and materials included in this presentation (collectively,
the “Materials”) are the confidential and proprietary information of
AppDynamics, Inc. (the “Company”). No part of the Materials may be
reproduced, distributed, communicated or displayed in any form or by any
means, or used to make any derivative work, without prior written
permission from the Company. © 2016 AppDynamics, Inc. All rights
reserved.
All third party trademarks, including names, logos and brands, referenced
by the Company in this presentation are property of their respective
owners. All references to third party trademarks are for identification
purposes only and shall be considered nominative fair use under
trademark law.
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 3
Objectives
Course Labs
Understand AppDynamics
Transaction Correlation
Facilitate discovery of missing
components in flow maps
Determining Entry and Exit Points
Configuring AppDynamics
for custom correlation
Review Transactions and Flow Maps
Finding Entry Points
Research relationship between
Entry & Exit Points
Configure Custom Correlation
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 4
Topic 1 What Is AppDynamics Transaction Correlation?
A.Transaction Correlation Basics
B. Exit Point Issues
C.Entry Point Issues
Topic 2 What Is AppDynamics Custom Correlation?
A. Custom Correlation Basics
B. Exit Point Configuration
C.Entry Point Configuration
AppDynamics Custom Transaction Correlation
Agenda
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 5
• Detected transactions rely on AppServer
Agent decorating requests with GUID
• GUID = Global Unique Identifier
• Same GUID assigned by Agenton each
tier involved in the requestchain
• GUIDs posted to Controller,which
reconciles GUID-labelled events
• Controller derives Business Transaction
flow map from comparing individual
requestchains
Transaction Correlation Basics
• Correlation relies on ability ofAgents
to decorate and read GUIDs
• Automatic correlation breaks down ifGUID
cannotbe set, or cannotbe read
What works and doesn’t work
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 6
Transaction Correlation Basics
AppServer Agent Behavior
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 7
At the pointin code where call out to other componenthappens,
Appserver Agenttries to decorate the outbound requestwith the GUID.
This is during what’s called the Exit Point – adding the GUID relies
on Agent being aware ofthe code as an Exit Point.
On any monitored component,the ability to read the GUID embedded
in a requestrelies on Agentability to understand the technology.
Entry Point is AppDynamics term for a pointin the code which
processes an incoming requestthatthe Agentsuccessfully notices.
Setting & Reading The GUID
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 8
AppDynamics Custom Transaction Correlation
Topic 1 What Is AppDynamics Transaction Correlation?
A. Transaction Correlation Basics
B.Exit Point Issues
C.Entry Point Issues
Topic 2 What Is AppDynamics Custom Correlation?
A. Custom Correlation Basics
B. Exit Point Configuration
C.Entry Point Configuration
Agenda
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 9
Exit Point Issues
Tiers missing from Flow Maps
Inability to successfully detect
an Exit Point means GUID is not set.
From AppDynamics perspective,
the Business Transaction does not
continue any further!
Looking at the flow map, this may be
why Tiers appear to be missing!
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 10
AppDynamics Custom Transaction Correlation
Topic 1 What Is AppDynamics Transaction Correlation?
A. Transaction Correlation Basics
B. Exit Point Issues
C.Entry Point Issues
Topic 2 What Is AppDynamics Custom Correlation?
A. Custom Correlation Basics
B. Exit Point Configuration
C.Entry Point Configuration
Agenda
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 11
Entry Point Issues
Tier appears as Back End
Inability to successfully detect an
Entry Point will mean GUID is not read
The Business Transaction will notinclude
this Tier in its flow map (though may show
up in the flow map as a Back End)
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 12
Is Custom Correlation Necessary?
Various factors can also prevent correlation
The absence of the expected Tier on a Transaction Flow
Map could be due to an Agentissue
Rule outAgent as the cause of the issue by checking:
• Agent installed and configured correctly?
• Agent up and running?
• Does the Tier show up in the Flow Map
of other Transactions?
Lab 1
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 13
Review Movieztream & Login.htm Transaction
URL <<your IP address>>/controller
Username admin
Password admin
Scenario
While AppDynamics managed to detectthe
/movieztream_ui/login.htm transaction withoutany
difficulty, it appears not to be aware that when users
log in to Movieztream there is a call made to the
ProfileStore Tier, as this is not showing on the flow
map.
This exercise is designed to familiarize the student
with the application,flow maps and transactions.
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 14
How BTs Are Tracked
AppDynamics successfully automatically correlates transactions
where various technologies are employed
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 15
Correlation In HTTP
Adding Custom Headers to carry
transaction information is safe if
•You don’tuse any well-understood
header names like ‘Accept-Language’
•The content of the header value
is ‘HTTP-safe’
Method | URL | Version Request Line
Header Field-Name Header Value
Header Field-Name Header Value
Headers
•Extensible by definition
•Does not Contain
Application Data
Body Request Body
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 16
Correlation In HTTP
AppDynamics Byte Code Interceptor
on The HTTP transport layer – adds
a safe header which uniquely identifies
this transaction.The controller reconstructs
the flow.
AppDynamics Byte Code Interceptor
on the servlet– reads the header with
the information.
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 17
Correlation In JMS
Adding Custom Message
Properties to carry transaction
information is safe if
•You don’toverwrite any existing
property names and choose
a unique name
•The content of the property
value is valid content
JMSPriority…
Property Name Property Value
Property Name Property Value
Message Properties
•Extensible by definition
Body Message Body
JMSDestination
Headers
•Not Extensible
•Predefined
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 18
Correlation In JMS
AppDynamics Byte Code Interceptor on The JMS
Message sender – adds a safe header which uniquely
identifies this transaction.
AppDynamics Byte Code Interceptor on the Message
Receiver– reads the header with the information.
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 19
AppDynamics Custom Transaction Correlation
Topic 1 What Is AppDynamics Transaction Correlation?
A. Transaction Correlation Basics
B. Exit Point Issues
C.Entry Point Issues
Topic 2 What Is AppDynamics Custom Correlation?
A.Custom Correlation Basics
B. Exit Point Configuration
C.Entry Point Configuration
Agenda
Exploring Untracked Functionality
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 20
1
ConfiguringAppDynamics to reveal unmonitored running code
1. How do we ‘see’
what we can’t ‘see’?
2. Appdynamics Agents
can reveal method calls
being executed which
are outside of any tracked
Business Transactions
3. This provides us with
potential Entry Points
Activated by setting a
specific Agent’s find-
entry-points property
to true
2
3
Find Entry Points Output
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 21
Where to view unmonitored running code that AppDynamics has detected
Activity is recorded in
BusinessTransactions
log file
Retrieve either through
Controller or from logs
directory on server
As the property adds
a small overhead to Agent
performance, recommended
to disable once done with
investigations
[main] 07 Nov 2016 17:10:51,565 INFO - ############################################################
[main] 07 Nov 2016 17:10:51,565 INFO - Logging request stack for Thread main
>>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java
[main] 07 Nov 2016 17:10:51,565 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Pro
com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread <init>

[main] 07 Nov 2016 17:10:51,565 INFO -END request stack for Thread main
[main] 07 Nov 2016 17:10:51,
[main] 07 Nov 2016 17:10:53,837 INFO - ############################################################
>>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java
[main] 07 Nov 2016 17:10:53,837 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Pro
[main] 07 Nov 2016 17:10:53,837 INFO - 1. POJO com.ecetera.appdynamics.movieztream.service.util.Pro
[main] 07 Nov 2016 17:10:53,837 INFO - ############################################################
#################################################################

[main] 07 Nov 2016 17:10:54,102 INFO - Logging request stack for Thread main
>>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java
ain] 07 Nov 2016 17:10:54,102 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Profi
[main] 07 Nov 2016 17:10:54,103 INFO - 1. POJO com.ecetera.appdynamics.movieztream.service.util.Pro
main
[main] 07 Nov 2016 17:10:54,103 INFO - ########################################################
#################################################################

[main] 07 Nov 2016 17:10:55,449 INFO - Logging request stack for Thread main
>>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java
[main] 07 Nov 2016 17:10:55,449 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Pro
[main] 07 Nov 2016 17:10:55,449 INFO - 1. POJO com.ecetera.appdynamics.movieztream.service.util.Pro
Lab 2
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 22
Finding Entry Points
Scenario
While AppDynamics managed to detectthe
/movieztream_ui/login.htm transaction without
any difficulty, it appears notto be aware that when
users log in to Movieztream there is a call made
to the ProfileStore Tier, as this is not showing on
the flow map.
This exercise is designed to configure AppDynamics
to discover potential missing flow map components.
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 23
Custom Correlation
Custom Correlation is Agent
level configuration
Achieved by adding specific
definitions to the file custom-
activity-correlation.xml
under Agentconf directory
No source code changes,
totally non-invasive approach
Mistakes in the XML will result
in correlation failure or simply
unexpected results in transaction
Flow Map – check agentlog file
for details
<activities>
<producer>
<!-- This instrumentation element defines a custom exit point. -->
<instrumentation>
<class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name>
<method-name>sendProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
<!-- This identifier element specifies how to name the custom exit point. This is similar to how we name custom exit points from the UI -->
<identifiers>
<identifier name="ProfileFinder">
<data-gatherer-type>INVOKED</data-gatherer-type>
<getter-chain>this</getter-chain>
<user-defined-name>ProfileFinder</user-defined-name>
<transformer-type>USER_DEFINED_NAME</transformer-type>
</identifier>
</identifiers>
<!-- The following correlation element specifies where and how to add the correlation metadata -->
<correlation>
<!-- This instrumentation element specifies how to get hold of the outgoing payload -->
<instrumentation>
<class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name>
<method-name>sendProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
<!-- This payload-pointer specifies where to grab the payload at the instrumentation point defined above -->
<payload-pointer>
<data-gatherer-type>POSITION</data-gatherer-type>
<position>0</position>
<getter-chain>this</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</payload-pointer>
<!-- This payload-operation defines how to add the correlation metadata to the payload -->
<payload-operation>
<access-type>method</access-type>
<access-method>put</access-method>
<param-types>java.lang.Object, java.lang.Object</param-types>
</payload-operation>
</correlation>
</producer>
<consumer identify-transaction="true">
<!-- This is where the correlation metadata is read and continuing transaction is begun -->
<instrumentation>
<class-name>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread</class-name>
<method-name>receiveProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
<correlation>
<!-- This is how we get the payload bearing our correlation metadata -->
<payload-pointer>
<data-gatherer-type>POSITION</data-gatherer-type>
<position>0</position>
<getter-chain>this</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</payload-pointer>
<!-- This is how we extract correlation metadata from the payload -->
<payload-operation>
<access-type>method</access-type>
<access-method>put</access-method>
<param-types>java.lang.Object</param-types>
</payload-operation>
</correlation>
</consumer>
</activities>
Topology of the XML
Root elementis <activities>
multiple <producer>
and <consumer> elements
are allowed
<producer> is the Exit Point
<consumer> is the Entry Point
<correlation> defines
where to get the GUID and how
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 24
<activities>
<producer>
<correlation>
.......
</correlation>
</producer>
<consumer>
<correlation>
.......
</correlation>
</consumer>
</activities>
What Custom Correlation Requires
Exit Point detail
Classpath,method
Exit Point payload details
The code is sending request
to other component.Can we
append the GUID somehow?
Entry Point details
Classpath,method
Entry Point payload details
The code is accepting the
request. Can we extract
the GUID from it?
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 25
Investigating details for Exit and Entry Points
<activities>
<producer>
<!-- This instrumentation element defines a custom exit point. -->
<instrumentation>
<class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name>
<method-name>sendProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
<!-- This identifier element specifies how to name the custom exit point. This is similar to how we name custom exit points from the UI -->
<identifiers>
<identifier name="ProfileFinder">
<data-gatherer-type>INVOKED</data-gatherer-type>
<getter-chain>this</getter-chain>
<user-defined-name>ProfileFinder</user-defined-name>
<transformer-type>USER_DEFINED_NAME</transformer-type>
</identifier>
</identifiers>
<!-- The following correlation element specifies where and how to add the correlation metadata -->
<correlation>
<!-- This instrumentation element specifies how to get hold of the outgoing payload -->
<instrumentation>
<class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name>
<method-name>sendProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
<!-- This payload-pointer specifies where to grab the payload at the instrumentation point defined above -->
<payload-pointer>
<data-gatherer-type>POSITION</data-gatherer-type>
<position>0</position>
<getter-chain>this</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</payload-pointer>
<!-- This payload-operation defines how to add the correlation metadata to the payload -->
<payload-operation>
<access-type>method</access-type>
<access-method>put</access-method>
<param-types>java.lang.Object, java.lang.Object</param-types>
</payload-operation>
</correlation>
</producer>
<consumer identify-transaction="true">
<!-- This is where the correlation metadata is read and continuing transaction is begun -->
<instrumentation>
<class-name>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread</class-name>
<method-name>receiveProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
<correlation>
<!-- This is how we get the payload bearing our correlation metadata -->
<payload-pointer>
<data-gatherer-type>POSITION</data-gatherer-type>
<position>0</position>
<getter-chain>this</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</payload-pointer>
<!-- This is how we extract correlation metadata from the payload -->
<payload-operation>
<access-type>method</access-type>
<access-method>put</access-method>
<param-types>java.lang.Object</param-types>
</payload-operation>
</correlation>
</consumer>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 26
1
What Custom Correlation Requires
Assembling the Details
A. At this stage you should try to check the source code.
B. Although in many cases it will be possible to identify
Exit and Entry Points, the payload may not be
so easy, e.g.
C. Payload on Exit Point cannot be modified (technical
limitation)
D. Payload on Exit Point cannot be modified due
to security reasons
E. Payload on Entry Point cannot be read (not in scope)
F. Payload on Entry Point cannot be read
(technical limitation)
G. Without ability to set and get the payload,
Custom Correlation will not work!
A
B
C
D
Lab 3
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 27
Research Entry and Exit Point Details
Scenario
Reviewing source code is frequently the best option
if you want to understand whatthe functionality is
actually doing,in the event that transaction correlation
does not seem to be working automatically.
This exercise is designed to show how and where to
review code for configuring custom correlation entry
and exit points.
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY
2
8
Sample Exit Points
Is this acceptable Exit Point code?
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 29
Sample Exit Points
Is this acceptable Exit Point code?
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 30
<activities>
<producer>
<consumer>
<identifiers>
<correlation>
<validator-config>
<naming-config>
<excludes>, <includes>
Defining Custom Correlation XML
Key XML Tags overview
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 31
Attributes available to support various
scenarios, e.g.
• Prioritization of multiple Producers
that potentially detect same Exit Point
• If resolution to a Tier is NOT desired
for the defined Exit Point
• Ability to instrument multiple payloads
based on there being
a split at the Exit Point
• Ability to instrument threaded activities
and asynchronous queues
Must define code we want to instrument
based on knowing at least one of the
following
• Class name, interface, superclass,
class annotation
Must define method name, and
parameters of method signature
if method is overloaded
Producer
Instrumentation
<activities>
<producer>
<!--This instrumentation element defines a custom exit point.-->
<instrumentation>
<class-name>
com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder
</class-name>
<method-name>sendProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
</producer>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 32
Specify identification and
registration of Custom Exit Point
Naming can be user-defined
literal,or derived based on
current object,method return
object, or method parameter
Producer
Identifiers
<activities>
<producer>
<!-- This identifier element specifies how to name the custom exit
point. This is similar to how we name custom exit points from the UI -->
<identifiers>
<identifier name="ProfileFinder">
<data-gatherer-type>INVOKED</data-gatherer-type>
<getter-chain>this</getter-chain>
<user-defined-name>ProfileFinder</user-defined-name>
<transformer-type>USER_DEFINED_NAME</transformer-type>
</identifier>
</identifiers>
</producer>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 33
May be necessary to add GUID
to single payload objector all
objects in a collection (in split
exit scenario)
Can have GUID applied at
a differentmethod from that
of the Exit Point
Specify <payload-pointer>
to indicate precise payload object
we wantto decorate with GUID
Specify <payload-operation>
to declare how to decorate the
payload objectwith GUID
Producer
Correlation
<activities>
<producer>
<!-- The following correlation element specifies where and how to add the correlation
metadata -->
<correlation>
<!-- This instrumentation element specifies how to get hold of the outgoing payload -->
<instrumentation>
<class-
name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name>
<method-name>sendProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
<!-- This payload-pointer specifies where to grab the payload at the
instrumentation point defined above -->
<payload-pointer>
<data-gatherer-type>POSITION</data-gatherer-type>
<position>0</position>
<getter-chain>this</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</payload-pointer>
<!-- This payload-operation defines how to add the correlation metadata to the payload -->
<payload-operation>
<access-type>method</access-type>
<access-method>put</access-method>
<param-types>java.lang.Object, java.lang.Object</param-types>
</payload-operation>
</correlation>
</producer>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 34
Consumer has attributes to control
scenarios as follows
• Transaction should be instrumentedon
basis of the first iteration of a loop in
the code, terminating whencode hits
next iteration
• Identifiers permit the specification of
more than 1 Custom Exit Point based
on a single particular method of a class
• Demarcation of activity to differentiate
between identification of Entry Point
and separate block of codelater on
where correlation occurs
Must define code we want to
instrument based on knowing
at least one of the following
• Class name, interface, superclass,
class annotation
Must define method name, and
parameters of method signature
if method is overloaded
Consumer
Instrumentation
<activities>
<consumer identify-transaction="true">
<!-- This is where the correlation metadata is read and
continuing transaction is begun -->
<instrumentation>
<class-name>
com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread</c
lass-name>
<method-name>receiveProfile</method-name>
<match-type>MATCHES_CLASS</match-type>
</instrumentation>
</consumer>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 35
Can read GUID from a
downstream method different
from what specified at Consumer
Instrumentation level
Specify <payload-pointer>
to indicate precise payload object
we wantto read GUID from
Specify <payload-operation>
to declare how to read the GUID
from the payload object
Consumer
Correlation
<activities>
<consumer identify-transaction="true">
<correlation>
<!-- This is how we get the payload bearing our correlation
metadata -->
<payload-pointer>
<data-gatherer-type>POSITION</data-gatherer-type>
<position>0</position>
<getter-chain>this</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</payload-pointer>
<!-- This is how we extract correlation metadata from the
payload -->
<payload-operation>
<access-type>method</access-type>
<access-method>put</access-method>
<param-types>java.lang.Object</param-types>
</payload-operation>
</correlation>
</consumer>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 36
The Naming Config
Applicable when correlating
asynchronous activities,e.g.
Thread/Callable/Runnable
or Queue-based
Provides a means to define
re-usable instrumentation
identification criteria
<activities>
<!-- naming rules config -->
<naming-config>
<naming-rule>
<data-gatherer-config>
<name>FQCN</name>
<data-gatherer-type>INVOKED</data-gatherer-type>
<getter-chain>getClass, getName</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</data-gatherer-config>
</naming-rule>
</naming-config>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 37
The Validator Config
Ability to filter correlation based
on checking for data values
Applicable on Producer
or Consumer
Allows you to perform
custom correlation ONLY
when specific value present,
e.g. Customer Type == GOLD
<activities>
<validator-config>
<validator match
type="STARTSWITH|ENDSWITH|CONTAINS|EQUALS|REGEX|INLIST|NOTEMPTY”
class-match
type="INHERITS_FROM_CLASS|IMPLEMENTS_INTERFACE|MATCHES_CLASS|HAS_CLASS_ANNOTATI
ON" match-pattern="">
<data-match-config>
<data-gatherer-type>
<!-- INVOKED|RETURN|POSITION -->
</data-gatherer-type>
<position>
<!--POSITION NUMBER. Only used in case POSITION data-gatherer-type is chosen-->
</position>
<getter-chain>
<!-- comma separated list of method names EX: getClass, getName -->
</getter-chain>
<transformer-type>
<!-- TO_STRING|SIMPLE_CLASS_NAME|FIELD_NAME|USER_DEFINED_NAME|GETTER_METHODS -
->
</transformer-type>
</data-match-config>
</validator>
</validator-config>
</activities>
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 38
When instrumentation
configuration setup to match
multiple possible classes (e.g.
interface/superclass/annotation
based matching),you can
specifically exclude groups
or individual classes from
being matched.
Include back in any sub-groups
or specific classes which
have been lost through
the exclude rules.
Defines naming rules for
Consumer instrumentation
points to aid in distinguishing
individual processes.
Excludes & Includes
<activities>
<!-- naming rules config -->
<naming-config>
<naming-rule>
<data-gatherer-config>
<name>FQCN</name>
<data-gatherer-type>INVOKED</data-gatherer-type>
<getter-chain>getClass, getName</getter-chain>
<transformer-type>GETTER_METHODS</transformer-type>
</data-gatherer-config>
</naming-rule>
</naming-config>
<excludes filter-type="STARTSWITH" filter
value="java/,javax/,com.sun/,sun/,org/"/>
<!-- exclude weblogic and websphere -->
<excludes filter-type="STARTSWITH" filter-
value="com.bea/,com.weblogic/,weblogic/,com.ibm/"/>
<!-- thread config -->
Lab 4
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 39
Configure Custom Correlation XML
Scenario
Having now researched suitable Exitand Entry Points,
and identified whatwe think can work as the payload
that can carry the GUID, it is now time to configure the
Custom Activity Correlation XML.
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 40
We have outlined the principles oftransaction
correlation and how AppDynamics mostly succeeds
in correlating automatically.
This course has explored why correlation does not
always work and how it may appear in the Flow Map.
You have explored how to research
and set up Custom Activity Correlation for yourself.
Summary
University
Appdynamics.com/university
Community
community.appdynamics.com Tech Webinars
Additional Learning Opportunity
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 41
What are the Resources?
Fan Club
University
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 42
Multiple Track Courses and Certifications @ appdynamics.com/university
Sign Up for Multiple Tracks and Course Dates
for Live Training Sessions
Watch quick task-based tutorials
Take Self-Paced courses to learn at your own pace
Access subscriber only contents
Community
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 43
Connect With Other Users And Experts @ community.appdynamics.com
Exchange information with other
Power Users and AppDynamics experts
Get AppDynamics-supported
and author-supported extensions
Tech Webinars
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 44
Attend for free
Every other Wednesday at10:00am PT
45 Min presentation followed by a Q&A session
View the Tech Webinars Schedule to register for
upcoming webinars and watch pastpresentations.
Join The FanClub
APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 45
We love our customers and partners. Let us thank you for your ongoing support.
See new features and roadmaps
Try new products and beta programs
Access custom extensions and training
MeetAppDynamics Executives
Get premium swag and invitations to events
Sign up and claim your benefits
by clicking here to submit the request!
Thank You
Please fill out the survey:
https://www.surveymonkey.com/r/AppDynamicsUniversity
Your feedback is very important to us. We use it to help us improve our content
and incorporate new features to keep our courses relevantfor our audience.
Fred Paine
fred.paine@appdynamics.com

Más contenido relacionado

La actualidad más candente

Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...
Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...
Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...
HostedbyConfluent
 

La actualidad más candente (20)

UiPath Test Suite
UiPath Test Suite UiPath Test Suite
UiPath Test Suite
 
UDF/UDAF: the extensibility framework for KSQL (Hojjat Jafapour, Confluent) K...
UDF/UDAF: the extensibility framework for KSQL (Hojjat Jafapour, Confluent) K...UDF/UDAF: the extensibility framework for KSQL (Hojjat Jafapour, Confluent) K...
UDF/UDAF: the extensibility framework for KSQL (Hojjat Jafapour, Confluent) K...
 
Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...
Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...
Real-Time Processing of Spatial Data Using Kafka Streams, Ian Feeney & Roman ...
 
Using Angular JS in APEX
Using Angular JS in APEXUsing Angular JS in APEX
Using Angular JS in APEX
 
UiPath Email Automation | UiPath Tutorial | RPA Training Using UiPath | Edureka
UiPath Email Automation | UiPath Tutorial | RPA Training Using UiPath | EdurekaUiPath Email Automation | UiPath Tutorial | RPA Training Using UiPath | Edureka
UiPath Email Automation | UiPath Tutorial | RPA Training Using UiPath | Edureka
 
UiPath Devops.pptx
UiPath Devops.pptxUiPath Devops.pptx
UiPath Devops.pptx
 
Data Ingest Self Service and Management using Nifi and Kafka
Data Ingest Self Service and Management using Nifi and KafkaData Ingest Self Service and Management using Nifi and Kafka
Data Ingest Self Service and Management using Nifi and Kafka
 
Why You Should Be Doing Contract-First API Development
Why You Should Be Doing Contract-First API DevelopmentWhy You Should Be Doing Contract-First API Development
Why You Should Be Doing Contract-First API Development
 
Stream Processing with Flink and Stream Sharing
Stream Processing with Flink and Stream SharingStream Processing with Flink and Stream Sharing
Stream Processing with Flink and Stream Sharing
 
Event-sourced architectures with Akka
Event-sourced architectures with AkkaEvent-sourced architectures with Akka
Event-sourced architectures with Akka
 
Robotic process automation overview
Robotic process automation overviewRobotic process automation overview
Robotic process automation overview
 
RPA Developer Kickstarter | Day 3: UI Automation and UiPath Selectors
RPA Developer Kickstarter | Day 3: UI Automation and UiPath SelectorsRPA Developer Kickstarter | Day 3: UI Automation and UiPath Selectors
RPA Developer Kickstarter | Day 3: UI Automation and UiPath Selectors
 
Apache Flink 101 - the rise of stream processing and beyond
Apache Flink 101 - the rise of stream processing and beyondApache Flink 101 - the rise of stream processing and beyond
Apache Flink 101 - the rise of stream processing and beyond
 
Introduction to UiPath licensing model
Introduction to UiPath licensing modelIntroduction to UiPath licensing model
Introduction to UiPath licensing model
 
UiPath - Business Process Automation Software
UiPath - Business Process Automation SoftwareUiPath - Business Process Automation Software
UiPath - Business Process Automation Software
 
Ui path| RPA
Ui path| RPAUi path| RPA
Ui path| RPA
 
Introduction To UiPath | RPA Tutorial For Beginners | RPA Training using Uipa...
Introduction To UiPath | RPA Tutorial For Beginners | RPA Training using Uipa...Introduction To UiPath | RPA Tutorial For Beginners | RPA Training using Uipa...
Introduction To UiPath | RPA Tutorial For Beginners | RPA Training using Uipa...
 
Integration Microservices
Integration MicroservicesIntegration Microservices
Integration Microservices
 
SplunkLive 2011 Advanced Session
SplunkLive 2011 Advanced SessionSplunkLive 2011 Advanced Session
SplunkLive 2011 Advanced Session
 
1. informatica power center architecture
1. informatica power center architecture1. informatica power center architecture
1. informatica power center architecture
 

Destacado

Destacado (20)

Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
Is Your Infrastructure Affecting Critical Business Transactions? - AppSphere16
 
AppDynamics the Missing Link to DevOps - AppSphere16
AppDynamics the Missing Link to DevOps - AppSphere16AppDynamics the Missing Link to DevOps - AppSphere16
AppDynamics the Missing Link to DevOps - AppSphere16
 
From APM to Business Monitoring with AppDynamics Analytics
From APM to Business Monitoring with AppDynamics AnalyticsFrom APM to Business Monitoring with AppDynamics Analytics
From APM to Business Monitoring with AppDynamics Analytics
 
Memory Heap Analysis with AppDynamics - AppSphere16
Memory Heap Analysis with AppDynamics - AppSphere16Memory Heap Analysis with AppDynamics - AppSphere16
Memory Heap Analysis with AppDynamics - AppSphere16
 
End User Monitoring with AppDynamics - AppSphere16
End User Monitoring with AppDynamics - AppSphere16End User Monitoring with AppDynamics - AppSphere16
End User Monitoring with AppDynamics - AppSphere16
 
Digital Lumberjacking: Chipping Away at Complex Technology and Culture Change...
Digital Lumberjacking: Chipping Away at Complex Technology and Culture Change...Digital Lumberjacking: Chipping Away at Complex Technology and Culture Change...
Digital Lumberjacking: Chipping Away at Complex Technology and Culture Change...
 
Thousands of JVMs, Hundreds of Applications, and Two People: How Cerner Learn...
Thousands of JVMs, Hundreds of Applications, and Two People: How Cerner Learn...Thousands of JVMs, Hundreds of Applications, and Two People: How Cerner Learn...
Thousands of JVMs, Hundreds of Applications, and Two People: How Cerner Learn...
 
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
How the World Bank Standardized on AppDynamics as its Enterprise-Wide APM Sol...
 
Microservices and the Modern IT Stack: Trends of Tomorrow - AppSphere16
Microservices and the Modern IT Stack: Trends of Tomorrow - AppSphere16Microservices and the Modern IT Stack: Trends of Tomorrow - AppSphere16
Microservices and the Modern IT Stack: Trends of Tomorrow - AppSphere16
 
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
How Financial Engines Drives Business Outcomes Using AppDynamics Analytics - ...
 
AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16AppDynamics Administration - AppSphere16
AppDynamics Administration - AppSphere16
 
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
Lessons Learned at a US Government Agency Monitoring a Large, Highly Regulate...
 
Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16Synthetic Monitoring Deep Dive - AppSphere16
Synthetic Monitoring Deep Dive - AppSphere16
 
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
How SAS Institute Drove Digital Transformation Through DevOps - AppSphere16
 
Getting Additional Value from Logs and APM Data with AppDynamics Unified Anal...
Getting Additional Value from Logs and APM Data with AppDynamics Unified Anal...Getting Additional Value from Logs and APM Data with AppDynamics Unified Anal...
Getting Additional Value from Logs and APM Data with AppDynamics Unified Anal...
 
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
Monitoring and Instrumentation Strategies: Tips and Best Practices - AppSphere16
 
Better Together: The Winning Strategy of Unified Ownership - AppSphere16
Better Together: The Winning Strategy of Unified Ownership - AppSphere16Better Together: The Winning Strategy of Unified Ownership - AppSphere16
Better Together: The Winning Strategy of Unified Ownership - AppSphere16
 
How AppDynamics Saved Garmin's Christmas! - AppSphere16
How AppDynamics Saved Garmin's Christmas! - AppSphere16How AppDynamics Saved Garmin's Christmas! - AppSphere16
How AppDynamics Saved Garmin's Christmas! - AppSphere16
 
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
How CapitalOne Transformed DevTest or Continuous Delivery - AppSphere16
 
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
Accelerating Your Mastery of APM Through Skills Self-Analysis - AppSphere16
 

Similar a AppDynamics Custom Transaction Correlation

DevOps_ Monitoring Mule Application via Dynatrace.pdf
DevOps_ Monitoring Mule Application via Dynatrace.pdfDevOps_ Monitoring Mule Application via Dynatrace.pdf
DevOps_ Monitoring Mule Application via Dynatrace.pdf
amitbind11
 

Similar a AppDynamics Custom Transaction Correlation (20)

Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
Improved Interaction with Mobile User Interaction: Tips and Tricks - AppSphere16
 
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
 
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit EuropeCisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
Cisco and AppDynamics: Redefining Application Intelligence - AppD Summit Europe
 
Business iQ: What It Is and How to Start - AppD Summit Europe
Business iQ: What It Is and How to Start - AppD Summit EuropeBusiness iQ: What It Is and How to Start - AppD Summit Europe
Business iQ: What It Is and How to Start - AppD Summit Europe
 
API Program Lessons learned
API Program Lessons learnedAPI Program Lessons learned
API Program Lessons learned
 
IoT in the Enterprise
IoT in the EnterpriseIoT in the Enterprise
IoT in the Enterprise
 
IoT in the Enterprise: Why Your Monitoring Strategy Should Include Connected ...
IoT in the Enterprise: Why Your Monitoring Strategy Should Include Connected ...IoT in the Enterprise: Why Your Monitoring Strategy Should Include Connected ...
IoT in the Enterprise: Why Your Monitoring Strategy Should Include Connected ...
 
Evolve 2014 experience driven commerce
Evolve 2014 experience driven commerceEvolve 2014 experience driven commerce
Evolve 2014 experience driven commerce
 
Cloud-Native Insights: How Platform & App Visibility Drive Business Outcomes
Cloud-Native Insights: How Platform & App Visibility Drive Business OutcomesCloud-Native Insights: How Platform & App Visibility Drive Business Outcomes
Cloud-Native Insights: How Platform & App Visibility Drive Business Outcomes
 
What is API Product Management by PayPal Director of Product
What is API Product Management by PayPal Director of ProductWhat is API Product Management by PayPal Director of Product
What is API Product Management by PayPal Director of Product
 
How To Fix The Most Critical API Security Risks.pdf
How To Fix The Most Critical API Security Risks.pdfHow To Fix The Most Critical API Security Risks.pdf
How To Fix The Most Critical API Security Risks.pdf
 
Hands-On Lab: Mobile Integration
Hands-On Lab: Mobile IntegrationHands-On Lab: Mobile Integration
Hands-On Lab: Mobile Integration
 
Indonesian e-Commerce requires Scalability, Reliability and Security to Achi...
Indonesian e-Commerce requires Scalability,  Reliability and Security to Achi...Indonesian e-Commerce requires Scalability,  Reliability and Security to Achi...
Indonesian e-Commerce requires Scalability, Reliability and Security to Achi...
 
WSO2- OSC Korea - Accelerating Digital Businesses with APIs
WSO2- OSC Korea - Accelerating Digital Businesses with APIsWSO2- OSC Korea - Accelerating Digital Businesses with APIs
WSO2- OSC Korea - Accelerating Digital Businesses with APIs
 
DevOps_ Monitoring Mule Application via Dynatrace.pdf
DevOps_ Monitoring Mule Application via Dynatrace.pdfDevOps_ Monitoring Mule Application via Dynatrace.pdf
DevOps_ Monitoring Mule Application via Dynatrace.pdf
 
API Security Best Practices and Guidelines
API Security Best Practices and GuidelinesAPI Security Best Practices and Guidelines
API Security Best Practices and Guidelines
 
[WSO2 Integration Summit Bern 2019] API-led Integration
[WSO2 Integration Summit Bern 2019] API-led Integration[WSO2 Integration Summit Bern 2019] API-led Integration
[WSO2 Integration Summit Bern 2019] API-led Integration
 
MuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
MuleSoft Surat Meetup#39 - Pragmatic API Led ConnectivityMuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
MuleSoft Surat Meetup#39 - Pragmatic API Led Connectivity
 
apidays Australia 2023 - APIs Aren't Enough: Why SaaS Leaders Are Investing I...
apidays Australia 2023 - APIs Aren't Enough: Why SaaS Leaders Are Investing I...apidays Australia 2023 - APIs Aren't Enough: Why SaaS Leaders Are Investing I...
apidays Australia 2023 - APIs Aren't Enough: Why SaaS Leaders Are Investing I...
 
Mastering APM With End User Monitoring - AppD Summit Europe
Mastering APM With End User Monitoring - AppD Summit EuropeMastering APM With End User Monitoring - AppD Summit Europe
Mastering APM With End User Monitoring - AppD Summit Europe
 

Más de AppDynamics

Más de AppDynamics (17)

Good Migrations: APM Essentials For Cloud Success at AppD Global Tour London
Good Migrations: APM Essentials For Cloud Success at AppD Global Tour LondonGood Migrations: APM Essentials For Cloud Success at AppD Global Tour London
Good Migrations: APM Essentials For Cloud Success at AppD Global Tour London
 
Top Tips For AppD Adoption Success at AppD Global Tour London
Top Tips For AppD Adoption Success at AppD Global Tour LondonTop Tips For AppD Adoption Success at AppD Global Tour London
Top Tips For AppD Adoption Success at AppD Global Tour London
 
How To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour LondonHow To Create An AppD Centre of Excellence at AppD Global Tour London
How To Create An AppD Centre of Excellence at AppD Global Tour London
 
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
Ensure Every Customer Matters With End User Monitoring at AppD Global Tour Lo...
 
Just Eat: DevOps at Scale at AppD Global Tour London
Just Eat: DevOps at Scale at AppD Global Tour LondonJust Eat: DevOps at Scale at AppD Global Tour London
Just Eat: DevOps at Scale at AppD Global Tour London
 
What’s Next For AppDynamics and Cisco? AppD Global Tour London
What’s Next For AppDynamics and Cisco? AppD Global Tour LondonWhat’s Next For AppDynamics and Cisco? AppD Global Tour London
What’s Next For AppDynamics and Cisco? AppD Global Tour London
 
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
Unlock The Power Of Real-Time Performance Data With Business iQ - AppD Global...
 
Overcoming Transformational Barriers with Ensono - AppD Global Tour London
Overcoming Transformational Barriers with Ensono - AppD Global Tour LondonOvercoming Transformational Barriers with Ensono - AppD Global Tour London
Overcoming Transformational Barriers with Ensono - AppD Global Tour London
 
Equinor: What does normal look like?
Equinor: What does normal look like? Equinor: What does normal look like?
Equinor: What does normal look like?
 
Top Tips For AppD Adoption Success - AppD Global Tour Stockholm
Top Tips For AppD Adoption Success - AppD Global Tour StockholmTop Tips For AppD Adoption Success - AppD Global Tour Stockholm
Top Tips For AppD Adoption Success - AppD Global Tour Stockholm
 
What's next for AppD and Cisco? - AppD Global Tour
What's next for AppD and Cisco? - AppD Global TourWhat's next for AppD and Cisco? - AppD Global Tour
What's next for AppD and Cisco? - AppD Global Tour
 
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
British Medical Journal: Refine Your Metrics For Digital Success - AppD Summi...
 
Forrester Research: How To Organise Your Business For Digital Success - AppD ...
Forrester Research: How To Organise Your Business For Digital Success - AppD ...Forrester Research: How To Organise Your Business For Digital Success - AppD ...
Forrester Research: How To Organise Your Business For Digital Success - AppD ...
 
Become an AppDynamics Dashboard Rockstar - AppD Summit Europe
Become an AppDynamics Dashboard Rockstar - AppD Summit EuropeBecome an AppDynamics Dashboard Rockstar - AppD Summit Europe
Become an AppDynamics Dashboard Rockstar - AppD Summit Europe
 
Containers: Give Me The Facts, Not The Hype - AppD Summit Europe
Containers: Give Me The Facts, Not The Hype - AppD Summit EuropeContainers: Give Me The Facts, Not The Hype - AppD Summit Europe
Containers: Give Me The Facts, Not The Hype - AppD Summit Europe
 
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAutomation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
 
Standard Bank: How APM Supports DevOps, Agile and Engineering Transformation ...
Standard Bank: How APM Supports DevOps, Agile and Engineering Transformation ...Standard Bank: How APM Supports DevOps, Agile and Engineering Transformation ...
Standard Bank: How APM Supports DevOps, Agile and Engineering Transformation ...
 

Último

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Último (20)

Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

AppDynamics Custom Transaction Correlation

  • 2. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 2 Notice The information and materials included in this presentation (collectively, the “Materials”) are the confidential and proprietary information of AppDynamics, Inc. (the “Company”). No part of the Materials may be reproduced, distributed, communicated or displayed in any form or by any means, or used to make any derivative work, without prior written permission from the Company. © 2016 AppDynamics, Inc. All rights reserved. All third party trademarks, including names, logos and brands, referenced by the Company in this presentation are property of their respective owners. All references to third party trademarks are for identification purposes only and shall be considered nominative fair use under trademark law.
  • 3. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 3 Objectives Course Labs Understand AppDynamics Transaction Correlation Facilitate discovery of missing components in flow maps Determining Entry and Exit Points Configuring AppDynamics for custom correlation Review Transactions and Flow Maps Finding Entry Points Research relationship between Entry & Exit Points Configure Custom Correlation
  • 4. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 4 Topic 1 What Is AppDynamics Transaction Correlation? A.Transaction Correlation Basics B. Exit Point Issues C.Entry Point Issues Topic 2 What Is AppDynamics Custom Correlation? A. Custom Correlation Basics B. Exit Point Configuration C.Entry Point Configuration AppDynamics Custom Transaction Correlation Agenda
  • 5. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 5 • Detected transactions rely on AppServer Agent decorating requests with GUID • GUID = Global Unique Identifier • Same GUID assigned by Agenton each tier involved in the requestchain • GUIDs posted to Controller,which reconciles GUID-labelled events • Controller derives Business Transaction flow map from comparing individual requestchains Transaction Correlation Basics • Correlation relies on ability ofAgents to decorate and read GUIDs • Automatic correlation breaks down ifGUID cannotbe set, or cannotbe read What works and doesn’t work
  • 6. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 6 Transaction Correlation Basics AppServer Agent Behavior
  • 7. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 7 At the pointin code where call out to other componenthappens, Appserver Agenttries to decorate the outbound requestwith the GUID. This is during what’s called the Exit Point – adding the GUID relies on Agent being aware ofthe code as an Exit Point. On any monitored component,the ability to read the GUID embedded in a requestrelies on Agentability to understand the technology. Entry Point is AppDynamics term for a pointin the code which processes an incoming requestthatthe Agentsuccessfully notices. Setting & Reading The GUID
  • 8. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 8 AppDynamics Custom Transaction Correlation Topic 1 What Is AppDynamics Transaction Correlation? A. Transaction Correlation Basics B.Exit Point Issues C.Entry Point Issues Topic 2 What Is AppDynamics Custom Correlation? A. Custom Correlation Basics B. Exit Point Configuration C.Entry Point Configuration Agenda
  • 9. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 9 Exit Point Issues Tiers missing from Flow Maps Inability to successfully detect an Exit Point means GUID is not set. From AppDynamics perspective, the Business Transaction does not continue any further! Looking at the flow map, this may be why Tiers appear to be missing!
  • 10. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 10 AppDynamics Custom Transaction Correlation Topic 1 What Is AppDynamics Transaction Correlation? A. Transaction Correlation Basics B. Exit Point Issues C.Entry Point Issues Topic 2 What Is AppDynamics Custom Correlation? A. Custom Correlation Basics B. Exit Point Configuration C.Entry Point Configuration Agenda
  • 11. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 11 Entry Point Issues Tier appears as Back End Inability to successfully detect an Entry Point will mean GUID is not read The Business Transaction will notinclude this Tier in its flow map (though may show up in the flow map as a Back End)
  • 12. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 12 Is Custom Correlation Necessary? Various factors can also prevent correlation The absence of the expected Tier on a Transaction Flow Map could be due to an Agentissue Rule outAgent as the cause of the issue by checking: • Agent installed and configured correctly? • Agent up and running? • Does the Tier show up in the Flow Map of other Transactions?
  • 13. Lab 1 APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 13 Review Movieztream & Login.htm Transaction URL <<your IP address>>/controller Username admin Password admin Scenario While AppDynamics managed to detectthe /movieztream_ui/login.htm transaction withoutany difficulty, it appears not to be aware that when users log in to Movieztream there is a call made to the ProfileStore Tier, as this is not showing on the flow map. This exercise is designed to familiarize the student with the application,flow maps and transactions.
  • 14. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 14 How BTs Are Tracked AppDynamics successfully automatically correlates transactions where various technologies are employed
  • 15. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 15 Correlation In HTTP Adding Custom Headers to carry transaction information is safe if •You don’tuse any well-understood header names like ‘Accept-Language’ •The content of the header value is ‘HTTP-safe’ Method | URL | Version Request Line Header Field-Name Header Value Header Field-Name Header Value Headers •Extensible by definition •Does not Contain Application Data Body Request Body
  • 16. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 16 Correlation In HTTP AppDynamics Byte Code Interceptor on The HTTP transport layer – adds a safe header which uniquely identifies this transaction.The controller reconstructs the flow. AppDynamics Byte Code Interceptor on the servlet– reads the header with the information.
  • 17. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 17 Correlation In JMS Adding Custom Message Properties to carry transaction information is safe if •You don’toverwrite any existing property names and choose a unique name •The content of the property value is valid content JMSPriority… Property Name Property Value Property Name Property Value Message Properties •Extensible by definition Body Message Body JMSDestination Headers •Not Extensible •Predefined
  • 18. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 18 Correlation In JMS AppDynamics Byte Code Interceptor on The JMS Message sender – adds a safe header which uniquely identifies this transaction. AppDynamics Byte Code Interceptor on the Message Receiver– reads the header with the information.
  • 19. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 19 AppDynamics Custom Transaction Correlation Topic 1 What Is AppDynamics Transaction Correlation? A. Transaction Correlation Basics B. Exit Point Issues C.Entry Point Issues Topic 2 What Is AppDynamics Custom Correlation? A.Custom Correlation Basics B. Exit Point Configuration C.Entry Point Configuration Agenda
  • 20. Exploring Untracked Functionality APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 20 1 ConfiguringAppDynamics to reveal unmonitored running code 1. How do we ‘see’ what we can’t ‘see’? 2. Appdynamics Agents can reveal method calls being executed which are outside of any tracked Business Transactions 3. This provides us with potential Entry Points Activated by setting a specific Agent’s find- entry-points property to true 2 3
  • 21. Find Entry Points Output APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 21 Where to view unmonitored running code that AppDynamics has detected Activity is recorded in BusinessTransactions log file Retrieve either through Controller or from logs directory on server As the property adds a small overhead to Agent performance, recommended to disable once done with investigations [main] 07 Nov 2016 17:10:51,565 INFO - ############################################################ [main] 07 Nov 2016 17:10:51,565 INFO - Logging request stack for Thread main >>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java [main] 07 Nov 2016 17:10:51,565 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Pro com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread <init> 
[main] 07 Nov 2016 17:10:51,565 INFO -END request stack for Thread main
[main] 07 Nov 2016 17:10:51, [main] 07 Nov 2016 17:10:53,837 INFO - ############################################################ >>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java [main] 07 Nov 2016 17:10:53,837 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Pro [main] 07 Nov 2016 17:10:53,837 INFO - 1. POJO com.ecetera.appdynamics.movieztream.service.util.Pro [main] 07 Nov 2016 17:10:53,837 INFO - ############################################################ #################################################################
 [main] 07 Nov 2016 17:10:54,102 INFO - Logging request stack for Thread main >>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java ain] 07 Nov 2016 17:10:54,102 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Profi [main] 07 Nov 2016 17:10:54,103 INFO - 1. POJO com.ecetera.appdynamics.movieztream.service.util.Pro main
[main] 07 Nov 2016 17:10:54,103 INFO - ######################################################## #################################################################
 [main] 07 Nov 2016 17:10:55,449 INFO - Logging request stack for Thread main >>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread.<init>(ProfileReceiver.java [main] 07 Nov 2016 17:10:55,449 INFO - 0. POJO com.ecetera.appdynamics.movieztream.service.util.Pro [main] 07 Nov 2016 17:10:55,449 INFO - 1. POJO com.ecetera.appdynamics.movieztream.service.util.Pro
  • 22. Lab 2 APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 22 Finding Entry Points Scenario While AppDynamics managed to detectthe /movieztream_ui/login.htm transaction without any difficulty, it appears notto be aware that when users log in to Movieztream there is a call made to the ProfileStore Tier, as this is not showing on the flow map. This exercise is designed to configure AppDynamics to discover potential missing flow map components.
  • 23. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 23 Custom Correlation Custom Correlation is Agent level configuration Achieved by adding specific definitions to the file custom- activity-correlation.xml under Agentconf directory No source code changes, totally non-invasive approach Mistakes in the XML will result in correlation failure or simply unexpected results in transaction Flow Map – check agentlog file for details <activities> <producer> <!-- This instrumentation element defines a custom exit point. --> <instrumentation> <class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name> <method-name>sendProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- This identifier element specifies how to name the custom exit point. This is similar to how we name custom exit points from the UI --> <identifiers> <identifier name="ProfileFinder"> <data-gatherer-type>INVOKED</data-gatherer-type> <getter-chain>this</getter-chain> <user-defined-name>ProfileFinder</user-defined-name> <transformer-type>USER_DEFINED_NAME</transformer-type> </identifier> </identifiers> <!-- The following correlation element specifies where and how to add the correlation metadata --> <correlation> <!-- This instrumentation element specifies how to get hold of the outgoing payload --> <instrumentation> <class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name> <method-name>sendProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- This payload-pointer specifies where to grab the payload at the instrumentation point defined above --> <payload-pointer> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- This payload-operation defines how to add the correlation metadata to the payload --> <payload-operation> <access-type>method</access-type> <access-method>put</access-method> <param-types>java.lang.Object, java.lang.Object</param-types> </payload-operation> </correlation> </producer> <consumer identify-transaction="true"> <!-- This is where the correlation metadata is read and continuing transaction is begun --> <instrumentation> <class-name>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread</class-name> <method-name>receiveProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <correlation> <!-- This is how we get the payload bearing our correlation metadata --> <payload-pointer> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- This is how we extract correlation metadata from the payload --> <payload-operation> <access-type>method</access-type> <access-method>put</access-method> <param-types>java.lang.Object</param-types> </payload-operation> </correlation> </consumer> </activities>
  • 24. Topology of the XML Root elementis <activities> multiple <producer> and <consumer> elements are allowed <producer> is the Exit Point <consumer> is the Entry Point <correlation> defines where to get the GUID and how APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 24 <activities> <producer> <correlation> ....... </correlation> </producer> <consumer> <correlation> ....... </correlation> </consumer> </activities>
  • 25. What Custom Correlation Requires Exit Point detail Classpath,method Exit Point payload details The code is sending request to other component.Can we append the GUID somehow? Entry Point details Classpath,method Entry Point payload details The code is accepting the request. Can we extract the GUID from it? APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 25 Investigating details for Exit and Entry Points <activities> <producer> <!-- This instrumentation element defines a custom exit point. --> <instrumentation> <class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name> <method-name>sendProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- This identifier element specifies how to name the custom exit point. This is similar to how we name custom exit points from the UI --> <identifiers> <identifier name="ProfileFinder"> <data-gatherer-type>INVOKED</data-gatherer-type> <getter-chain>this</getter-chain> <user-defined-name>ProfileFinder</user-defined-name> <transformer-type>USER_DEFINED_NAME</transformer-type> </identifier> </identifiers> <!-- The following correlation element specifies where and how to add the correlation metadata --> <correlation> <!-- This instrumentation element specifies how to get hold of the outgoing payload --> <instrumentation> <class-name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name> <method-name>sendProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- This payload-pointer specifies where to grab the payload at the instrumentation point defined above --> <payload-pointer> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- This payload-operation defines how to add the correlation metadata to the payload --> <payload-operation> <access-type>method</access-type> <access-method>put</access-method> <param-types>java.lang.Object, java.lang.Object</param-types> </payload-operation> </correlation> </producer> <consumer identify-transaction="true"> <!-- This is where the correlation metadata is read and continuing transaction is begun --> <instrumentation> <class-name>com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread</class-name> <method-name>receiveProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <correlation> <!-- This is how we get the payload bearing our correlation metadata --> <payload-pointer> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- This is how we extract correlation metadata from the payload --> <payload-operation> <access-type>method</access-type> <access-method>put</access-method> <param-types>java.lang.Object</param-types> </payload-operation> </correlation> </consumer> </activities>
  • 26. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 26 1 What Custom Correlation Requires Assembling the Details A. At this stage you should try to check the source code. B. Although in many cases it will be possible to identify Exit and Entry Points, the payload may not be so easy, e.g. C. Payload on Exit Point cannot be modified (technical limitation) D. Payload on Exit Point cannot be modified due to security reasons E. Payload on Entry Point cannot be read (not in scope) F. Payload on Entry Point cannot be read (technical limitation) G. Without ability to set and get the payload, Custom Correlation will not work! A B C D
  • 27. Lab 3 APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 27 Research Entry and Exit Point Details Scenario Reviewing source code is frequently the best option if you want to understand whatthe functionality is actually doing,in the event that transaction correlation does not seem to be working automatically. This exercise is designed to show how and where to review code for configuring custom correlation entry and exit points.
  • 28. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 2 8 Sample Exit Points Is this acceptable Exit Point code?
  • 29. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 29 Sample Exit Points Is this acceptable Exit Point code?
  • 30. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 30 <activities> <producer> <consumer> <identifiers> <correlation> <validator-config> <naming-config> <excludes>, <includes> Defining Custom Correlation XML Key XML Tags overview
  • 31. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 31 Attributes available to support various scenarios, e.g. • Prioritization of multiple Producers that potentially detect same Exit Point • If resolution to a Tier is NOT desired for the defined Exit Point • Ability to instrument multiple payloads based on there being a split at the Exit Point • Ability to instrument threaded activities and asynchronous queues Must define code we want to instrument based on knowing at least one of the following • Class name, interface, superclass, class annotation Must define method name, and parameters of method signature if method is overloaded Producer Instrumentation <activities> <producer> <!--This instrumentation element defines a custom exit point.--> <instrumentation> <class-name> com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder </class-name> <method-name>sendProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> </producer> </activities>
  • 32. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 32 Specify identification and registration of Custom Exit Point Naming can be user-defined literal,or derived based on current object,method return object, or method parameter Producer Identifiers <activities> <producer> <!-- This identifier element specifies how to name the custom exit point. This is similar to how we name custom exit points from the UI --> <identifiers> <identifier name="ProfileFinder"> <data-gatherer-type>INVOKED</data-gatherer-type> <getter-chain>this</getter-chain> <user-defined-name>ProfileFinder</user-defined-name> <transformer-type>USER_DEFINED_NAME</transformer-type> </identifier> </identifiers> </producer> </activities>
  • 33. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 33 May be necessary to add GUID to single payload objector all objects in a collection (in split exit scenario) Can have GUID applied at a differentmethod from that of the Exit Point Specify <payload-pointer> to indicate precise payload object we wantto decorate with GUID Specify <payload-operation> to declare how to decorate the payload objectwith GUID Producer Correlation <activities> <producer> <!-- The following correlation element specifies where and how to add the correlation metadata --> <correlation> <!-- This instrumentation element specifies how to get hold of the outgoing payload --> <instrumentation> <class- name>com.ecetera.appdynamics.movieztream.ui.reporting.ProfileFinder</class-name> <method-name>sendProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> <!-- This payload-pointer specifies where to grab the payload at the instrumentation point defined above --> <payload-pointer> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- This payload-operation defines how to add the correlation metadata to the payload --> <payload-operation> <access-type>method</access-type> <access-method>put</access-method> <param-types>java.lang.Object, java.lang.Object</param-types> </payload-operation> </correlation> </producer> </activities>
  • 34. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 34 Consumer has attributes to control scenarios as follows • Transaction should be instrumentedon basis of the first iteration of a loop in the code, terminating whencode hits next iteration • Identifiers permit the specification of more than 1 Custom Exit Point based on a single particular method of a class • Demarcation of activity to differentiate between identification of Entry Point and separate block of codelater on where correlation occurs Must define code we want to instrument based on knowing at least one of the following • Class name, interface, superclass, class annotation Must define method name, and parameters of method signature if method is overloaded Consumer Instrumentation <activities> <consumer identify-transaction="true"> <!-- This is where the correlation metadata is read and continuing transaction is begun --> <instrumentation> <class-name> com.ecetera.appdynamics.movieztream.service.util.ProfileServiceThread</c lass-name> <method-name>receiveProfile</method-name> <match-type>MATCHES_CLASS</match-type> </instrumentation> </consumer> </activities>
  • 35. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 35 Can read GUID from a downstream method different from what specified at Consumer Instrumentation level Specify <payload-pointer> to indicate precise payload object we wantto read GUID from Specify <payload-operation> to declare how to read the GUID from the payload object Consumer Correlation <activities> <consumer identify-transaction="true"> <correlation> <!-- This is how we get the payload bearing our correlation metadata --> <payload-pointer> <data-gatherer-type>POSITION</data-gatherer-type> <position>0</position> <getter-chain>this</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </payload-pointer> <!-- This is how we extract correlation metadata from the payload --> <payload-operation> <access-type>method</access-type> <access-method>put</access-method> <param-types>java.lang.Object</param-types> </payload-operation> </correlation> </consumer> </activities>
  • 36. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 36 The Naming Config Applicable when correlating asynchronous activities,e.g. Thread/Callable/Runnable or Queue-based Provides a means to define re-usable instrumentation identification criteria <activities> <!-- naming rules config --> <naming-config> <naming-rule> <data-gatherer-config> <name>FQCN</name> <data-gatherer-type>INVOKED</data-gatherer-type> <getter-chain>getClass, getName</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </data-gatherer-config> </naming-rule> </naming-config> </activities>
  • 37. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 37 The Validator Config Ability to filter correlation based on checking for data values Applicable on Producer or Consumer Allows you to perform custom correlation ONLY when specific value present, e.g. Customer Type == GOLD <activities> <validator-config> <validator match type="STARTSWITH|ENDSWITH|CONTAINS|EQUALS|REGEX|INLIST|NOTEMPTY” class-match type="INHERITS_FROM_CLASS|IMPLEMENTS_INTERFACE|MATCHES_CLASS|HAS_CLASS_ANNOTATI ON" match-pattern=""> <data-match-config> <data-gatherer-type> <!-- INVOKED|RETURN|POSITION --> </data-gatherer-type> <position> <!--POSITION NUMBER. Only used in case POSITION data-gatherer-type is chosen--> </position> <getter-chain> <!-- comma separated list of method names EX: getClass, getName --> </getter-chain> <transformer-type> <!-- TO_STRING|SIMPLE_CLASS_NAME|FIELD_NAME|USER_DEFINED_NAME|GETTER_METHODS - -> </transformer-type> </data-match-config> </validator> </validator-config> </activities>
  • 38. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 38 When instrumentation configuration setup to match multiple possible classes (e.g. interface/superclass/annotation based matching),you can specifically exclude groups or individual classes from being matched. Include back in any sub-groups or specific classes which have been lost through the exclude rules. Defines naming rules for Consumer instrumentation points to aid in distinguishing individual processes. Excludes & Includes <activities> <!-- naming rules config --> <naming-config> <naming-rule> <data-gatherer-config> <name>FQCN</name> <data-gatherer-type>INVOKED</data-gatherer-type> <getter-chain>getClass, getName</getter-chain> <transformer-type>GETTER_METHODS</transformer-type> </data-gatherer-config> </naming-rule> </naming-config> <excludes filter-type="STARTSWITH" filter value="java/,javax/,com.sun/,sun/,org/"/> <!-- exclude weblogic and websphere --> <excludes filter-type="STARTSWITH" filter- value="com.bea/,com.weblogic/,weblogic/,com.ibm/"/> <!-- thread config -->
  • 39. Lab 4 APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 39 Configure Custom Correlation XML Scenario Having now researched suitable Exitand Entry Points, and identified whatwe think can work as the payload that can carry the GUID, it is now time to configure the Custom Activity Correlation XML.
  • 40. APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 40 We have outlined the principles oftransaction correlation and how AppDynamics mostly succeeds in correlating automatically. This course has explored why correlation does not always work and how it may appear in the Flow Map. You have explored how to research and set up Custom Activity Correlation for yourself. Summary
  • 41. University Appdynamics.com/university Community community.appdynamics.com Tech Webinars Additional Learning Opportunity APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 41 What are the Resources? Fan Club
  • 42. University APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 42 Multiple Track Courses and Certifications @ appdynamics.com/university Sign Up for Multiple Tracks and Course Dates for Live Training Sessions Watch quick task-based tutorials Take Self-Paced courses to learn at your own pace Access subscriber only contents
  • 43. Community APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 43 Connect With Other Users And Experts @ community.appdynamics.com Exchange information with other Power Users and AppDynamics experts Get AppDynamics-supported and author-supported extensions
  • 44. Tech Webinars APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 44 Attend for free Every other Wednesday at10:00am PT 45 Min presentation followed by a Q&A session View the Tech Webinars Schedule to register for upcoming webinars and watch pastpresentations.
  • 45. Join The FanClub APPDYNAMICS CONFIDENTIAL AND PROPRIETARY 45 We love our customers and partners. Let us thank you for your ongoing support. See new features and roadmaps Try new products and beta programs Access custom extensions and training MeetAppDynamics Executives Get premium swag and invitations to events Sign up and claim your benefits by clicking here to submit the request!
  • 46. Thank You Please fill out the survey: https://www.surveymonkey.com/r/AppDynamicsUniversity Your feedback is very important to us. We use it to help us improve our content and incorporate new features to keep our courses relevantfor our audience. Fred Paine fred.paine@appdynamics.com