Sidebar

manual:discovery:low_level_discovery:wmi

8 Discovery using WMI queries

Overview

WMI is a powerful interface in Windows that can be used for retrieving various information about Windows components, services, state and software installed.

It can be used for physical disk discovery and their performance data collection, network interface discovery, Hyper-V guest discovery, monitoring Windows services and many other things in Windows OS.

This type of low-level discovery is done using WQL queries whose results get automatically transformed into a JSON object suitable for low-level discovery.

Item key

The item to use in the discovery rule is

wmi.getall[<namespace>,<query>]

This item transforms the query result into a JSON array. For example:

select * from Win32_DiskDrive where Name like '%PHYSICALDRIVE%'

may return something like this:

[
	{
		"DeviceID" : "\\.\PHYSICALDRIVE0",
		"BytesPerSector" : 512,
		"Capabilities" : [
			3,
			4
		],
		"CapabilityDescriptions" : [
			"Random Access",
			"Supports Writing"
		],
		"Caption" : "VBOX HARDDISK ATA Device",
		"ConfigManagerErrorCode" : "0",
		"ConfigManagerUserConfig" : "false",
		"CreationClassName" : "Win32_DiskDrive",
		"Description" : "Disk drive",
		"FirmwareRevision" : "1.0",
		"Index" : 0,
		"InterfaceType" : "IDE"
	},
	{
		"DeviceID" : "\\.\PHYSICALDRIVE1",
		"BytesPerSector" : 512,
		"Capabilities" : [
			3,
			4
		],
		"CapabilityDescriptions" : [
			"Random Access",
			"Supports Writing"
		],
		"Caption" : "VBOX HARDDISK ATA Device",
		"ConfigManagerErrorCode" : "0",
		"ConfigManagerUserConfig" : "false",
		"CreationClassName" : "Win32_DiskDrive",
		"Description" : "Disk drive",
		"FirmwareRevision" : "1.0",
		"Index" : 1,
		"InterfaceType" : "IDE"
	}
]

This item is supported since Zabbix Windows agent 4.4.

Low-level discovery macros

Even though no low-level discovery macros are created in the returned JSON, these macros can be defined by the user as an additional step, using the custom LLD macro functionality with JSONPath pointing to the discovered values in the returned JSON.

The macros then can be used to create item, trigger, etc prototypes.