Extrahop and Appdynamics Deployment Guide: © 2015 Extrahop Networks, Inc. All Rights Reserved
Extrahop and Appdynamics Deployment Guide: © 2015 Extrahop Networks, Inc. All Rights Reserved
Deployment Guide
This guide describes how to use ExtraHop and AppDynamics to provide real-time,
per-user transaction tracing across the entire application delivery chain. ExtraHop
provides wire data analytics for IT and business operational intelligence, and
AppDynamics is the leader in agent data analytics. By integrating the two technology
data sets, enterprises can view wire data and agent data together, maintaining
consistent per-user transaction information.
This solution uses the ExtraHop Open Data Stream (ODS) capability to send real-
time events and metrics to the AppDynamics REST API. While this guide focuses on
real-time, per-user transaction tracing, there are many other ways to combine wire
data and agent analytics not covered in this guide.
Contents
Software Prerequisites .......................................................................... 2
Network Prerequisites ........................................................................... 2
Overview ............................................................................................ 3
Detailed Instructions ............................................................................ 4
1) Configure the End User Experience (EUM) headers with the
AppDynamics system ........................................................................ 4
2) Explore and define the topology where the application lives ................ 5
3) Implement the topology and implement the ExtraHop trigger .............. 6
4) Edit the ExtraHop trigger to configure the specific metrics to send to
AppDynamics ................................................................................... 7
5) Configure ExtraHop ODS for HTTP output ......................................... 8
6) Implement and configure the AppDynamics Machine Agent ................. 9
7) Explore the AppDynamics Event Viewer............................................ 9
8) Explore and set up the AppDynamics Metric Browser ......................... 9
Validating Your Installation .................................................................. 10
Conclusion ........................................................................................ 10
Next Steps ........................................................................................ 10
FAQ ................................................................................................. 11
1) Where do I run the AppDynamics Machine Agent? ........................... 11
2) What if I cannot use the AppDynamics End User Experience header
system? ......................................................................................... 11
AppDynamics:
• A machine agent to receive HTTP REST input
• An End User Experience license for the AppDynamics EUE system to insert
and instrument the ADRUM_BT cookie
• An installed App Dynamics Machine Agent to receive HTTP messages and
forward them to the AppDynamics Controller
• AppDynamics version 3.9 or later
Network Prerequisites
ExtraHop:
• Routing and firewall rules to allow ExtraHop devices to connect to the
AppDynamics Machine Agent HTTP listener. In our example, this is TCP
port 8293 connectivity (and is configurable on both ExtraHop and
AppDynamics to be any unique, available TCP port (not UDP)).
• A topology that can be defined through the use of some uniquely
identifiable characteristic. In order for ExtraHop to uniquely trace network
segments, the ExtraHop Application Inspection (AI) triggers must be able
to identify these segments. In our example, we define a firewall segment
by VLAN, with VLAN 1129 being the Internet side of the connections,
VLAN 1321 and 1421 being either side of the firewall, and VLAN 1121
being either side of the load balancer. These “hops” are customizable to
each environment.
This solution uses ExtraHop triggers, user-defined JavaScript code that you can write
to extract custom metrics. In this case, triggers deliver the metrics that agents
cannot—the “opaque network” of connectivity systems such as proxies, firewalls,
routers and load balancers. Such metrics include timing deltas between hops and
network anomalies. Once the metrics are extracted, they are sent to the REST
interface of the AppDynamics Machine Agent. The Machine Agent then delivers the
information to the AppDynamics Controller.
Using the examples in this guide, you will be capturing user traffic for one complete
application environment. If you have multiple application environments, you will set
up additional triggers, agents, and proxies for each additional environment.
For ExtraHop documentation, click the Help icon in the ExtraHop Web UI.
1) Configure the End User Experience (EUM) headers with the AppDynamics
system
This step assumes that the application being instrumented has already has the
AppDynamics application agent installed and operational. After the application agent
is installed, JavaScript and cookie injection can be done automatically using the steps
highlighted here.
Refer to the AppDynamics configuration guide for the complete information on this
configuration. The end result should be the presence of ADRUM_BT cookies within
the application stream. In general:
A) Navigate to the application you would like to instrument in the AppDynamics User
Interface.
B) Click the Configure menu item.
C) Click the Instrumentation menu item.
D) Select End User Experience from the top navigation.
E) Check the Enable End User Experience Monitoring checkbox and save the
changes.
Note: These instructions are a summary and apply to this specific version of
AppDynamics. There are also multiple ways, both manually and automatically, to
configure EUE. Refer to AppDynamics documentation for details.
The core function of the ExtraHop trigger is to record timing differences as the EUE
cookie traverses each tier. Additionally, the trigger sends network metrics to
AppDynamics. In order to accurately represent the traffic flow, we will begin by
defining the “hops”.
In our deployment, we are defining the topology using VLANs. It’s also possible to
define the topology via IP addresses or other uniquely identifiable aspects of each
segment of the devices where traffic traverses.
The diagram above shows the traffic traversing a firewall, a proxy, a router, and a
load balancer. If the firewall VLAN is 1000, the internal side of the first proxy is VLAN
1001, and the internal side of the load balancer is VLAN 1002, then the topology
definition is as follows:
VLAN1000 :Hop1
VLAN1001: Hop2
VLAN1002: Hop3
In the trigger snippet above, you can see that we have five hops defined: VLANs
1129, 1124, 1122, 1121, and 1123. These VLANs are defined as hops zero through
four, and they have human-readable names: internet, firewall-dmz, firewall-app,
load balancer and proxy.
In the next section, you will update the trigger with the information you gathered in
this step.
To configure the trigger, we will first classify the events. For this trigger, we are
interested in HTTP_REQUEST and FLOW_TICK. Second, we will define the topology
within the trigger code that we defined in step 2 above. Finally, we will assign
devices to this trigger, specifically, all of the devices in the traffic path we want to
capture.
A) Create or import the trigger and give it an appropriate name. In this example,
the name is Cookie Analysis. Included in the bundles section of the ExtraHop
documentation site (docs.extrahop.com) you will find the AppDynamics
Cookie Analysis bundle. You may simply import this bundle which will install
the trigger on your ExtraHop device.
B) Add the FLOW_TICK and HTTP_REQUEST events to the trigger.
C) Paste or edit the trigger code in the ExtraHop Trigger Editor. Edit the “Map
VLANs to hops” section with the information you gathered above, inserting
the VLAN numbers, numbering them from 0 to n, and giving each a human-
readable name. Note that the name will be the name of the metric sent to
AppDynamics.
D) Save and close the trigger.
E) Navigate to the Devices section of the ExtraHop Web UI, and search for the
devices associated with the VLANS and servers you will be tracking. Select
the checkbox next to each device and then click the Select Action drop-
Note: Pay particular attention to step C above. Now that you have activated the
trigger, within the trigger code, ensure that you have adjusted the section “map
VLANs to hops” to match your environment, changing the VLAN numbers, adding or
removing hops numbers, and updating the comments about which hop you are
tracking.
The user-configurable settings for the ODS for HTTP begin on or around line 66 with
the string: /* Start of user-configurable settings to send to AppDynamics
/*. Move your cursor to this line and edit the following variables:
Save your changes and repeat the same changes for the FLOW function, beginning
on or around line 165 with the string: /* Start of user configurable settings
to send to AppDynamics /*.
A) In the ExtraHop Web UI, click Settings in the navigation bar and then select
Administration.
B) Log in with the proper credentials.
C) In the Configuration, section, click Open Data Streams.
D) Click HTTP.
E) On the Open Data Stream for HTTP, click Add New in the lower-left corner.
F) Configure the following settings:
• Name: If this is the first ODS HTTP destination, this will be the default
connection. Otherwise, choose a name that will be used in your trigger. In
our example, we use the first and default connection.
• Type: We choose HTTP.
• Host: Enter the IP Address of the host where the Machine Agent is
installed. In our example we enter: 10.10.9.116
• Port: Enter the port of the AppDynamics Machine Agent. The default is
8293.
Note: Make sure your ExtraHop management interface has the ability to
reach this port, including any intermediary firewalls, routers, and host
ACLs.
• For the remaining options, use the defaults.
You may also click Test Settings if you have already set up the AppDynamics
Machine Agent. If you have not, return to this screen and run this at a later time.
The result of the test should be HTTP 200 OK.
AGENT_OPTIONS="$AGENT_OPTIONS -Dmetric.http.listener=true"
AGENT_OPTIONS="$AGENT_OPTIONS -Dmetric.http.listener.port=8293"
C) Edit the controller-info.xml file to associate this Machine Agent with the
application that will be receiving the metrics from ExtraHop. These are values
for our implementation:
a. controller-host: appdynamics.seadmz.example.com
b. controller-port: 8090
c. application-name: MySampleApp
d. tier-name: WebTier
e. node-name: Node1
D) Save and quit the configuration of the controller-info.xml file.
E) Start the Machine Agent and confirm that it is listening on the specific port, in
this case, TCP 8293.
1. Click Test Connectivity in the ExtaHop Open Data Stream (ODS) for HTTP
window of the ExtraHop Admin UI while the AppDynamics Machine Agent is
running. You should see an HTTP 200 OK message in the ExtraHop test response
screen. It will look like this:
2. Log in to AppDynamics and ensure that metrics and events are being transmitted
from the Machine Agent to AppDynamics. Refer to AppDynamics documentation for
more information about validating the Machine Agent.
Conclusion
The end-to-end analysis capabilities of ExtraHop and AppDynamics provide a
lightweight solution to deploy and utilize, but it does have multiple moving parts. By
combining the full view of both ExtraHop and AppDynamics data, developers,
engineers and operators can see real-time correlated wire and agent data with
visualizations provided by both vendors.
Next Steps
You have now instrumented one application environment with the combination of
ExtraHop and AppDynamics.
The next steps for this deployment could take you in a variety of directions. You may
choose to customize the dashboards on both ExtraHop and AppDynamics to provide
information relevant to your environment. Alternately, you can set up another
integration to instrument other applications with AppDynamics by repeating the
steps in this document for each environment.
What if I cannot use the AppDynamics End User Experience header system?
Application developers may want to consider using their own unique identifiers in
place of the AppDynamics End User Experience headers. Another option may be to
use a system such as Boomerang. ExtraHop provides guidance on how to use
Boomerang for traffic tracing here: http://www.extrahop.com/solutions/by-
category/real-user-monitoring/. While metric collection with ExtraHop will be
possible, using custom EUM headers changes the nature of the solution. If it is not
possible to use EUE headers in your configuration, consult your ExtraHop or
AppDynamics representative for more information.