DNS 2003 Zone Resolution Monitor

Microsoft.Windows.DNSServer.2003.Monitor.ZoneResolution (UnitMonitor)

Knowledge Base article:

Summary

This monitor performs test lookups against the local server to determine it's availability. The following command is issued for each host/server combination:

nslookup -querytype=ns <zone name> <server>

where "zonename" is the name of the zone being being resolved and "server" is the IP of the DNS server interface.

Each address that DNS is listening on will be tested with each specified host address, and any failure will result in an error state for the monitor. A success is defined by a successful result on all tests.

Configuration

The behavior of this monitor may be modified with an override setting the following parameters

Interval Seconds

The number of seconds between executions of the test. If this value is set too low, it could result in excessive overhead against the DNS service. If it is set too high, an error condition may not be detected on time to meet SLA. Default setting is 900 seconds (15 minutes).

Sync Time

This parameter is used to synchronize the script execution at a specified time with the following format: hh:mm. Default setting is an empty string; it means the synchronization is not enabled.

Timeout Seconds

This parameter is used to specify the script timeout value in seconds. If the script can’t be completed before timeout occurs, an error event will be generated in the event log and script execution will be terminated. Default setting is 360 seconds (10 minutes).

Host

This parameter is used to specify the DNS host names to be resolved. You may provide more than one DNS host names and use comma as the delimiter. An independent test will be performed for each host name. Designed to resolve the name of zone itself by default.

Query Type

Specifies the query type to be used by nslookup.

Debug Flag

If Debug Flag is True, the script will log a Windows event on the agent computer for every test it performs. You may turn the detailed logging on by setting the override debug key to be true, then all nslookup commands executed by the script and their output will be inserted into the event log. These events can also be browsed on the Script Detail Events View.

Element properties:

TargetMicrosoft.Windows.DNSServer.2003.Zone
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.DNSServer.Library.NSLookupAvailability
RemotableTrue
AccessibilityInternal
Alert Message
DNS 2003 Monitor Zone Resolution Alert
Zone {0} on DNS Server {1} is not responding to queries.
RunAsMicrosoft.Windows.DNSServer.Library.ActionAccount

Source Code:

<UnitMonitor ID="Microsoft.Windows.DNSServer.2003.Monitor.ZoneResolution" Accessibility="Internal" Enabled="onEssentialMonitoring" Target="Microsoft.Windows.DNSServer.2003.Zone" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" RunAs="DNS!Microsoft.Windows.DNSServer.Library.ActionAccount" TypeID="DNS!Microsoft.Windows.DNSServer.Library.NSLookupAvailability" ConfirmDelivery="true">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.DNSServer.2003.Monitor.ZoneResolution_AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="DNS!Microsoft.Windows.DNSServer.Library.Zone"]/ZoneName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="DNS!Microsoft.Windows.DNSServer.Library.Server"]/Name$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UIGeneratedOpStateIdb801dc5127f848aeb00e7a4b6b8571e5" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="UIGeneratedOpStateId168263e8ab0a4a46b613d1f18b8b860c" MonitorTypeStateID="Failure" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>$Target/Property[Type="DNS!Microsoft.Windows.DNSServer.Library.Zone"]/Interval$</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>360</TimeoutSeconds>
<Host>$Target/Property[Type="DNS!Microsoft.Windows.DNSServer.Library.Zone"]/ZoneName$</Host>
<Server>$Target/Host/Property[Type="DNS!Microsoft.Windows.DNSServer.Library.Server"]/ListeningIP$</Server>
<QueryType>ns</QueryType>
<DebugFlag>false</DebugFlag>
</Configuration>
</UnitMonitor>