Hi Jlee,
This is a known limitation and an enhancement request is in place to track this. With this said, there is no documented way available to achieve this. A workaround would be to use the APIs which the Controller UI uses to query all the pages and AJAX. However the shortcoming is that these APIs are undocumented and used for UI service only, hence they might change without prior notice. But it will solve the purpose for now.
You can run the following sequence using curl (or equivalent in any other programming language):
# this works for controller version 4.2 version of Controllers
# generate token using <username>%40<account>:<password>
token=`echo -n "mayuresh%40mvk:AppD" |base64 -b 0` # this works for controller version 4.3 version of Controllers # generate token using <username>@<account>:<password> token=`echo -n "mayuresh@mvk:AppD" |base64 -b 0`
curl -v --cookie-jar cookie2.txt -H"Authorization:Basic ${token}" "http://172.16.87.133:8090/controller/auth?action=login"
curl -XPOST -H"Content-Type:application/json;charset=UTF-8" -H"Acceding:gzip, deflate" -H"Accept:application/json, text/plain, */*" --cookie cookie2.txt -v --data '{"applicationId":50,"addId":null,"timeRangeString":"last_15_minutes|BEFORE_NOW|-1|-1|15","fetchSyntheticData":false}' "http://172.16.87.133:8090/controller/restui/pageList/getEumPageList" 2>/dev/null|python -m json.tool
Here the call is:
/controller/restui/pageList/getEumPageList
And in the document takes in the application id as input in the document
--data '{"applicationId":1196,"addId":null,"timeRangeString":"last_15_minutes|BEFORE_NOW|-1|-1|15","fetchSyntheticData":false}'
Here the "applicationId" field provides the application id. You can get the application id form the URL in the browser when you are in the required EUM app in the controller UI.
Output:
{
"ajaxLimit": 2000,
"numOfAdds": 0,
"pageIFrameLimit": 2000,
"pageList": [
{
"addId": 997943,
"ajaxCallBackExecutionTime": -1,
"ajaxRequestErrorPerMinute": -1,
"ajaxResponseDownloadTime": -1,
"domBuildingTime": -1,
"domReadyTime": -1,
"endUserResponseTime": -1,
"firstByteTime": -1,
"frontEndTime": -1,
"htmlDownloadAndDomBuildingTime": -1,
"htmlDownloadTime": -1,
"internalName": "www1.nn.com.au/online_customers/static",
"name": "www1.nn.com.au/online_customers/static",
"outlierRequests": -1,
"pageViewWithJavaScriptErrorPerMinute": -1,
"requestPerMinute": -1,
"resourceFetchTime": -1,
"responseAvailableTime": -1,
"serverConnectionTime": -1,
"synthetic": false,
"totalNumberOfEndUserRequests": -1,
"totalOutlierRequests": -1,
"totalPageViewWithJavaScriptError": -1,
"type": "BASE_PAGE"
},
.....
This output can now be parsed to get the number of items per "type".
Once you have these output parsed, you can create your custom metrics from these values as defined at https://docs.appdynamics.com/display/PRO43/Extensions+and+Custom+Metrics for 4.3 and https://docs.appdynamics.com/display/PRO42/Extensions+and+Custom+Metrics for 4.2.
Once you have the custom metrics in place, you can use them in your Alerting and Dashboards.
Let us know if this helps.
Regards,
Mayuresh
(Please click the Accept solution button if you find this solution useful)
... View more