AppDynamics Application Intelligence Platform
3.8.x Documentation
This document will guide you through troubleshooting common issues in the setup of your Web EUM product. But first it may be useful to visualize the end to end flow of data:
If you do not see the EUM data that you expect, use these suggestions to try to correct the problem.
The EUM license is separate from the Controller license.
Call your AppDynamics sales representative or email salesops@appdynamics.com to obtain an Web EUM license key for your AppDynamics account.
The EUM license key is included as part of the overall license file, but the license itself is still a separate item that is provisioned separately.
Controllers cannot share an EUM license key, but applications can.
If you are running more than one Controller, each instance requires its own license. Make sure you are not trying to use the same license on more than one Controller.
These steps provide a high-level overview to checking your Web EUM setup.
1. Make sure there is load running on your app for the pages that you want to monitor for the selected time period.
Tip: When Web EUM discovers a new page, iframe, or Ajax call for the first time there will be a several minute delay before data for it appears in the product.
After the agent is first injected into a page by any of the injection techniques, it takes up to two or three minutes for the agent to register with the Controller. No metrics are captured during this time.
After the page is registered and traffic starts flowing, it can take an additional two or three minutes for the metrics to appear in the AppDynamics console.
In summary, the very first time the JavaScript agent accesses a page, it can take as long as 6 minutes for the metrics to appear because of the initial registration. Subsequently, the delay between an end-user click and the appearance of Web EUM data is two to three minutes.
2. Make sure that Web EUM is enabled for the app. Enable EUM if it is disabled.
See Enable and Disable Web EUM.
3. Examine the source of your web page to ensure that the pages that you want to monitor are instrumented.
See To verify that the JavaScript Agent for WebEUM was injected.
4. Make sure there is connectivity from the browser to the EUM cloud. See Connection Problems for information about troubleshooting connectivity.
5. Examine your instrumented application to verify that:
ky
parameter in the beacon is set to your application key.You can use the Developer Tools for your web browser to examine your application. The Network tab shows the agent extension and status.
Tip: Access to the Developer tools is different on different browsers.
On Chrome use View->Developer->Developer Tools.
On Safari use Develop->Show Web Inspector.
On Firefox use Tools->Web Developer.
If the adrum-ext
agent extension file or the adrum-gif
file from the web beacon are not present or the status is not valid, verify your EUM configuration. See Set Up and Configure Web EUM.
If your browser cannot connect to the AppDynamics EUM cloud and you use an on-premise controller it is possible that:
Run the following command from your browser:
https://agg.eum-appdynamics.com/eumaggregator/ping
If you get a "ping" in the window, you should be able to connect to the EUM cloud.
If you are using IE on a Windows system, make sure the browser itself does not have a proxy (with authentication) set up. If it does, the test link may work but not the actual connection.
Make sure you have also unblocked any firewalls and verified the keystore entries as described below. If you are still having issues, contact AppDynamics Support.
The controller needs to be able to use HTTP over SSL (HTTPS) on port 443 to reach the EUM cloud aggregator at agg.eum-appdynamics.com
.
If your controller is behind a firewall, you can either open your controller's firewall or use a forward proxy.
To open the firewall, see the instructions specific to your firewall.
You only need to open the firewall for the specific host and and port (agg.eum-appdynamics.com on 443), not for the entire *.eum-appdynamics.com domain.
1. Set up an HTTP proxy to https://agg.eum-appdynamics.com.
This is a cleartext/pass-through proxy. Authentication is not supported on the first level. If the client network itself requires authentication you must set up an intermediate proxy between your controller and this proxy to pass on the credentials you need to get out of your network.
2. Configure the HTTP proxy host and port in the <Controller-Installation-Directory>/appserver/glassfish/domains/domain1/config/domain.xml
file.
See Configure Controller HTTP Proxy Settings for details about configuring the proxy.
3. Restart the controller's app server.
You need a valid trusted cert entry for the EUM aggregator and a private key entry for the Glassfish server instance underlying the controller.
1. Open a command prompt in the controller's glassfish directory, <AppDynamics_install_dir>/appserver/glassfish
2. Run the keytool command:
keytool -list -keystore keystore.jks
2. Enter the keystore password.
Your keystore entries are displayed.
Your keystore should include a trusted certificate entry for "agg_appdynamics" and private key entries for "eum_client" and "glassfish-instance" that look something like this:
agg_appdynamics, Mar 18, 2013, trustedCertEntry, Certificate fingerprint (MD5): 92:A7:19:E0:AF:07:C6:2E:91:6B:D6:47:5C:AD:B3:C7 glassfish-instance, Jul 11, 2012, PrivateKeyEntry, Certificate fingerprint (MD5): BE:DE:57:FF:BC:E2:32:AA:85:4C:4C:BD:6F:BC:EC:DE
If you do not have these entries, you need to create the certificate. Contact your System Administrator or AppDynamics Support for information on how to do this.
The JavaScript Agent for Web EUM must be injected into every page that you want to monitor for EUM data.
View the source of your web page. When automatic or assisted injection is used, you should see the script for the JavaScript Agent for EUM inline in the web page. The actual version details of the script may vary, but the first few lines of the agent look like this:
When manual injection is used, you will see:
<script src="/path_to_adrum.js"/>
If the agent is not there:
1. If you used manual injection, use the normal procedures that you use to verify other types of code changes in your web pages. Keep in mind that various caches, such as the server page, CDN or browser caches, can prevent the page from actually being reloaded. If you cannot get manual injection to work, try one of the other injection schemes if they are available for your platform. See Set Up Your Application for Web EUM for information about the various injection strategies.
2. If you used automatic injection, verify that the Enable Automatic injection of JavaScript check box is checked in the configuration. Click Configure->Instrumentation->End User Experience->Web JavaScript Instrumentation->Advanced->Advanced Instrumentation of your HTML Pages->Automatic JavaScript Injection.
Also verify that automatic injection is enabled for all of the business transactions that you want to monitor. If some of those business transactions are in the Automatic injection possible, but not enabled list, move them to the Automatic injection enabled list. If the business transaction that you want to monitor does not appear in either list, automatic injection is not possible for that business transaction.
For applications built on .NET, automatic injection is available for ASP.NET and ASPX frameworks.
3. If you used assisted injection with injection rules for your Java application, verify that injection rules were created and that the injection rules were enabled. Click Configure->Instrumentation->End User Experience->Web JavaScript Instrumentation->Advanced->Advanced Instrumentation of your HTML Pages->Configure JavaScript Injection to see the list of rules and their enabled status. See Assisted Injection-Using Injection Rules - Java Only for information about creating and enabling injection rules.
If you try one way to inject the JavaScript Agent for Web EUM and it does not work, it is best to undo the current injection configuration before implementing another one.
If multiple copies of the agent exist on a page, the second copy does not execute.
If only some web pages are not reporting data, first verify that those pages have been injected with the JavaScript Agent for Web EUM. See To verify that the JavaScript Agent for Web EUM was injected.
It the agent has been injected, the page may have been excluded from monitoring by custom exclude rules, You can check and modify these rules. To access custom exclude rules for pages:
1. In the left navigation pane click Configure->Instrumentation.
2. Click the End User Experience subtab.
3. Click the Web Page Naming, Error Detection, Thresholds, etc. sub-tab.
4. Expand Configure how Pages, Ajax Requests, and iframes will be named if it is closed.
5. Scroll down to the Custom Exclude Rules list.
If there are any custom exclude rules, they are listed here.
6. To examine and/or modify a custom exclude rule select it in the list and click the Pencil icon.
If you want to remove a custom exclude rule, select it in the list and click the Minus icon.
In addition, certain pages could have been excluded by the injection configuration. This can happen when automatic injection is used with a limited set of pages enabled for injection. If you used automatic injection, check your automatic injection configuration to see if the missing pages are enabled for injection. Examine the Request Match Rules and Request Exclude Rules lists under Only enable Automatic Injection for certain Pages in the Automatic JavaScript Injection tab. See Automatic Injection. Pages can be also be bypassed by assisted injection using injection rules, when an injection rule specifies only classes and methods to be injected. If you used assisted injection with injection rules, check your injection rules. See Assisted Injection-Using Injection Rules - Java Only.
It is possible that reporting is disabled or that certain JavaScript or Ajax errors that you would like to be reported as errors have been configured to be ignored. See Configure JavaScript and Ajax Error Detection.
If another script on your monitored pages sets the JavaScript window.onerror event, this setting can interfere with EUM error capture. See Handle the window.onerror Event to learn how to catch those errors.
If you do not see any browser snapshots, it is possible that browser snapshot collection has been disabled. If periodic collection and error collection and slow collection are all disabled, the agent does not collect any browser snapshots. See Configure Browser Snapshot Collection.
Also check the thresholds for that define slow end user experience. AppDynamics collects browser snapshots only for slow-performing requests, so if the thresholds are set too high, no requests are flagged as slow. See Configure EUM Browser Snapshot Thresholds.
You get server-side correlation with browser snapshots only if the business transactions associated with the browser snapshot are running on application servers instrumented with AppDynamics app agents. This could explain why you do not see any or do not see all of the business transactions that you expect to see. Check which of your servers are instrumented by app agents and which are not. You may need to get more AppDynamics app agent licenses to get correlation.
If the app servers are all instrumented with AppDynamics app agents, it is possible that the business transactions that you expect to see were not injected with the JavaScript Agent for Web EUM. This can happen when automatic injection is used with a limited set of business transactions enabled for injection. If you used automatic injection, check your automatic injection configuration to see if the missing business transactions are enabled for injection. See To verify that the JavaScript Agent for WebEUM was injected and Automatic Injection. Business transactions can also be excluded with assisted injection using injection rules, when an injection rule specifies only certain business transactions to be injected. If you used assisted injection with injection rules, check your injection rules. See Assisted Injection-Using Injection Rules - Java Only.
Even if all your app servers are instrumented with AppDynamics app agents, it is possible that no associated transaction snapshots were captured at the time of the browser snapshot. For example, if no transactions were slow at the time of the browser snapshot, you probably will not see any transaction snapshots. See Transaction Snapshots for information about when transaction snapshots are captured. You can modify transaction snapshot capture. See Configure Transaction Snapshots.
On the browser side, if a browser snapshot is associated with a transaction snapshot, you will see it in the Transaction Snapshots section of the browser snapshots. See Business Transactions in Browser Snapshots. On the server side, if a transaction snapshot is associated with a browser snapshot, you will see an EUM GUID in the ADDITIONAL DATA tab in the transaction snapshot. See Transaction Snapshots.
To ensure full business transaction timing information, you need to inject the JavaScript Agent for EUM into the footer of your web pages. Manual injection of the agent does not inject into the footer so you need to use another injection method to get this functionality.
See Getting Full Timing Data for Associated Business Transactions and Choosing Your Injection Method.