DNS 2008 External Resolution Monitor

Microsoft.Windows.DNSServer.2008.Monitor.ExternalResolution (UnitMonitor)

Knowledge Base article:

Summary

This monitor performs test lookups against external addresses. The following command is issued for each host/server combination:

nslookup -querytype=ns <host> <server>

where "host" is the external address 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. While the monitoring script will not validate if the host address is internal or external, it is designed to only check the external address.

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.

Causes

This monitor tests the server's ability to resolve an external address. A failure may indicate a network problem or a problem with the server's forwarders or root hints.

Resolutions

Verify that the server has access to the outside network. If the server uses forwarders, check their health status. If one or more forwarders are also not available, it may indicate a network problem or that the forwarder is unavailable. Try manually performing an nslookup with an alternate host address to verify that the problem is not with the specific address.

Element properties:

TargetMicrosoft.Windows.DNSServer.2008.Server
Parent MonitorMicrosoft.Windows.DNSServer.2008.Monitor.ResolutionHealthRollup
CategoryPerformanceCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.DNSServer.Library.NSLookupAvailability
RemotableTrue
AccessibilityInternal
Alert Message
DNS 2008 Server External Addresses Resolution Alert
DNS Server {0} cannot resolve external address {1}.
RunAsMicrosoft.Windows.DNSServer.Library.ActionAccount

Source Code:

<UnitMonitor ID="Microsoft.Windows.DNSServer.2008.Monitor.ExternalResolution" Accessibility="Internal" Enabled="onEssentialMonitoring" Target="Microsoft.Windows.DNSServer.2008.Server" ParentMonitorID="Microsoft.Windows.DNSServer.2008.Monitor.ResolutionHealthRollup" Remotable="true" Priority="Normal" RunAs="DNS!Microsoft.Windows.DNSServer.Library.ActionAccount" TypeID="DNS!Microsoft.Windows.DNSServer.Library.NSLookupAvailability" ConfirmDelivery="false">
<Category>PerformanceCollection</Category>
<AlertSettings AlertMessage="Microsoft.Windows.DNSServer.2008.Monitor.ExternalResolution_AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="DNS!Microsoft.Windows.DNSServer.Library.Server"]/Name$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='BestHost']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="Failure" MonitorTypeStateID="Failure" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>360</TimeoutSeconds>
<Host>www.microsoft.com</Host>
<Server>$Target/Property[Type="DNS!Microsoft.Windows.DNSServer.Library.Server"]/ListeningIP$</Server>
<QueryType>ns</QueryType>
<DebugFlag>false</DebugFlag>
</Configuration>
</UnitMonitor>