- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Can an Angular Application be configured as Application?
Hi,
Currently, our Angular application is configured as "User Experience", We are facing the below issues:
1. We want to trigger an alert when there is a specific HTTP code in the response ex: 500, . While configuring health rules, there is no option to select a specific error code.
2. Anomalies are not detected even through enabled the option to overcome these issues
Can we configure our application as "Application" so that will give more options to configure the health rules?
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

I found this AppD Docs page on Angular, please check it out. https://docs.appdynamics.com/21.8/en/end-user-monitoring/browser-monitoring/browser-real-user-monito...
In the meantime, let us see if the community can also jump in and provide insight.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for sharing the doc link and it was not much helpful.
Can you please help us in below:
As communicated earlier, as of now our Angular application configured as "User Experience" Please refer the screen shots.
Current configuration for one of the health rule is "AJAX Request Errors per Minute" metric - with this the problem is Appd is trying to collect all error codes and raising false alarms. (all error codes means other than 200 http codes it is considering as errors) , but in our application the 400/401 those are business error codes, these we want to avoid to capture as errors in AppD.
Can you please suggest us any configuration/metric to configure with http code 500.
Another issue the anomalies are not capturing, Can you suggest any configuration?
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Let's see if the community can jump in and help. Also, if you happen to find any new information or a solution, please do come back and share that info here.
As this is a peer-to-peer community, knowledge sharing is very important to the success of the community.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As of no body responded from the community it would be great if someone from App Dynamic team can help.
As mentioned previously would be interested to configure health on specific http error code.
Currently for application daily approximate requests are 2.5M to 3M.
Among those success requests (200) could be 80%
User entered incorrect data (400) could be 12-15%
All remaining may other %
So here 400 error codes frequently alert are generated .. those are proper business errors.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you Hiroki for the explanation and let me go through it and let you know if additional details are needed.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Hiroki,
It was really helped and I have below questions:
We configured our application only as End User Monitoring, but the anomalies are not captured.
Could you please let us know
1. does EUM also capture the anomalies?
2. How I can correlate the transaction generated in browser snapshot and in the splunk logs? (refer screen shots)
I checked with Client Request GUID which is available from Brower snap shots no luck. (please refer first screenshot)
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hiroki,
Did you get chance to look into the problem I posted?
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Splunk Add-on for AppDynamics
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Hiroki.Ito,
Thank you very much for explanation and appreciate your coordination.
One more question:
As you know our application is configured as "EUM" and when any java script/ Ajax error occurred the message is not captured please refer screen shot.
My question is :
1. How can capture the error message for that error code / java script error code?
2. For IE 11 Do we need any specific adrum.js file? we suspecting IE11 java script errors / data is not capturing.
Can you please let us know how we can attach the files here? / how we can send the files?
Please find the current index.html here.
<!doctype html>
<html lang="en" dir="ltr">
<head>
<script>
(function (p, r, m) {
m = p.match(r);
!!m && !!m[2] ? document.write('<base href="' + (m ? m[0] : '') + '/" />') : null;
})(location.pathname, /^\/shiponline(\/([a-z]{2}-[a-z]{2}))?/i);
</script>
<script>
/* Allow return from legacy */
(function () {
if (window.location.search.substr(1).includes('legacy=true')) {
window.localStorage.removeItem('legacyShipping');
window.localStorage.removeItem('legacyShipping_ts');
window.location.href = window.location.href.replace(window.location.search, '');
}})();
</script>
<meta charset="utf-8">
<title i18n="The title element of the page | text that appears in the tab">
Create a Shipment - XXX Shipment Creation
</title>
<!--change description for content-->
<meta name="description"
content="Easily compare and calculate Express, Ground, and Freight shipping rates to get the fastest delivery times available for all your domestic and international shipments">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="icon"
type="image/png"
href="https://www.XXX.com/images/c/s1/fx-favicon.ico">
<link rel="stylesheet"
type="text/css"
href="https://www.XXX.com/etc/clientlibs/XXX/commoncore.min.css">
<!--PLACEHOLDER FOR SCRIPT TAG TO INCLUDE GOOGLE MAPS API LINK-->
<style type="text/css">
.fdx-c-static-loading-indicator-container {
text-align: center;
padding: 30px 0;
background: #f2f2f2;
min-height: 1000px;
}
.fdx-c-static-loading-indicator {
display: inline-block;
position: relative;
width: 4rem;
height: 4rem;
overflow: hidden;
}
.fdx-c-static-loading-indicator__part {
position: absolute;
box-sizing: border-box;
left: 0;
right: 0;
bottom: 0;
top: 0;
margin: 2px;
border-width: 2px;
border-style: solid;
border-color: #4d148c transparent transparent;
border-radius: 50%;
-webkit-animation: 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite static-loading-indicator;
animation: 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite static-loading-indicator;
}
.fdx-c-static-loading-indicator__part:nth-child(1) {
border-color: #58595b;
opacity: 0.15;
}
.fdx-c-static-loading-indicator__part:nth-child(2) {
-webkit-animation-delay: -0.24s;
animation-delay: -0.24s;
}
.fdx-c-static-loading-indicator__part:nth-child(3) {
-webkit-animation-delay: -0.36s;
animation-delay: -0.36s;
}
.fdx-c-static-loading-indicator__part:nth-child(4) {
-webkit-animation-delay: -0.5s;
animation-delay: -0.5s;
}
.fdx-c-static-loading-indicator--white .fdx-c-static-loading-indicator__part {
border-color: #fff transparent transparent;
}
.fdx-c-static-loading-indicator--white .fdx-c-static-loading-indicator__part:nth-child(1) {
border-color: transparent;
}
@-webkit-keyframes static-loading-indicator {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes static-loading-indicator {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
</style>
<script>
if (!FDX) {
var FDX = {};
}
FDX.CAAS = {
channel: 'XXX.com|caas|xxx',
pagePath: 'default'
};
FDX.DATALAYER = {};
FDX.DATALAYER.event = [];
FDX.DATALAYER.page = {
pageInfo: {
pageName: "XXX",
locale: "en_us",
language: "en",
historicalPageName: "",
region: "us",
country: "us",
pagePath: "/"
},
category: {
pageType: "application",
primaryCategory: "content|application",
isApplication: "true",
appName: "XXX-mags"
},
button: {
data: ""
}
};
</script>
</head>
<body>
<link async rel="preload" href="https://cdn.optimizely.com/js/19595420443.js" as="script">
<link rel="preconnect" href="//logx.optimizely.com">
<script async src="https://cdn.optimizely.com/js/19595420443.js"></script>
<!--Script to handle google authorization failures. -->
<script>
function gm_authFailure() {
document.dispatchEvent(new Event('GOOGLE_AUTH_FAILURE'));
google = undefined;
};
</script>
<!--Script to load Google places library. -->
<script
src="https://maps.googleapis.com/maps/api/js?client=gme-XXXcorporation1&libraries=places&channel=MAGS"></script>
<!--Script to listen to Login Event from Header.-->
<script charset='UTF-8'>
// Load AppD scripts for test levels and production environments.
if (window.location.host.indexOf('localhost') != 0) {
window['adrum-start-time'] = new Date().getTime();
var hostName = window.location.host;
(function (config) {
if (window.location.host.indexOf('www.XXX.com') === 0) {
config.appKey = 'AD-AAB-XXX-YYY'; // Production Key
} else {
config.appKey = 'AD-AAB-XXX-YYY'; // Test Level Key
}
window["adrum-app-key"] = config.appKey;
config.adrumExtUrlHttp = 'http://' + hostName + '/shiponline/appd';
config.adrumExtUrlHttps = 'https://' + hostName + '/shiponline/appd';
config.fetch = true;
config.angular = true;
config.isZonePromise = true;
config.beaconUrlHttp = 'http://col.eum-appdynamics.com';
config.beaconUrlHttps = 'https://col.eum-appdynamics.com';
config.xd = {enable: true};
config.spa = {"spa2": true};
})(window['adrum-config'] || (window['adrum-config'] = {}));
//Load Adrum.js file
var script = document.createElement('script');
script.type='text/javascript';
script.src='https://' + hostName + '/shiponline/appd/adrum.js';
document.getElementsByTagName('head')[0].appendChild(script);
}
</script>
<script>
if (!window.sessioncamConfiguration) {
window.sessioncamConfiguration = new Object();
}
window.sessioncamConfiguration.elementsToRemove='.pac-item';
</script>
<!-- MAGS Application Bootstrap selector -->
<fx-mags-root></fx-mags-root>
<div class="app-loading">
<div class="fdx-c-static-loading-indicator-container">
<div class="fdx-c-static-loading-indicator">
<div class="fdx-c-static-loading-indicator__part"></div>
<div class="fdx-c-static-loading-indicator__part"></div>
<div class="fdx-c-static-loading-indicator__part"></div>
<div class="fdx-c-static-loading-indicator__part"></div>
</div>
</div>
</div>
</body>
</html>
Edited 8/24/21 to include the "@mention" tag for improved notification
Claudia Landviar, Community Manager &the Editor
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hiroki,
Thank you for your reply.
for 1. How can capture the error message for that error code / java script error code?
As part of our application API sending the proper response, please find the screen shot.
As part of java script error we configured that option already and there is no rules to ignore the errors.
Still we don't see the java scripts errors and ajax error messages
For question 2 will analyze and get back to you
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
1. Ajax error: You can see Ajax error with browser snapshots. However the error is like {"status":"400","message":""} and the message part is empty.
2. Javascript error: JavaScript Error is not shown with browser snapshots for any browser.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Hiroki,
Thank you for your great support and patience.
Java script errors are capturing but not providing meaningful message.
Gone through provided link and configuration already in place as per documentation, still not capturing the java script messages.
What kind of java script error messages will it capture?
If adrum.js loaded but application is not loaded will appD collects the error data?
Please find the configuration screen shot and errors response
Regards
Arjun
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
src/page/XXX.js
Line 35:18: 'XXX' is not defined no-undef
Search for the keywords to learn more about each error.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Hiroki,
1. Is there any way / add custom script to the index.html such way that appD captures the AJAX
Response for other than 200 http code?
For example:
2. I could see there is a small difference in urls will it cause any problem to capture more error data?
App Dynamic documentation:
config.adrumExtUrlHttp = "http://cdn.appdynamics.com";
config.adrumExtUrlHttps = "https://cdn.appdynamics.com";
config.beaconUrlHttp = "http://pdx-col.eum-appdynamics.com";
config.beaconUrlHttps = "https://pdx-col.eum-appdynamics.com";
In our script urls:
config.adrumExtUrlHttp = 'http://' + hostName + '/shiponline/appd';
config.adrumExtUrlHttps = 'https://' + hostName + '/shiponline/appd';
config.beaconUrlHttp = 'http://col.eum-appdynamics.com';
config.beaconUrlHttps = 'https://col.eum-appdynamics.com';
<script charset='UTF-8'>
// Load AppD scripts for test levels and production environments.
if (window.location.host.indexOf('localhost') != 0) {
window['adrum-start-time'] = new Date().getTime();
var hostName = window.location.host;
(function (config) {
if (window.location.host.indexOf('www.XXX.com') === 0) {
config.appKey = 'AD-AAB-XXX-YYY'; // Production Key
} else {
config.appKey = 'AD-AAB-XXX-YYY'; // Test Level Key
}
window["adrum-app-key"] = config.appKey;
config.adrumExtUrlHttp = 'http://' + hostName + '/shiponline/appd';
config.adrumExtUrlHttps = 'https://' + hostName + '/shiponline/appd';
config.fetch = true;
config.angular = true;
config.isZonePromise = true;
config.beaconUrlHttp = 'http://col.eum-appdynamics.com';
config.beaconUrlHttps = 'https://col.eum-appdynamics.com';
config.xd = {enable: true};
config.spa = {"spa2": true};
})(window['adrum-config'] || (window['adrum-config'] = {}));
//Load Adrum.js file
var script = document.createElement('script');
script.type='text/javascript';
script.src='https://' + hostName + '/shiponline/appd/adrum.js';
document.getElementsByTagName('head')[0].appendChild(script);
}
</script>
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
thank you for your support.
Is there a way to run the analytics query through the REST CALL?
For example : How I can run below query with date range / last 7 days/ last 30 days with rest api call?
SELECT * FROM browser_records WHERE ajaxerror like "*status*5*" and appkey = "XXXX" and pagename="api.xxx.com/ship/v3"
If possible please provide some useful examples so that I can run utilize your examples.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
curl -X POST "https://<events_service_endpoint>/events/query/?start=<ISO 8601 or Unix time for 7 days ago>&limit=1000" -H"X-Events-API-AccountName:<global account name>" -H"X-Events-API-Key:<Analytics API key.>" -H"Accept: application/vnd.appd.events+json;v=2" -H"Content-type: application/vnd.appd.events+json;v=2" -d "[{\"query\": \"SELECT * FROM browser_records WHERE ajaxerror like '*status*5*' AND appkey = 'XXXX' And pagename='api.xxx.com/ship/v3'\"}]"
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hello @Arjunasetty.Murahari,
Do you have any follow-up questions for @Hiroki.Ito? If so, please keep the conversation going. If not, please accept one of Hiroki's replies as the Accepted Solution so the community knows this question has an answer.
