Updated Application Insights Status Monitor to support .12 (and later) Application Insights SDK

The latest release of the Application Insights Status Monitor tool provides an update to the runtime instrumentation agent, which is a component of Application Insights that automatically discovers your code dependencies like SQL databases, other HTTP endpoints and Azure storage accounts.  This new runtime instrumentation agent requires your application to use the .12 (or later) Application Insights SDK available here.   The latest version of the Application Insights Status Monitor tool is available to install here.  Follow either of these steps to update your application from a previous version of the Application Insights SDK to the .12 SDK version.

1. If your application onboarded to Application Insights from Visual Studio 2013 Update 3 or later then right click on the ApplicationInsights.config file in Solution Explorer and choose Update Application Insights.

image

2. If your application was onboarded to Application Insights using the Application Insights Status Monitor configuration tool, make sure you have the latest version of the Application Insights Status Monitor installed then choose Remove and then Add Application Insights as shown in the below screenshots.

Remove:

clip_image004

Add Application Insights:

clip_image006

 

One of the changes made in the .12 version of the Application Insights for Web Applications SDK is the collection of the following Windows performance counters.  These Windows performance counters are automatically configured to be collected and sent to the Application Insights service every 1 min. 

% Process CPU       

The percentage of elapsed time of all process threads used by the processor to execution instructions for the applications process.

Available Memory

Physical memory immediately available for a process or for system use.

ASP.NET request rate

Rate of all requests to the application per second from ASP.NET.

Exception rate

Exceptions thrown per second.

Process private bytes

Memory exclusively assigned to the monitored application’s processes.

Process IO rate

Total bytes per second read and written to files, network and devices.

ASP.NET Request execution time

Execution time of the most recent request.

ASP.NET Requests in application queue

Length of the application request queue.

% Processor time

The percentage of time that the processor spends in non-Idle threads.

 

Performance counters and code dependencies can be viewed and explored from the Metrics Explorer:

clip_image008

 

There are 2 steps required to ensure these Windows performance counters are collected and sent to the Application Insights service along with other telemetry:

1. ensure your web application is using the .12 version of the Application Insights for Web Applications SDK

2. ensure your web application ASP.NET worker process identity has the right Windows privileges to read Windows performance counters.  This usually means adding the ASP.net worker process into the local “Performance Monitor Users” group.  Installing the latest version of the Application Insights Status Monitor will attempt to make the required change based on the ASP.NET worker process identity used.  

 

Additional notes:

  • There are cases where you may see the following warning message.  In this case you may need to check the ASP.NET worker process identity and manually add it to the servers local “Performance Monitor Users” group.

image

First check to see what identity your ASP.NET worker process is running under.  Eg. in this case the FF-Extranet-Prod application pool is running under an identity called: AppPoolUser

image

Next add this identity to the “Performance Monitor Users” group.

image

  • Windows performance counters will not be collected if your application is deployed on a Windows Azure Website.  Support for this scenario is on the backlog.
  • To stop collecting these Windows performance counters remove the following line from the ApplicationInsights.config file:
    • <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCollector.PerformanceCollectorModule, Microsoft.ApplicationInsights.Extensibility.PerfCollector" />