.Net Agent Data Collection

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, 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