How .NET agent collects data
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 (prior to version 2.5, an iisreset was done) when there is a change in appfilter configurations
- When monitoring begins, a seperate thread is spawned in the application which establishes connection with the Windows 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 Windows service
- If the web application is idle or there are no incoming requests, no data will be sent to the service
- The Windows service aggregates data from each application and sends it to the Site24x7 servers once every minute
- If there is no data for a particular application, empty data is sent, so that status of the application in Site24x7 console is UP