DNS Process Monitor

Microsoft.Windows.Server.2012.AD.PerformanceEssentialServices.DNS.Monitor (UnitMonitor)

Monitors the CPU utilization of the dns process.

Knowledge Base article:

Summary

DNS Process Monitor. The DNS process for Active Directory Domain Services Integrated DNS is consuming a lot of CPU resources.

If the overall CPU utilization on the server is too high, DNS requests may be delayed.

Causes

Possible causes include the following:

Resolutions

View the overall system performance of the machine to determine if it needs additional resources.

Add additional domain controllers to help load-balance the load.

Ensure that there are a sufficient number of DCs hosting DNS.

External

Element properties:

TargetMicrosoft.Windows.Server.2012.AD.DomainController.DNS
Parent MonitorSystem.Health.PerformanceState
CategoryCustom
EnabledTrue
Instance NameProcess
Counter Name\% Processor Time
Frequency300
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.AverageThreshold
RemotableTrue
AccessibilityPublic
Alert Message
The DNS process has exceeded the processor utilization threshold.
Average CPU utilization for the DNS process over multiple samples: {3} \%
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.2012.AD.PerformanceEssentialServices.DNS.Monitor" Accessibility="Public" Enabled="true" Target="AD2012Core!Microsoft.Windows.Server.2012.AD.DomainController.DNS" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.AverageThreshold" ConfirmDelivery="false">
<Category>Custom</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.2012.AD.PerformanceEssentialServices.DNS.Monitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data[Default='']/Context/InstanceName$</AlertParameter1>
<AlertParameter2>$Data[Default='']/Context/ObjectName$</AlertParameter2>
<AlertParameter3>$Data[Default='']/Context/CounterName$</AlertParameter3>
<AlertParameter4>$Data[Default='']/Context/Value$</AlertParameter4>
<AlertParameter5>$Data[Default='']/Context/TimeSampled$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="DNSLoadOk" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="DNSLoadError" MonitorTypeStateID="OverThreshold" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% Processor Time</CounterName>
<ObjectName>Process</ObjectName>
<InstanceName>dns</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>300</Frequency>
<Threshold>80</Threshold>
<NumSamples>10</NumSamples>
</Configuration>
</UnitMonitor>