Discovery of Hyper-V servers does not populate the hyper_v_instance table

chrisdimo
Kilo Contributor

We are implementing Discovery into our environment ( Running Dublin ), and even though Discovery picks up correctly our Hyper-V servers it does not seem to detect the Virtual Machines running on them.   The Wintel guys mentioned that the Hyper-V systems are running a "core install" of Windows. So wondering if perhaps some exe's required by probes are not present perhaps.

Any ideas would be greatly appreciated.

17 REPLIES 17

It looks like this probe is not looking in the new paths for the data.


Did you add the 21 new WMI Fields to the probe Hyper-V - Virtual Machines?



Listed below were each of the probes you need to go into and the WMI Field(s) you need to add to them



Probe: Windows - Classify


root\virtualization\v2\Msvm_ComputerSystem.Name



Probe: Hyper-V - Virtual Networks


root\virtualization\v2\Msvm_VirtualSwitch.Name


root\virtualization\v2\Msvm_VirtualSwitch.ElementName


root\virtualization\v2\Msvm_ActiveConnection.Dependent


root\virtualization\v2\Msvm_ActiveConnection.Antecedent



Probe: Hyper-V Resource Pools


root\virtualization\v2\Msvm_ResourcePool.ResourceSubType


root\virtualization\v2\Msvm_ResourcePool.Name


root\virtualization\v2\Msvm_ResourcePool.InstanceID


root\virtualization\v2\Msvm_ResourcePool.Capacity


root\virtualization\v2\Msvm_ResourcePool.AllocationUnits



Probe: Hyper-V - Virtual Machines


root\virtualization\v2\Msvm_VirtualSystemSettingData.SystemName


root\virtualization\v2\Msvm_VirtualSystemSettingData.ChassisSerialNumber


root\virtualization\v2\Msvm_VirtualSystemSettingData.BIOSSerialNumber


root\virtualization\v2\Msvm_VirtualSystemSettingData.BIOSGUID


root\virtualization\v2\Msvm_VirtualSystemSettingData.BaseBoardSerialNumber


root\virtualization\v2\Msvm_SyntheticEthernetPortSettingData.InstanceID


root\virtualization\v2\Msvm_SyntheticEthernetPortSettingData.ElementName


root\virtualization\v2\Msvm_ProcessorSettingData.VirtualQuantity


root\virtualization\v2\Msvm_ProcessorSettingData.InstanceID


root\virtualization\v2\Msvm_MemorySettingData.VirtualQuantity


root\virtualization\v2\Msvm_MemorySettingData.InstanceID


root\virtualization\v2\Msvm_MemorySettingData.AllocationUnits


root\virtualization\v2\Msvm_LogicalDisk.SystemName


root\virtualization\v2\Msvm_LogicalDisk.NumberOfBlocks


root\virtualization\v2\Msvm_LogicalDisk.ElementName


root\virtualization\v2\Msvm_LogicalDisk.BlockSize


root\virtualization\v2\Msvm_ComputerSystem.TimeOfLastStateChange


root\virtualization\v2\Msvm_ComputerSystem.Name


root\virtualization\v2\Msvm_ComputerSystem.EnabledState


root\virtualization\v2\Msvm_ComputerSystem.ElementName


root\virtualization\v2\Msvm_ComputerSystem.Description


A quick follow up on this after running into a few more issues.



The WMI path root\virtualization\v2\Msvm_VirtualSystemSettingData.SystemName is actually empty and will cause your Hyper-V record to be incorrectly linked to the first record in cmdb_ci_computer without a serial number or with a null serial on the serial number table.




There is a fix for this which is two fold.


Instead of using the above WMI path, use root\virtualization\v2\Msvm_VirtualSystemSettingData.InstanceID


With this change, we need to modify the Sensor. I would suggest making a copy of the OOB one, then deactivating the original.




Look for this line of code


//Grab serial numbers


      var vssList = g_array_util.ensureArray(result.Msvm_VirtualSystemSettingData)


      for(var i = 0; i < vssList.length; i++) {


    var vss = vssList[i];


    var ciObj = objectDataMap[vss.SystemName];



Replace it with


//Grab serial numbers


      var vssList = g_array_util.ensureArray(result.Msvm_VirtualSystemSettingData), ciObj;


      for(var i = 0; i < vssList.length; i++) {


    var vss = vssList[i];


      if (vss.SystemName) {


  ciObj = objectDataMap[vss.SystemName];


      }


      //Handle 2012-R2 DC UUID locations, since SystemName doesn't exist


      else if (vss.InstanceID) {


  vss.InstanceID = vss.InstanceID.replace("Microsoft:", "");


  ciObj = objectDataMap[vss.InstanceID];  


      }



As stated earlier, Service Now Support is aware of the issue and I've kept them up to date on the issues and fixes, so I'm sure this will be fixed in a near future release.


Hi,



I think I'm having the same issue as per my post here: Hyper-V discovery not working



I tried to scan SCVMM and apart from finding both nodes, it did nothing else. On further conversation with ServiceNow, they say Hyper-V 2012 is not supported in Eureka or any other newer versions.



We did see the following in the XML payload <results probe_time="9610"><result><Warning>Invalid class </Warning>


The other post indicates SN doesn't support it, but doesn't specify what. Was there something from a HI ticket with more info?


Doug Schulze could you chime in here?


Hi,



The HI ticket stated.


"I have investigated a bit more and it looks like servicenow does not support server 2012 Hyper-V discoveries at this stage.



There are two options here:


1. Create an enhancement request so that this feature will be implemented in the future releases of the product or/and


2. Take a look at https://community.servicenow.com/thread/166195 and decided for yourself if the implementation which is provided there will be feasible for you. Be advised that servicenow will not support this implementation or any negative consequence this might have in the future.



Also, I can create a documentation request so that it is clearly defined in the wiki that Hyper-V on 2012 server is not currently supported."