Skip to main content

Performance Monitoring

This topic provides a list of Activity Monitor performance counters and standard system-wide performance counters (Memory and CPU usage, TCP disconnections, etc) that are recommended for Activity Monitor performance monitoring. These performance counters can help diagnose performance issues.

Performance Counters

The following performance counters are provided by Activity Monitor.

CategoryRecommendedCounterDescription
NetAppActivity Monitor - NetApp\Events ReceivedNumber of events received from NetApp
NetAppActivity Monitor - NetApp\Events Received/secRate at which events are received from NetApp
NetAppActivity Monitor - NetApp\Events ReportedNumber of events passed the filters and being reported to outputs
NetAppActivity Monitor - NetApp\Events Reported/secRate at which events are reported to outputs
NetAppActivity Monitor - NetApp\Session NegotiatedNumber of connections established with ONTAP cluster nodes
NetAppActivity Monitor - NetApp\Active ConnectionsNumber of active connections with ONTAP cluster nodes
NetAppActivity Monitor - NetApp\Outage FilesNumber of outage (resilience) files processed
NetAppActivity Monitor - NetApp\OverloadedNumber of times the agent was overloaded and had to limit the rate of events. This counter may increase from time to time when processing large batches of events. But if it keeps increasing, it is a sure sign that the agent is not coping with the load. Consider moving some SVMs to another agent or spreading the load from one SVM across multiple agents.
VNX, Isilon, UnityActivity Monitor - Dell\Events ReceivedNumber of events received from CEE
VNX, Isilon, UnityActivity Monitor - Dell\Events Received/secRate at which events are received from CEE
VNX, Isilon, UnityActivity Monitor - Dell\Events ReportedNumber of events passed the filters and being reported to outputs
VNX, Isilon, UnityActivity Monitor - Dell\Events Reported/secRate at which events are reported to outputs
VNX, Isilon, UnityActivity Monitor - Dell\Queue SizeNumber of events received from CEE and waiting in queue to be processed
VNX, Isilon, UnityActivity Monitor - Dell\Receive ThrottlingDelay, in milliseconds, introduced to manage the queue
OutputsActivity Monitor - Outputs\Events ReportedTotal number of events reported
OutputsActivity Monitor - Outputs\Events Reported/secRate at which events are reported
OutputsActivity Monitor - Outputs\Events Reported to FilesTotal number of events reported to log files
OutputsActivity Monitor - Outputs\Events Reported to SyslogTotal number of events reported to syslog servers
OutputsActivity Monitor - Outputs\Events Reported to AMQPTotal number of events reported to AMQP servers (not used currently)
OutputsActivity Monitor - Outputs\Resolved SIDsNumber of attempts, both successful and failed, to resolve SIDs to names
OutputsActivity Monitor - Outputs\Resolved SIDs/secRate at which SIDs are resolved to names
OutputsActivity Monitor - Outputs\Resolved SIDs FailuresNumber of failed attempts to resolve SIDs to names
OutputsActivity Monitor - Outputs\Resolved SIDs Avg TimeThe moving average length of time, in microseconds, per a SID to name translation
OutputsActivity Monitor - Outputs\Resolved SIDs Max TimeThe moving maximum length of time, in microseconds, per a SID to name translation
OutputsActivity Monitor - Outputs\Translated UIDsNumber of attempts, both successful and failed, to translate UIDs to SIDs
OutputsActivity Monitor - Outputs\Translated UIDs/secRate at which UIDs are translated to SIDs
OutputsActivity Monitor - Outputs\Translated UIDs FailuresNumber of failed attempts to translate UIDs to SIDs
OutputsActivity Monitor - Outputs\Translated UIDs Avg TimeThe moving average length of time, in microseconds, per a UID to SID translation
OutputsActivity Monitor - Outputs\Translated UIDs Max TimeThe moving maximum length of time, in microseconds, per a UID to SID translation
OutputsActivity Monitor - Outputs\DNS QueriesNumber of DNS queries, both successful and failed
OutputsActivity Monitor - Outputs\DNS Queries/secRate at which DNS queries are executed
OutputsActivity Monitor - Outputs\DNS Queries FailuresNumber of failed DNS queries
OutputsActivity Monitor - Outputs\DNS Queries Avg TimeThe moving average length of time, in microseconds, per a DNS query
OutputsActivity Monitor - Outputs\DNS Queries Max TimeThe moving maximum length of time, in microseconds, per a DNS query

NOTE: DNS and AD queries typically contribute the most to the processing time. Since the resolution occurs in real time, slow responses can affect throughput (A 100ms DNS response limits the throughput to 10 events per second). Observing average and maximum values of DNS Queries Time, Resolved SIDs Time, and Translated UIDs Time allows you to estimate the response time.

In addition to the Activity Monitor performance counters, it is recommended to use the following performance counters:

CounterNotes
Processor(_Total)% Processor TimeThe percentage of elapsed time that the processor spends to execute a non-Idle thread.
Memory\Available MBytesThe amount of physical memory, in Megabytes, immediately available for allocation to a process or for system use.
Paging File(_Total)% UsageThe percentage of the paging file that is currently in use.
TCPv4\Connections ResetThe rate of reset TCPv4 connections
TCPv4\Segments Received/secThe quantity of segments received via TCPv4 per second.
TCPv4\Segments Retransmitted/SecQuantity of segments retransmitted via TCPv4 per second.
TCPv6\Segments Received/secThe quantity of segments received via TCPv6 per second.
TCPv6\Segments Retransmitted/SecQuantity of segments retransmitted via TCPv6 per second.
Network Interface(*)\Bytes Received/secFrom all network adapters: The rate at which bytes are received.
Network Interface(*)\Bytes Sent/secFrom all network adapters: The rate at which bytes are sent.
Network Interface(*)\Output Queue LengthFrom all network adapters: The length of the output packet queue (in packets).
Network Interface(*)\Packets Received DiscardedFrom all network adapters: The number of inbound packets that were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol.
Network Interface(*)\Packets Received ErrorsFrom all network adapters: The number of inbound packets that contained errors. As a result, the errored packets were not delivered to a higher-layer protocol.
Process(ConfigurationAgent.Grpc.Host)% Processor TimeFor Agent: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(ConfigurationAgent.Grpc.Host)\Elapsed TimeFor Agent: The duration from when the process was started until the time it terminated.
Process(ConfigurationAgent.Grpc.Host)\Handle CountFor Agent: The number of operating system handles the process has opened.
Process(ConfigurationAgent.Grpc.Host)\Thread CountFor Agent: The set of threads that are running in the associated process.
Process(ConfigurationAgent.Grpc.Host)\Private BytesFor Agent: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(ConfigurationAgent.Grpc.Host)\Working SetFor Agent: The associated process's physical memory usage, in bytes.
Process(ConfigurationAgent)% Processor TimeFor Agent version 6.0 and earlier: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(ConfigurationAgent)\Elapsed TimeFor Agent version 6.0 and earlier: The duration from when the process was started until the time it terminated.
Process(ConfigurationAgent)\Handle CountFor Agent version 6.0 and earlier: The number of operating system handles the process has opened.
Process(ConfigurationAgent)\Thread CountFor Agent version 6.0 and earlier: The set of threads that are running in the associated process.
Process(ConfigurationAgent)\Private BytesFor Agent version 6.0 and earlier: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(ConfigurationAgent)\Working SetFor Agent version 6.0 and earlier: The associated process's physical memory usage, in bytes.
Process(SBTService)% Processor TimeFor Windows Monitoring: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(SBTService)\Elapsed TimeFor Windows Monitoring: The duration from when the process was started until the time it terminated.
Process(SBTService)\Handle CountFor Windows Monitoring: The number of operating system handles the process has opened.
Process(SBTService)\Thread CountFor Windows Monitoring: The set of threads that are running in the associated process.
Process(SBTService)\Private BytesFor Windows Monitoring: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(SBTService)\Working SetFor Windows Monitoring: The associated process's physical memory usage, in bytes.
Process(FPolicyServerSvc)% Processor TimeFor NetApp Monitoring: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(FPolicyServerSvc)\Elapsed TimeFor NetApp Monitoring: The duration from when the process was started until the time it terminated.
Process(FPolicyServerSvc)\Handle CountFor NetApp Monitoring: The number of operating system handles the process has opened.
Process(FPolicyServerSvc)\Thread CountFor NetApp Monitoring: The set of threads that are running in the associated process.
Process(FPolicyServerSvc)\Private BytesFor NetApp Monitoring: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(FPolicyServerSvc)\Working SetFor NetApp Monitoring: The associated process's physical memory usage, in bytes.
Process(HitachiService)% Processor TimeFor Hitachi Monitoring: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(HitachiService)\Elapsed TimeFor Hitachi Monitoring: The duration from when the process was started until the time it terminated.
Process(HitachiService)\Handle CountFor Hitachi Monitoring: The number of operating system handles the process has opened.
Process(HitachiService)\Thread CountFor Hitachi Monitoring: The set of threads that are running in the associated process.
Process(HitachiService)\Private BytesFor Hitachi Monitoring: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(HitachiService)\Working SetFor Hitachi Monitoring: The associated process's physical memory usage, in bytes.
Process(CelerraServerSvc)% Processor TimeFor Dell Monitoring: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(CelerraServerSvc)\Elapsed TimeFor Dell Monitoring: The duration from when the process was started until the time it terminated.
Process(CelerraServerSvc)\Handle CountFor Dell Monitoring: The number of operating system handles the process has opened.
Process(CelerraServerSvc)\Thread CountFor Dell Monitoring: The set of threads that are running in the associated process.
Process(CelerraServerSvc)\Private BytesFor Dell Monitoring: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(CelerraServerSvc)\Working SetFor Dell Monitoring: The associated process's physical memory usage, in bytes.
Process(FSACLoggingSvc)% Processor TimeFor Logging Service: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(FSACLoggingSvc)\Elapsed TimeFor Logging Service: The duration from when the process was started until the time it terminated.
Process(FSACLoggingSvc)\Handle CountFor Logging Service: The number of operating system handles the process has opened.
Process(FSACLoggingSvc)\Thread CountFor Logging Service: The set of threads that are running in the associated process.
Process(FSACLoggingSvc)\Private BytesFor Logging Service: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(FSACLoggingSvc)\Working SetFor Logging Service: The associated process's physical memory usage, in bytes.
Process(MonitorService)% Processor TimeFor Other, Different Device Monitoring: The percentage of elapsed time that all of process threads used the processor to execution instructions.
Process(MonitorService)\Elapsed TimeFor Other, Different Device Monitoring: The duration from when the process was started until the time it terminated.
Process(MonitorService)\Handle CountFor Other, Different Device Monitoring: The number of operating system handles the process has opened.
Process(MonitorService)\Thread CountFor Other, Different Device Monitoring: The set of threads that are running in the associated process.
Process(MonitorService)\Private BytesFor Other, Different Device Monitoring: The total amount of memory that a process has allocated, not including memory shared with other processes.
Process(MonitorService)\Working SetFor Other, Different Device Monitoring: The associated process's physical memory usage, in bytes.

Register Performance Counters

The Activity Monitor performance counters are not registered by default and must be registered manually.

Follow the steps to register the Activity Monitor performance counters on each SAM Agent server.

Step 1 – Run cmd.exe as Administrator.

Step 2 – Change current directory to the agent installation folder (C:\Program Files\Netwrix\Activity Monitor\Agent).

cd "C:\Program Files\Netwrix\Activity Monitor\Agent"

Step 3 – Register the performance counters manifest file.

lodctr /M:PerfCounters.man

Expected output: Info: Successfully installed performance counters in C:\Program Files\Netwrix\Activity Monitor\Agent\PerfCounters.man

Step 4 – Restart the services:

sc stop SBFileMonAgentSvc

sc stop FPolicyServerSvc

sc stop CelerraServerSvc

sc stop SBTLoggingSvc

sc start SBFileMonAgentSvc

Collect Performance Data

The performance data can be observed or saved using any tool capable of collecting performance counters. For example, Performance Monitor.

NOTE: The following script is only compatible with PowerShell 5.X and previous versions. Using PowerShell 7.X requires Windows Performance Monitor to be configured to collect performance counters.

Below is a PowerShell script that collects the counters every second and stores them in perfcounters_SERVERNAME_TIMESTAMP.csv files. The expected file size per day is about 50MB.

Run the script on each agent server using the following command:

powershell -file AM.PerfCollect.ps1

To stop the script press Ctrl+C.

Script (save it to AM.PerfCollect.ps1):

$sampleInterval = 1

$maxSamples = 0

$outputFile = "perfcounters_$($env:COMPUTERNAME)_$(Get-Date -Format "yyyy_MM_dd_HH_mm_ss").csv"

$counters =

@(

"\Processor(_Total)\% Processor Time"

,"\Memory\Available MBytes"

,"\Paging File(_Total)\% Usage"

,"\TCPv4\Connections Reset"

,"\TCPv4\Segments Received/sec"

,"\TCPv4\Segments Retransmitted/Sec"

,"\TCPv6\Connections Reset"

,"\TCPv6\Segments Received/sec"

,"\TCPv6\Segments Retransmitted/Sec"

,"\Network Interface(*)\Bytes Received/sec"

,"\Network Interface(*)\Bytes Sent/sec"

,"\Network Interface(*)\Output Queue Length"

,"\Network Interface(*)\Packets Received Discarded"

,"\Network Interface(*)\Packets Received Errors"

,"\Activity Monitor - NetApp\Events Received"

,"\Activity Monitor - NetApp\Events Received/sec"

,"\Activity Monitor - NetApp\Events Reported"

,"\Activity Monitor - NetApp\Events Reported/sec"

,"\Activity Monitor - NetApp\Session Negotiated"

,"\Activity Monitor - NetApp\Active Connections"

,"\Activity Monitor - NetApp\Outage Files"

,"\Activity Monitor - Dell\Events Received"

,"\Activity Monitor - Dell\Events Received/sec"

,"\Activity Monitor - Dell\Events Reported"

,"\Activity Monitor - Dell\Events Reported/sec"

,"\Activity Monitor - Dell\Queue Size"

,"\Activity Monitor - Dell\Receive Throttling"

,"\Process(FPolicyServerSvc)\% Processor Time"

,"\Process(FPolicyServerSvc)\Elapsed Time"

,"\Process(FPolicyServerSvc)\Handle Count"

,"\Process(FPolicyServerSvc)\Thread Count"

,"\Process(FPolicyServerSvc)\Private Bytes"

,"\Process(FPolicyServerSvc)\Working Set"

,"\Process(FSACLoggingSvc)\% Processor Time"

,"\Process(FSACLoggingSvc)\Elapsed Time"

,"\Process(FSACLoggingSvc)\Handle Count"

,"\Process(FSACLoggingSvc)\Thread Count"

,"\Process(FSACLoggingSvc)\Private Bytes"

,"\Process(FSACLoggingSvc)\Working Set"

,"\Process(CelerraServerSvc)\% Processor Time"

,"\Process(CelerraServerSvc)\Elapsed Time"

,"\Process(CelerraServerSvc)\Handle Count"

,"\Process(CelerraServerSvc)\Thread Count"

,"\Process(CelerraServerSvc)\Private Bytes"

,"\Process(CelerraServerSvc)\Working Set"

)

$variables = @{

SampleInterval = $sampleInterval

Counter = $counters

}

if ($maxSamples -eq 0) {

$variables.Add("Continuous", 1)}

else {

$variables.Add("MaxSamples", "$maxSamples")

}

Write-Host "Collecting performance counters to $outputFile... Press Ctrl+C to stop."

Get-Counter @variables | Export-Counter -FileFormat csv -Path $outputFile -Force

Unregister Performance Counters

When performance monitoring is not needed anymore, unregister the Activity Monitor performance counters.

Follow the steps to unregister the Activity Monitor performance counters on each SAM Agent server.

Step 1 – Run cmd.exe as Administrator.

Step 2 – Change current directory to the agent installation folder.

cd "C:\Program Files\Netwrix\Activity Monitor\Agent"

Step 3 – Unregister the performance counters manifest file.

unlodctr /M:PerfCounters.man

Expected output: Info: Successfully uninstalled the performance counters from the counter definition XML file PerfCounters.man.

Step 4 – Restart the services:

sc stop SBFileMonAgentSvc

sc stop FPolicyServerSvc

sc stop CelerraServerSvc

sc stop SBTLoggingSvc

sc start SBFileMonAgentSvc

Once the services have been restarted, the Activity Monitor performance counters are unregistered.