Application Performance Monitoring for ArcGIS Server

Blog Post created by aaron.lee on May 17, 2017

New Relic's .NET APM (Application Performance Monitoring) agent (Learn more) is a powerful tool you can utilize to monitor and instrument the performance of your GIS applications and services. Deploying APM on your web servers will tell you how well your services served via the IIS Web Adapter are doing. You'll also be able to see how your web applications are performing. Information such as response time, external calls, JavaScript errors, SQL query response times, and a plethora of others are mere clicks away.


What if we want to see deeper into the GIS stack?  Though the APM .NET agent will report activity to and from the ArcGIS Server, you'll not have instrumentation through the entire software stack without instrumenting ArcGIS Server itself.  That's where the Java agent and some configuration come in.  Behind those beloved ports of 6080 and 6443 lies another web server.  ArcGIS Server is built on top of several other distinct technologies, one of them being an Apache Tomcat application server.  Using New Relic's Java agent, we'll instrument the Tomcat Catalina servlet at the heart of ArcGIS Server.


1. Copy the agent to the machine, granting permissions to the folder as appropriate (permissions should be granted to the user that is starting the ArcGIS Server service).
2. Edit the YML file, updating the name, license key, and proxy information if needed.
3. Edit the Catalina.bat file here by default, C:\Program Files\ArcGIS\Server\framework\runtime\tomcat\bin\catalina.bat
   a. Locate the line “set TOMCAT_HEAP_SIZE=” (around line 85 for ArcGIS 10.3 and 10.4)
   b. Add the following line directly after the heap size parameter “set JAVA_OPTS= %JAVA_OPTS% -javaagent:"C:/Program Files/ArcGIS/Server/geronimo/newrelic/newrelic.jar"” In this case I had placed the agent in the Geronimo folder as the account running the service has access to this folder already.
4. Restart the ArcGIS Server service.




The .NET agent alone is great, but the two together complete the real picture.



I am now able to see why this ArcGIS Server is eating resources.  It's handling 1.87k requests, that I couldn't see before.






Server building a cache:


Check out my other how-to articles to this series showing you how to;


Instrument ArcGIS Server

Application Performance Monitoring for Complex ETLs

Instrument Portal for ArcGIS Server

Instrument ArcGIS Data Store