AppDynamics switched from Semantic Versioning to Calendar Versioning starting in February 2020 for some agents and March 2020 for the entire product suite.


    Skip to end of metadata
    Go to start of metadata

    The AppDynamics .NET Machine Agent uses Microsoft Performance Counters to gather and report .NET metrics. You can manage the metrics that the agent collects as follows:

    • 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. 


     Click here to view the default metric priorities...
    Metric Browser LocationMetricPriority
    ASP.NETApplication Restarts3 - Low
    ASP.NETApplications Running3 - Low
    ASP.NETRequest Wait Time2 - Medium
    ASP.NETRequests Disconnected3 - Low
    ASP.NETRequests Queued1 - High
    ASP.NETRequests Rejected3 - Low
    ASP.NETWorker Process Restarts3 - Low
    ASP.NET ApplicationsAnonymous Requests3 - Low
    ASP.NET ApplicationsAnonymous Requests/Sec3 - Low
    ASP.NET ApplicationsCache API Entries3 - Low
    ASP.NET ApplicationsCache API Hit Ratio3 - Low
    ASP.NET ApplicationsCache API Turnover Rate3 - Low
    ASP.NET ApplicationsCache Total Entries3 - Low
    ASP.NET ApplicationsCache Total Hit Ratio3 - Low
    ASP.NET ApplicationsCache Total Turnover Rate3 - Low
    ASP.NET ApplicationsErrors During Compilation3 - Low
    ASP.NET ApplicationsErrors During Execution3 - Low
    ASP.NET ApplicationsErrors During Preprocessing3 - Low
    ASP.NET ApplicationsErrors Total2 - Medium
    ASP.NET ApplicationsErrors Total/sec2 - Medium
    ASP.NET ApplicationsErrors Unhandled During Execution3 - Low
    ASP.NET ApplicationsErrors Unhandled During Execution/sec3 - Low
    ASP.NET ApplicationsOutput Cache Entries3 - Low
    ASP.NET ApplicationsOutput Cache Hit Ratio3 - Low
    ASP.NET ApplicationsOutput Cache Turnover Rate3 - Low
    ASP.NET ApplicationsPipeline Instance Count3 - Low
    ASP.NET ApplicationsRequests Executing3 - Low
    ASP.NET ApplicationsRequests Failed3 - Low
    ASP.NET ApplicationsRequests in Applicaton Queue1 - High
    ASP.NET ApplicationsRequests Not Authorized3 - Low
    ASP.NET ApplicationsRequests Not Found3 - Low
    ASP.NET ApplicationsRequests Succeeded3 - Low
    ASP.NET ApplicationsRequests Timed Out2 - Medium
    ASP.NET ApplicationsRequests Total2 - Medium
    ASP.NET ApplicationsRequests/sec2 - Medium
    ASP.NET ApplicationsSession SQL Server Connections Total3 - Low
    ASP.NET ApplicationsSession State Server Connections Total3 - Low
    ASP.NET ApplicationsSessions Abandoned3 - Low
    ASP.NET ApplicationsSessions Active3 - Low
    ASP.NET ApplicationsSessions Timed Out3 - Low
    ASP.NET ApplicationsSessions Total3 - Low
    ASP.NET ApplicationsTransactions Aborted3 - Low
    ASP.NET ApplicationsTransactions Committed3 - Low
    ASP.NET ApplicationsTransactions Pending3 - Low
    ASP.NET ApplicationsTransactions Total3 - Low
    ASP.NET ApplicationsTransactions/sec3 - Low
    CLRProcess CPU Burnt %2 - Medium
    CLR -> ClassesCurrent Loaded Class Count3 - Low
    CLR -> ClassesTotal Classes Loaded3 - Low
    CLR -> Locks and ThreadsContention Rate Per Sec2 - Medium
    CLR -> Locks and ThreadsCurrent Logical Threads2 - Medium
    CLR -> Locks and ThreadsCurrent Physical Threads2 - Medium
    CLR -> Locks and ThreadsSink Blocks in Use2 - Medium
    CLR -> Memory -> HeapCommitted (bytes)1 - High
    CLR -> Memory -> HeapCurrent Usage (bytes)1 - High
    CLR -> Memory -> HeapGen 0 Usage (bytes)1 - High
    CLR -> Memory -> HeapGen 1 Usage (bytes)1 - High
    CLR -> Memory -> HeapGen 2 Usage (bytes)1 - High
    CLR -> Memory -> LOHCurrent Usage (bytes)1 - High
    Hardware Resources -> CPU%Busy1 - High
    Hardware Resources -> CPU%Idle3 - Low
    Hardware Resources -> Disks%Free1 - High
    Hardware Resources -> DisksKB read/sec3 - Low
    Hardware Resources -> DisksKB written/sec3 - Low
    Hardware Resources -> DisksMB Free1 - High
    Hardware Resources -> DisksReads/sec1 - High
    Hardware Resources -> DisksWrites/sec1 - High
    Hardware Resources -> MemoryFree %3 - Low
    Hardware Resources -> MemoryFree (MB)3 - Low
    Hardware Resources -> MemoryTotal (MB)1 - High
    Hardware Resources -> MemoryUsed %1 - High
    Hardware Resources -> MemoryUsed (MB)2 - Medium
    Hardware Resources -> NetworkIncoming KB/sec2 - Medium
    Hardware Resources -> NetworkIncoming packets/sec3 - Low
    Hardware Resources -> NetworkOutgoing KB/sec2 - Medium
    Hardware Resources -> NetworkOutgoing packets/sec3 - Low
    IISCPU %1 - High
    IISNumber of Working Processes3 - Low
    IISWorking Set1 - High
    IIS -> Application Pools -> <name>CPU %1 - High
    IIS -> Application Pools -> <name>Number of Working Processes3 - Low
    IIS -> Application Pools -> <name>Working Set1 - High
    IIS -> INFOVersionMajor3 - Low
    IIS -> INFOVersionMinor3 - Low


    If you want to reduce the number of metrics that the agent sends to the Controller, or if your are not interested in the 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. For specific instructions about how to configure the agent, see 'Performance Metrics Element' on .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 the AppDynamics.Agent.Coordinator service.
    2. Open the config.xml file for editing as an administrator.  See 'Where to Configure Agent Properties' on Administer the .NET Agent.

    3. Add the Performance Counters block as a child of the Machine Agent element.

        <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 in 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:
        • instance ="*" OR
        • instance ="all" (This reports the sum of all instances)

      For example, to add the performance counter for measuring CPU Idle time(%), add the following element in the <perf-counters> block:

      <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 appear under the Custom Metrics tree in the Metric Browser.

    Sample .NET Machine Agent Configuration with Performance Counters

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