Asked by:
Eventid 10801 Performance data could not be inserted DNS 2016

Question
-
MP Name: Microsoft Windows Server 2016 DNS Monitoring
MP Version:10.0.6.4
Rule name: Microsoft.Windows.DNSServer.2016.Zone.DiscoveryI get this warning in the operations manager eventlog from 3 different agents from 3 different domains:
Microsoft.EnterpriseManagement.Common.DiscoveryDataInvalidClassPropertyValueException,The class property value specified in the discovery data item is not valid. The value needs to adhere to the class.
Class property name: Microsoft.Windows.DNSServer.2016.Zone.UseWINS
Class property value:
Rule ID: d0a1e6f3-3398-7b9a-d35b-ab5712f2d77eSo the value 'UseWINS' is empty while this is a key property of the class 'Microsoft.Windows.DNSServer.2016.Zone'
To me this looks like an error in the MP, or is it something that is wrongly configured on the dns side?
Ronald
Monday, July 23, 2018 6:12 AM
All replies
-
According to systemcenter.wiki, it is not a key property of the DNS Zone class.
But still, having it empty is not normal... If you manually run
Get-DnsServerZone | where $_.ZoneType -ne "Forwarder" -and $_.IsAutoCreated -eq $false} | fl zonename,iswinsenabled
does it return a value for the iswinsenabled property?
- Edited by CyrAz Monday, July 23, 2018 9:31 AM
Monday, July 23, 2018 9:30 AM -
Your right, i don't know why i thought it was a key value.
Anyhow, i ran the powershell and if you have a stub zone in your dns, that's the one that doesn't return a value for the wins, and all 3 errors i got are on the sub zones, they also don't have a wins tab in the gui of course.
so it seems like an issue on the stubzones in the pack?
Ronald
Monday, July 23, 2018 11:55 AM -
I guess so... if you look at the script used for the discovery, it doesn't filter out stub zones and so it fails with the error you get when there is one...
$Zones = Get-DnsServerZone | where {$_.ZoneType -ne "Forwarder" -and $_.IsAutoCreated -eq $false} foreach ($Zone in $Zones) { if ([String]::IsNullOrEmpty($Zone.ZoneName)) { continue } if ([string]::Equals($Script:DnsGlobalZoneName,$Zone.ZoneName,[System.StringComparison]::InvariantCultureIgnoreCase) ) { $GlobalZone = Get-DnsServerGlobalNameZone if ($null -eq $GlobalZone) { continue } $IsGlobalZone = $GlobalZone.Enable $GlobalOverLocal = $GlobalZone.GlobalOverLocal if ($null -eq $IsGlobalZone) { $IsGlobalZone = $false } if ($null -eq $GlobalOverLocal) { $GlobalOverLocal = "Local Zone First" } else { $GlobalOverLocal = $GlZone[$GlobalOverLocal] if ($null -eq $GlobalOverLocal) { $GlobalOverLocal = "Local Zone First" } } $ZoneInstance = $Script:discoveryData.CreateClassInstance($Script:DnsGlobalZoneTypeName) $ZoneInstance.AddProperty($Script:DnsGlobalZoneIsActiveProp,$IsGlobalZone) $ZoneInstance.AddProperty($Script:DnsGlobalZoneQueryOrderProp,$GlobalOverLocal) } else { $ZoneInstance = $Script:discoveryData.CreateClassInstance($Script:DnsZoneTypeName) } $ZoneTransferType = Get-ZoneTransferType -ZoneType $Zone.SecureSecondaries $ZoneMasterServers = Get-ZoneMasterServers -MasterServers $Zone.MasterServers -separator $Script:DnsDelimiter -MaxSize $Script:DnsMasterServersMaxSize $ZoneNameServers = Get-NameServers -ZoneName $Zone.ZoneName -separator $Script:DnsDelimiter -MaxSize $Script:DnsMasterServersMaxSize $PrimaryServer = Get-ZonePrimaryServer -ZoneName $Zone.ZoneName $SysDispName = "$Script:DnsZoneDisplayName " + $Zone.ZoneName + " $Script:DnsZoneDisp $Script:ServerName" if ($Script:DnsZoneSysDispNameMaxSize -lt $SysDispName.Length) { $SysDispName = $SysDispName.Substring(0,$Script:DnsZoneSysDispNameMaxSize) } $IsSigned = $false if ($null -ne $Zone.IsSigned) { $IsSigned = $Zone.IsSigned } $ZoneInstance.AddProperty($Script:CompNameProp,$Script:ServerName) $ZoneInstance.AddProperty($Script:DNSNameProp, $Script:ServerName) $ZoneInstance.AddProperty($Script:DnsZoneNameProp,$Zone.ZoneName) $ZoneInstance.AddProperty($Script:DnsZoneTypeProp,$Zone.ZoneType) $ZoneInstance.AddProperty($Script:DnsZoneReverseProp,$Zone.IsReverseLookupZone) $ZoneInstance.AddProperty($Script:DnsZoneADintegratedProp,$Zone.IsDsIntegrated) $ZoneInstance.AddProperty($Script:DnsZoneDynUpdProp,$Zone.DynamicUpdate) $ZoneInstance.AddProperty($Script:DnsZoneTransferProp,$ZoneTransferType) $ZoneInstance.AddProperty($Script:DnsZonePrimaryServerProp,$PrimaryServer) $ZoneInstance.AddProperty($Script:DnsZoneFileNameProp,$Zone.ZoneFile) $ZoneInstance.AddProperty($Script:DnsZoneWinsProp,$Zone.IsWinsEnabled) $ZoneInstance.AddProperty($Script:DnsZoneHostNameProp,$Script:ServerName) $ZoneInstance.AddProperty($Script:DnsZoneNameServersProp,$ZoneNameServers) $ZoneInstance.AddProperty($Script:DnsZoneMasterServersProp,$ZoneMasterServers) $ZoneInstance.AddProperty($Script:DnsZoneIsSignedProp,$IsSigned) $ZoneInstance.AddProperty($Script:SysDisplayNameProp,$SysDispName) $Script:discoveryData.AddInstance($ZoneInstance) } $Script:discoveryData } catch { $ErrorMessage = Get-ErrorMessage -Exception $_.Exception Set-Error -ScriptName $Script:SCRIPT_NAME -EventLevel $Script:EventError -EventType $Script:EVENT_TYPE_ERROR -ErrorMessage $ErrorMessage Set-EmptyDiscoveryData }
- Edited by CyrAz Monday, July 23, 2018 12:10 PM
Monday, July 23, 2018 12:08 PM -
I can't get your script to work, i see it missing a try above but anyway, i guess i'll start a ms case for it to get it fixed in a new version.
Thx for your help!
Ronald
Monday, July 23, 2018 12:19 PM -
That's not "my script" but just an extract of the discovery script to show that it doesn't filter out stub zonesMonday, July 23, 2018 2:06 PM