locked
Eventid 10801 Performance data could not be inserted DNS 2016 RRS feed

  • Question

  • MP Name: Microsoft Windows Server 2016 DNS Monitoring
    MP Version:10.0.6.4
    Rule name: Microsoft.Windows.DNSServer.2016.Zone.Discovery

    I 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-ab5712f2d77e

    So 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 zones
    Monday, July 23, 2018 2:06 PM