APM Insight .NET Agent is a profiling based monitoring solution. It uses the profiling APIs provided by Microsoft frameworks and hooks itself into the ASP.NET worker process.
The general workflow for monitoring is as given below :
The .NET agent monitoring starts when the profiler is loaded into the respective application's worker process (w3wp.exe)
- A worker process is initialized and/or an app domain is created for an application on the first request it processes. So no data collection will happen if no request is processed by the application
- In the current version of the agent, the profiler can only be loaded/unloaded during process start/stop. This is the reason for recycling app pools, when there is a change in appfilter configurations
When monitoring begins, a seperate thread is spawned in the application which establishes connection with the Data-Exporter service and sends monitoring data as and when it happens
- Monitoring data is collected inside each of the request threads and is sent to the Data-Exporter service
- If the web application is idle or there are no incoming requests, no data will be sent to the service
The Exporter service aggregates data from each application and sends it to the Applications Manager servers once every minute
- If there is no data for a particular application, empty data is sent, so that status of the application in Applications Manager console is UP