Manage Windows Performance Metrics

The .NET Machine Agent uses Microsoft Performance Counters to gather and report .NET metrics. To manage the metrics that the agent collects:

  • Tune the set of metrics that the agent automatically collects
  • Configure the agent to collect metrics from additional counters that are not part of the default settings

Tune the Default Performance Metrics for the .NET Agent

The .NET Agent prioritizes the default set of Performance Counters into three categories: low, medium, and high. By default, the agent is set to collect metrics for all three categories.

Metric Browser Location Metric Priority
ASP.NET Application Restarts 3 - Low
ASP.NET Applications Running 3 - Low
ASP.NET Request Wait Time 2 - Medium
ASP.NET Requests Disconnected 3 - Low
ASP.NET Requests Queued 1 - High
ASP.NET Requests Rejected 3 - Low
ASP.NET Worker Process Restarts 3 - Low
ASP.NET Applications Anonymous Requests 3 - Low
ASP.NET Applications Anonymous Requests/Sec 3 - Low
ASP.NET Applications Cache API Entries 3 - Low
ASP.NET Applications Cache API Hit Ratio 3 - Low
ASP.NET Applications Cache API Turnover Rate 3 - Low
ASP.NET Applications Cache Total Entries 3 - Low
ASP.NET Applications Cache Total Hit Ratio 3 - Low
ASP.NET Applications Cache Total Turnover Rate 3 - Low
ASP.NET Applications Errors During Compilation 3 - Low
ASP.NET Applications Errors During Execution 3 - Low
ASP.NET Applications Errors During Preprocessing 3 - Low
ASP.NET Applications Errors Total 2 - Medium
ASP.NET Applications Errors Total/sec 2 - Medium
ASP.NET Applications Errors Unhandled During Execution 3 - Low
ASP.NET Applications Errors Unhandled During Execution/sec 3 - Low
ASP.NET Applications Output Cache Entries 3 - Low
ASP.NET Applications Output Cache Hit Ratio 3 - Low
ASP.NET Applications Output Cache Turnover Rate 3 - Low
ASP.NET Applications Pipeline Instance Count 3 - Low
ASP.NET Applications Requests Executing 3 - Low
ASP.NET Applications Requests Failed 3 - Low
ASP.NET Applications Requests in Applicaton Queue 1 - High
ASP.NET Applications Requests Not Authorized 3 - Low
ASP.NET Applications Requests Not Found 3 - Low
ASP.NET Applications Requests Succeeded 3 - Low
ASP.NET Applications Requests Timed Out 2 - Medium
ASP.NET Applications Requests Total 2 - Medium
ASP.NET Applications Requests/sec 2 - Medium
ASP.NET Applications Session SQL Server Connections Total 3 - Low
ASP.NET Applications Session State Server Connections Total 3 - Low
ASP.NET Applications Sessions Abandoned 3 - Low
ASP.NET Applications Sessions Active 3 - Low
ASP.NET Applications Sessions Timed Out 3 - Low
ASP.NET Applications Sessions Total 3 - Low
ASP.NET Applications Transactions Aborted 3 - Low
ASP.NET Applications Transactions Committed 3 - Low
ASP.NET Applications Transactions Pending 3 - Low
ASP.NET Applications Transactions Total 3 - Low
ASP.NET Applications Transactions/sec 3 - Low
CLR Process CPU Burnt % 2 - Medium
CLR -> Classes Current Loaded Class Count 3 - Low
CLR -> Classes Total Classes Loaded 3 - Low
CLR -> Locks and Threads Contention Rate Per Sec 2 - Medium
CLR -> Locks and Threads Current Logical Threads 2 - Medium
CLR -> Locks and Threads Current Physical Threads 2 - Medium
CLR -> Locks and Threads Sink Blocks in Use 2 - Medium
CLR -> Memory -> Heap Committed (bytes) 1 - High
CLR -> Memory -> Heap Current Usage (bytes) 1 - High
CLR -> Memory -> Heap Gen 0 Usage (bytes) 1 - High
CLR -> Memory -> Heap Gen 1 Usage (bytes) 1 - High
CLR -> Memory -> Heap Gen 2 Usage (bytes) 1 - High
CLR -> Memory -> LOH Current Usage (bytes) 1 - High
Hardware Resources -> CPU %Busy 1 - High
Hardware Resources -> CPU %Idle 3 - Low
Hardware Resources -> Disks %Free 1 - High
Hardware Resources -> Disks KB read/sec 3 - Low
Hardware Resources -> Disks KB written/sec 3 - Low
Hardware Resources -> Disks MB Free 1 - High
Hardware Resources -> Disks Reads/sec 1 - High
Hardware Resources -> Disks Writes/sec 1 - High
Hardware Resources -> Memory Free % 3 - Low
Hardware Resources -> Memory Free (MB) 3 - Low
Hardware Resources -> Memory Total (MB) 1 - High
Hardware Resources -> Memory Used % 1 - High
Hardware Resources -> Memory Used (MB) 2 - Medium
Hardware Resources -> Network Incoming KB/sec 2 - Medium
Hardware Resources -> Network Incoming packets/sec 3 - Low
Hardware Resources -> Network Outgoing KB/sec 2 - Medium
Hardware Resources -> Network Outgoing packets/sec 3 - Low
IIS CPU % 1 - High
IIS Number of Working Processes 3 - Low
IIS Working Set 1 - High
IIS -> Application Pools -> <name> CPU % 1 - High
IIS -> Application Pools -> <name> Number of Working Processes 3 - Low
IIS -> Application Pools -> <name> Working Set 1 - High
IIS -> INFO VersionMajor 3 - Low
IIS -> INFO VersionMinor 3 - Low

To reduce the number of metrics that the agent sends to the Controller, or to view less than a full set of metrics, you can configure that agent to collect fewer performance metrics. You can also set the agent to only collect specific metrics from the list. See .NET Agent Configuration Properties.

Configure Additional Performance Counters for .NET

If the agent does not monitor performance counters you are interested in, you can add additional performance counters.

  1. Shut down theAppDynamics.Agent.Coordinator service.
  2. Open the config.xml Administer the .NET Agent.
  3. Add the Performance Counters block as a child of the Machine Agent element.
    CODE
    <perf-counters>
    <perf-counter cat="" name="" instance=""/>
    </perf-counters>
  4. Create a Performance Counter element for each performance counter you want to add. Use any of the performance counters as specified inFor example, to add the performance counter for measuring CPU Idle time(%), add this element in the <perf-counters> Performance Counters in .NET Framework.
    • Set the cat attribute to the category of the performance counter.
    • Set the name attribute to the performance counter name.
    • Set the instance attribute to the instance of the performance counter.If the counter does not have an instance name, leave an empty string "" .If a particular performance counter has many instances, you can specify the following options to report the sum of all instances:
      • instance = "*" OR
      • instance = "all"

    CODE
    <perf-counter cat="Processor" name="% Idle Time" instance="_Total"/>
  5. Save the config.xml file.
  6. Start the AppDynamics.Agent.Coordinator service.
After you enable Performance Counter metrics, they display under the Custom Metrics tree in the Metric Browser.

Sample .NET Machine Agent Configuration with Performance Counters

CODE
<machine-agent>
<!-- Additional machine level Performance Counters -->
<perf-counters>
<perf-counter cat="Processor" name="% Idle Time" instance="_Total"/>
<!-- Perf counter with no instance name -->
<perf-counter cat="Memory" name="Available MBytes" instance="" />
</perf-counters>
</machine-agent>