Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/vmware?at=release/7.0
VMware
Overview
This template set is designed for the effortless deployment of VMware vCenter and ESX hypervisor monitoring and doesn't require any external scripts.
- The template "VMware Guest" is used in discovery and normally should not be manually linked to a host.
- The template "VMware Hypervisor" can be used in discovery as well as manually linked to a host.
For additional information, please see Zabbix documentation on VM monitoring.
Requirements
Zabbix version: 7.0 and higher.
Tested versions
This template has been tested on:
- VMware 6.0, 6.7, 7.0, 8.0
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
- Compile Zabbix server with the required options (
--with-libxml2
and--with-libcurl
) - Set the
StartVMwareCollectors
option in the Zabbix server configuration file to "1" or more - Create a new host
- If you want to use a separate user for monitoring, make sure that the user is a member of the
SystemConfiguration.ReadOnly
andvStatsGroup
groups Set the host macros (on the host or template level) required for VMware authentication:
{$VMWARE.URL}
{$VMWARE.USERNAME}
{$VMWARE.PASSWORD}
- Link the template to the host created earlier
Note: To enable discovery of hardware sensors of VMware hypervisors, set the macro {$VMWARE.HV.SENSOR.DISCOVERY}
to the value true
on the discovered host level.
Additional resources:
- How to create a custom performance counter
- How to get all supported counters and generate a path for the custom performance counter
Macros used
Name | Description | Default |
---|---|---|
{$VMWARE.URL} | VMware service (vCenter or ESX hypervisor) SDK URL (https://servername/sdk). |
|
{$VMWARE.USERNAME} | VMware service user name. |
|
{$VMWARE.PASSWORD} | VMware service |
|
{$VMWARE.PROXY} | Sets the HTTP proxy for script items. If this parameter is empty, then no proxy is used. |
|
{$VMWARE.HV.SENSOR.DISCOVERY} | Set "true"/"false" to enable or disable monitoring of hardware sensors. |
false |
{$VMWARE.HV.SENSOR.DISCOVERY.NAME.MATCHES} | Sets the regex string of hardware sensor names to be allowed in discovery. |
.* |
{$VMWARE.HV.SENSOR.DISCOVERY.NAME.NOT_MATCHES} | Sets the regex string of hardware sensor names to be ignored in discovery. |
CHANGE_IF_NEEDED |
{$VMWARE.VM.POWERSTATE} | Possibility to filter out VMs by power state. |
poweredOn|poweredOff|suspended |
{$VMWARE.DATASTORE.SPACE.CRIT} | The critical threshold of the datastore free space. |
10 |
{$VMWARE.DATASTORE.SPACE.WARN} | The warning threshold of the datastore free space. |
20 |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Get alarms | Get alarm status. |
Simple check | vmware.alarms.get[{$VMWARE.URL}] |
Event log | Collect VMware event log. See also: https://www.zabbix.com/documentation/7.0/manual/config/items/preprocessing/examples#filtering_vmware_event_log_records |
Simple check | vmware.eventlog[{$VMWARE.URL},skip] |
Full name | VMware service full name. |
Simple check | vmware.fullname[{$VMWARE.URL}] Preprocessing
|
Version | VMware service version. |
Simple check | vmware.version[{$VMWARE.URL}] Preprocessing
|
Get Overall Health VC State | Gets overall health of the system. This item works only with VMware vCenter versions above 6.5. |
Script | vmware.health.get |
Overall Health VC State error check | Data collection error check. |
Dependent item | vmware.health.check Preprocessing
|
Overall Health VC State | VMware Overall health of system. One of the following: - Gray: No health data is available for this service. - Green: Service is healthy. - Yellow: The service is in a healthy state, but experiencing some level of problems. - Orange: The service health is degraded. The service might have serious problems. - Red: The service is unavailable, not functioning properly, or will stop functioning soon. - Not available: The health status is unavailable (not supported on the vCenter or ESXi side). |
Dependent item | vmware.health.state Preprocessing
|
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Failed to get Overall Health VC State | Failed to get data. Check debug log for more information. |
length(last(/VMware/vmware.health.check))>0 |
Warning | |
Overall Health VC State is not Green | One or more components in the appliance might be in an unusable status and the appliance might soon become unresponsive. |
last(/VMware/vmware.health.state)>0 and last(/VMware/vmware.health.state)<>6 |
Average |
LLD rule VMware alarm discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
VMware alarm discovery | Discovery of alarms. |
Dependent item | vmware.alarms.discovery Preprocessing
|
Item prototypes for VMware alarm discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
{#VMWARE.ALARMS.NAME} | VMware alarm status. |
Dependent item | vmware.alarms.status["{#VMWARE.ALARMS.KEY}"] Preprocessing
|
Trigger prototypes for VMware alarm discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
{#VMWARE.ALARMS.NAME} | {#VMWARE.ALARMS.DESC} |
last(/VMware/vmware.alarms.status["{#VMWARE.ALARMS.KEY}"])<>-1 |
Not_classified |
LLD rule VMware cluster discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
VMware cluster discovery | Discovery of clusters. |
Simple check | vmware.cluster.discovery[{$VMWARE.URL}] |
Item prototypes for VMware cluster discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Status of [{#CLUSTER.NAME}] cluster | VMware cluster status. One of the following: - Gray: Unknown; - Green: OK; - Yellow: It might have a problem; - Red: It has a problem. |
Simple check | vmware.cluster.status[{$VMWARE.URL},{#CLUSTER.NAME}] |
Trigger prototypes for VMware cluster discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
The [{#CLUSTER.NAME}] status is Red | A cluster enabled for DRS becomes invalid (red) when the tree is no longer internally consistent, that is, when resource constraints are not observed. See also: https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-resource-management/GUID-C7417CAA-BD38-41D0-9529-9E7A5898BB12.html |
last(/VMware/vmware.cluster.status[{$VMWARE.URL},{#CLUSTER.NAME}])=3 |
High | |
The [{#CLUSTER.NAME}] status is Yellow | A cluster becomes overcommitted (yellow) when the tree of resource pools and virtual machines is internally consistent but the cluster does not have the capacity to support all the resources reserved by the child resource pools. See also: https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-resource-management/GUID-ED8240A0-FB54-4A31-BD3D-F23FE740F10C.html |
last(/VMware/vmware.cluster.status[{$VMWARE.URL},{#CLUSTER.NAME}])=2 |
Average | Depends on:
|
LLD rule VMware datastore discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
VMware datastore discovery | Discovery of VMware datastores. |
Simple check | vmware.datastore.discovery[{$VMWARE.URL}] |
Item prototypes for VMware datastore discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Average read IOPS of the datastore [{#DATASTORE}] | IOPS for a read operation from the datastore (milliseconds). |
Simple check | vmware.datastore.read[{$VMWARE.URL},{#DATASTORE},rps] |
Average write IOPS of the datastore [{#DATASTORE}] | IOPS for a write operation to the datastore (milliseconds). |
Simple check | vmware.datastore.write[{$VMWARE.URL},{#DATASTORE},rps] |
Average read latency of the datastore [{#DATASTORE}] | Amount of time for a read operation from the datastore (milliseconds). |
Simple check | vmware.datastore.read[{$VMWARE.URL},{#DATASTORE},latency] |
Free space on datastore [{#DATASTORE}] (percentage) | VMware datastore free space (percentage from the total). |
Simple check | vmware.datastore.size[{$VMWARE.URL},{#DATASTORE},pfree] |
Total size of datastore [{#DATASTORE}] | VMware datastore space in bytes. |
Simple check | vmware.datastore.size[{$VMWARE.URL},{#DATASTORE}] Preprocessing
|
Average write latency of the datastore [{#DATASTORE}] | Amount of time for a write operation to the datastore (milliseconds). |
Simple check | vmware.datastore.write[{$VMWARE.URL},{#DATASTORE},latency] |
Trigger prototypes for VMware datastore discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
[{#DATASTORE}]: Free space is critically low | Datastore free space has fallen below the critical threshold. |
last(/VMware/vmware.datastore.size[{$VMWARE.URL},{#DATASTORE},pfree])<{$VMWARE.DATASTORE.SPACE.CRIT} |
High | |
[{#DATASTORE}]: Free space is low | Datastore free space has fallen below the warning threshold. |
last(/VMware/vmware.datastore.size[{$VMWARE.URL},{#DATASTORE},pfree])<{$VMWARE.DATASTORE.SPACE.WARN} |
Warning | Depends on:
|
LLD rule VMware hypervisor discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
VMware hypervisor discovery | Discovery of hypervisors. |
Simple check | vmware.hv.discovery[{$VMWARE.URL}] |
LLD rule VMware VM discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
VMware VM discovery | Discovery of guest virtual machines. |
Simple check | vmware.vm.discovery[{$VMWARE.URL}] |
VMware Guest
Macros used
Name | Description | Default |
---|---|---|
{$VMWARE.URL} | VMware service (vCenter or ESX hypervisor) SDK URL (https://servername/sdk). |
|
{$VMWARE.USERNAME} | VMware service user name. |
|
{$VMWARE.PASSWORD} | VMware service |
|
{$VMWARE.VM.FS.PFREE.MIN.WARN} | VMware guest free space threshold for the warning trigger. |
20 |
{$VMWARE.VM.FS.PFREE.MIN.CRIT} | VMware guest free space threshold for the critical trigger. |
10 |
{$VMWARE.VM.FS.TRIGGER.USED} | VMware guest used free space trigger. Set to "1"/"0" to enable or disable the trigger. |
0 |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Snapshot consolidation needed | Displays whether snapshot consolidation is needed or not. One of the following: - True; - False. |
Simple check | vmware.vm.consolidationneeded[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
Snapshot count | Snapshot count of the guest VM. |
Dependent item | vmware.vm.snapshot.count Preprocessing
|
Get snapshots | Snapshots of the guest VM. |
Simple check | vmware.vm.snapshot.get[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
Snapshot latest date | Latest snapshot date of the guest VM. |
Dependent item | vmware.vm.snapshot.latestdate Preprocessing
|
VM state | VMware virtual machine state. One of the following: - Not running; - Resetting; - Running; - Shutting down; - Standby; - Unknown. |
Simple check | vmware.vm.state[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
VMware Tools status | Monitoring of VMware Tools. One of the following: - Guest tools executing scripts: VMware Tools is starting. - Guest tools not running: VMware Tools is not running. - Guest tools running: VMware Tools is running. |
Simple check | vmware.vm.tools[{$VMWARE.URL},{$VMWARE.VM.UUID},status] Preprocessing
|
VMware Tools version | Monitoring of the VMware Tools version. |
Simple check | vmware.vm.tools[{$VMWARE.URL},{$VMWARE.VM.UUID},version] Preprocessing
|
Cluster name | Cluster name of the guest VM. |
Simple check | vmware.vm.cluster.name[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
Number of virtual CPUs | Number of virtual CPUs assigned to the guest. |
Simple check | vmware.vm.cpu.num[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
CPU ready | Time that the VM was ready, but unable to get scheduled to run on the physical CPU during the last measurement interval (VMware vCenter/ESXi Server performance counter sampling interval - 20 seconds). |
Simple check | vmware.vm.cpu.ready[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
CPU usage | Current upper-bound on CPU usage. The upper-bound is based on the host the VM is current running on, as well as limits configured on the VM itself or any parent resource pool. Valid while the VM is running. |
Simple check | vmware.vm.cpu.usage[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Datacenter name | Datacenter name of the guest VM. |
Simple check | vmware.vm.datacenter.name[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
Hypervisor name | Hypervisor name of the guest VM. |
Simple check | vmware.vm.hv.name[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
Ballooned memory | The amount of guest physical memory that is currently reclaimed through the balloon driver. |
Simple check | vmware.vm.memory.size.ballooned[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Compressed memory | The amount of memory currently in the compression cache for this VM. |
Simple check | vmware.vm.memory.size.compressed[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Private memory | Amount of memory backed by host memory and not being shared. |
Simple check | vmware.vm.memory.size.private[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Shared memory | The amount of guest physical memory shared through transparent page sharing. |
Simple check | vmware.vm.memory.size.shared[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Swapped memory | The amount of guest physical memory swapped out to the VM's swap device by ESX. |
Simple check | vmware.vm.memory.size.swapped[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Guest memory usage | The amount of guest physical memory that is being used by the VM. |
Simple check | vmware.vm.memory.size.usage.guest[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Host memory usage | The amount of host physical memory allocated to the VM, accounting for the amount saved from memory sharing with other VMs. |
Simple check | vmware.vm.memory.size.usage.host[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Memory size | Total size of configured memory. |
Simple check | vmware.vm.memory.size[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
Power state | The current power state of the VM. One of the following: - Powered off; - Powered on; - Suspended. |
Simple check | vmware.vm.powerstate[{$VMWARE.URL},{$VMWARE.VM.UUID}] Preprocessing
|
Committed storage space | Total storage space, in bytes, committed to this VM across all datastores. |
Simple check | vmware.vm.storage.committed[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Uncommitted storage space | Additional storage space, in bytes, potentially used by this VM on all datastores. |
Simple check | vmware.vm.storage.uncommitted[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Unshared storage space | Total storage space, in bytes, occupied by the VM across all datastores that is not shared with any other VM. |
Simple check | vmware.vm.storage.unshared[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Uptime | System uptime. |
Simple check | vmware.vm.uptime[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Guest memory swapped | Amount of guest physical memory that is swapped out to the swap space. |
Simple check | vmware.vm.guest.memory.size.swapped[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Host memory consumed | Amount of host physical memory consumed for backing up guest physical memory pages. |
Simple check | vmware.vm.memory.size.consumed[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Host memory usage in percent | Percentage of host physical memory that has been consumed. |
Simple check | vmware.vm.memory.usage[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
CPU usage in percent | CPU usage as a percentage during the interval. |
Simple check | vmware.vm.cpu.usage.perf[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
CPU latency in percent | Percentage of time the VM is unable to run because it is contending for access to the physical CPU(s). |
Simple check | vmware.vm.cpu.latency[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
CPU readiness latency in percent | Percentage of time that the virtual machine was ready, but was unable to get scheduled to run on the physical CPU. |
Simple check | vmware.vm.cpu.readiness[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
CPU swap-in latency in percent | Percentage of CPU time spent waiting for a swap-in. |
Simple check | vmware.vm.cpu.swapwait[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Uptime of guest OS | Total time elapsed since the last operating system boot-up (in seconds). |
Simple check | vmware.vm.guest.osuptime[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Snapshot consolidation needed | Snapshot consolidation needed. |
last(/VMware Guest/vmware.vm.consolidationneeded[{$VMWARE.URL},{$VMWARE.VM.UUID}])=0 |
Average | Manual close: Yes |
VM is not running | VMware virtual machine is not running. |
last(/VMware Guest/vmware.vm.state[{$VMWARE.URL},{$VMWARE.VM.UUID}]) <> 2 |
Average | |
VMware Tools is not running | VMware Tools is not running on the VM. |
last(/VMware Guest/vmware.vm.tools[{$VMWARE.URL},{$VMWARE.VM.UUID},status]) = 1 |
Warning | Depends on:
|
VM has been restarted | Uptime is less than 10 minutes. |
(between(last(/VMware Guest/vmware.vm.guest.osuptime[{$VMWARE.URL},{$VMWARE.VM.UUID}]),1,10m)=1 or between(last(/VMware Guest/vmware.vm.uptime[{$VMWARE.URL},{$VMWARE.VM.UUID}]),1,10m)=1) and last(/VMware Guest/vmware.vm.powerstate[{$VMWARE.URL},{$VMWARE.VM.UUID}]) = 1 |
Warning | Manual close: Yes |
LLD rule Network device discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Network device discovery | Discovery of all network devices. |
Simple check | vmware.vm.net.if.discovery[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Item prototypes for Network device discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Number of bytes received on interface [{#IFBACKINGDEVICE}]/[{#IFDESC}] | VMware virtual machine network interface input statistics (bytes per second). |
Simple check | vmware.vm.net.if.in[{$VMWARE.URL},{$VMWARE.VM.UUID},{#IFNAME},bps] |
Number of packets received on interface [{#IFBACKINGDEVICE}]/[{#IFDESC}] | VMware virtual machine network interface input statistics (packets per second). |
Simple check | vmware.vm.net.if.in[{$VMWARE.URL},{$VMWARE.VM.UUID},{#IFNAME},pps] |
Number of bytes transmitted on interface [{#IFBACKINGDEVICE}]/[{#IFDESC}] | VMware virtual machine network interface output statistics (bytes per second). |
Simple check | vmware.vm.net.if.out[{$VMWARE.URL},{$VMWARE.VM.UUID},{#IFNAME},bps] |
Number of packets transmitted on interface [{#IFBACKINGDEVICE}]/[{#IFDESC}] | VMware virtual machine network interface output statistics (packets per second). |
Simple check | vmware.vm.net.if.out[{$VMWARE.URL},{$VMWARE.VM.UUID},{#IFNAME},pps] |
Network utilization on interface [{#IFBACKINGDEVICE}]/[{#IFDESC}] | VMware virtual machine network utilization (combined transmit and receive rates) during the interval. |
Simple check | vmware.vm.net.if.usage[{$VMWARE.URL},{$VMWARE.VM.UUID},{#IFNAME}] Preprocessing
|
LLD rule Disk device discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Disk device discovery | Discovery of all disk devices. |
Simple check | vmware.vm.vfs.dev.discovery[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Item prototypes for Disk device discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Average number of bytes read from the disk [{#DISKDESC}] | VMware virtual machine disk device read statistics (bytes per second). |
Simple check | vmware.vm.vfs.dev.read[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME},bps] |
Average number of reads from the disk [{#DISKDESC}] | VMware virtual machine disk device read statistics (operations per second). |
Simple check | vmware.vm.vfs.dev.read[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME},ops] |
Average number of bytes written to the disk [{#DISKDESC}] | VMware virtual machine disk device write statistics (bytes per second). |
Simple check | vmware.vm.vfs.dev.write[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME},bps] |
Average number of writes to the disk [{#DISKDESC}] | VMware virtual machine disk device write statistics (operations per second). |
Simple check | vmware.vm.vfs.dev.write[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME},ops] |
Average number of outstanding read requests to the disk [{#DISKDESC}] | Average number of outstanding read requests to the virtual disk during the collection interval. |
Simple check | vmware.vm.storage.readoio[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME}] |
Average number of outstanding write requests to the disk [{#DISKDESC}] | Average number of outstanding write requests to the virtual disk during the collection interval. |
Simple check | vmware.vm.storage.writeoio[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME}] |
Average write latency to the disk [{#DISKDESC}] | The average time a write to the virtual disk takes. |
Simple check | vmware.vm.storage.totalwritelatency[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME}] |
Average read latency from the disk [{#DISKDESC}] | The average time a read from the virtual disk takes. |
Simple check | vmware.vm.storage.totalreadlatency[{$VMWARE.URL},{$VMWARE.VM.UUID},{#DISKNAME}] |
LLD rule Mounted filesystem discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Mounted filesystem discovery | Discovery of all guest file systems. |
Simple check | vmware.vm.vfs.fs.discovery[{$VMWARE.URL},{$VMWARE.VM.UUID}] |
Item prototypes for Mounted filesystem discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Free disk space on [{#FSNAME}] | VMware virtual machine file system statistics (bytes). |
Simple check | vmware.vm.vfs.fs.size[{$VMWARE.URL},{$VMWARE.VM.UUID},{#FSNAME},free] |
Free disk space on [{#FSNAME}] (percentage) | VMware virtual machine file system statistics (percentage). |
Simple check | vmware.vm.vfs.fs.size[{$VMWARE.URL},{$VMWARE.VM.UUID},{#FSNAME},pfree] |
Total disk space on [{#FSNAME}] | VMware virtual machine total disk space (bytes). |
Simple check | vmware.vm.vfs.fs.size[{$VMWARE.URL},{$VMWARE.VM.UUID},{#FSNAME},total] Preprocessing
|
Used disk space on [{#FSNAME}] | VMware virtual machine used disk space (bytes). |
Simple check | vmware.vm.vfs.fs.size[{$VMWARE.URL},{$VMWARE.VM.UUID},{#FSNAME},used] |
Trigger prototypes for Mounted filesystem discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
[{#FSNAME}]: Disk space is critically low | The disk free space on [{#FSNAME}] has been less than |
max(/VMware Guest/vmware.vm.vfs.fs.size[{$VMWARE.URL},{$VMWARE.VM.UUID},{#FSNAME},pfree],5m)<{$VMWARE.VM.FS.PFREE.MIN.CRIT:"{#FSNAME}"} and {$VMWARE.VM.FS.TRIGGER.USED:"{#FSNAME}"}=1 |
Average | Manual close: Yes |
[{#FSNAME}]: Disk space is low | The disk free space on [{#FSNAME}] has been less than |
max(/VMware Guest/vmware.vm.vfs.fs.size[{$VMWARE.URL},{$VMWARE.VM.UUID},{#FSNAME},pfree],5m)<{$VMWARE.VM.FS.PFREE.MIN.WARN:"{#FSNAME}"} and {$VMWARE.VM.FS.TRIGGER.USED:"{#FSNAME}"}=1 |
Warning | Manual close: Yes Depends on:
|
VMware Hypervisor
Overview
This template is designed for the effortless deployment of VMware ESX hypervisor monitoring and doesn't require any external scripts.
This template can be used in discovery as well as manually linked to a host.
For additional information, please see Zabbix documentation on VM monitoring.
To use this template as manually linked to a host, attach it to the host and manually set the value of the {$VMWARE.HV.UUID}
macro.
Requirements
Zabbix version: 7.0 and higher.
Tested versions
This template has been tested on:
- VMware 6.0, 6.7, 7.0, 8.0
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
To use this template as manually linked to a host:
- Compile Zabbix server with the required options (
--with-libxml2
and--with-libcurl
) - Set the
StartVMwareCollectors
option in the Zabbix server configuration file to "1" or more - Create a new host
- Set the host macros (on the host or template level) required for VMware authentication:
{$VMWARE.URL}
{$VMWARE.USERNAME}
{$VMWARE.PASSWORD}
- To get the hypervisor UUID, enable access to the hypervisor via SSH and log in via SSH using a valid login and password.
- Run the following command and specify the UUID in the macro
{$VMWARE.HV.UUID}
:
vim-cmd hostsvc/hostsummary | grep uuid
- Add the agent interface on the host with the address (IP or DNS) of the VMware hypervisor
- Link the template to the host created earlier
Macros used
Name | Description | Default |
---|---|---|
{$VMWARE.URL} | VMware service (vCenter or ESX hypervisor) SDK URL (https://servername/sdk). |
|
{$VMWARE.USERNAME} | VMware service user name. |
|
{$VMWARE.PASSWORD} | VMware service |
|
{$VMWARE.HV.SENSOR.DISCOVERY} | Set to "true"/"false" to enable or disable the monitoring of hardware sensors. |
false |
{$VMWARE.HV.SENSOR.DISCOVERY.NAME.MATCHES} | Sets the regex string of hardware sensor names to be allowed in discovery. |
.* |
{$VMWARE.HV.SENSOR.DISCOVERY.NAME.NOT_MATCHES} | Sets the regex string of hardware sensor names to be ignored in discovery. |
CHANGE_IF_NEEDED |
{$VMWARE.HV.DATASTORE.SPACE.CRIT} | The critical threshold of the datastore free space. |
10 |
{$VMWARE.HV.DATASTORE.SPACE.WARN} | The warning threshold of the datastore free space. |
20 |
{$VMWARE.HV.UUID} | UUID of hypervisor. |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Connection state | VMware hypervisor connection state. One of the following: - Connected; - Disconnected; - Not responding. |
Simple check | vmware.hv.connectionstate[{$VMWARE.URL},{$VMWARE.HV.UUID}] Preprocessing
|
Number of errors received | VMware hypervisor network input statistics (errors). |
Simple check | vmware.hv.network.in[{$VMWARE.URL},{$VMWARE.HV.UUID},errors] |
Number of broadcasts received | VMware hypervisor network input statistics (broadcasts). |
Simple check | vmware.hv.network.in[{$VMWARE.URL},{$VMWARE.HV.UUID},broadcast] |
Number of dropped received packets | VMware hypervisor network input statistics (packets dropped). |
Simple check | vmware.hv.network.in[{$VMWARE.URL},{$VMWARE.HV.UUID},dropped] |
Number of broadcasts transmitted | VMware hypervisor network output statistics (broadcasts). |
Simple check | vmware.hv.network.out[{$VMWARE.URL},{$VMWARE.HV.UUID},broadcast] |
Number of dropped transmitted packets | VMware hypervisor network output statistics (packets dropped). |
Simple check | vmware.hv.network.out[{$VMWARE.URL},{$VMWARE.HV.UUID},dropped] |
Number of errors transmitted | VMware hypervisor network output statistics (errors). |
Simple check | vmware.hv.network.out[{$VMWARE.URL},{$VMWARE.HV.UUID},errors] |
Hypervisor ping | Checks if the hypervisor is running and accepting ICMP pings. One of the following: - Down; - Up. |
Simple check | icmpping[] Preprocessing
|
Cluster name | Cluster name of the guest VM. |
Simple check | vmware.hv.cluster.name[{$VMWARE.URL},{$VMWARE.HV.UUID}] Preprocessing
|
CPU usage | Aggregated CPU usage across all cores on the host in Hz. This is only available if the host is connected. |
Simple check | vmware.hv.cpu.usage[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
CPU usage in percent | CPU usage as a percentage during the interval. |
Simple check | vmware.hv.cpu.usage.perf[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
CPU utilization | CPU utilization as a percentage during the interval depends on power management or hyper-threading. |
Simple check | vmware.hv.cpu.utilization[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Power usage | Current power usage. |
Simple check | vmware.hv.power[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Power usage maximum allowed | Maximum allowed power usage. |
Simple check | vmware.hv.power[{$VMWARE.URL},{$VMWARE.HV.UUID},max] Preprocessing
|
Datacenter name | Datacenter name of the hypervisor. |
Simple check | vmware.hv.datacenter.name[{$VMWARE.URL},{$VMWARE.HV.UUID}] Preprocessing
|
Full name | The complete product name, including the version information. |
Simple check | vmware.hv.fullname[{$VMWARE.URL},{$VMWARE.HV.UUID}] Preprocessing
|
CPU frequency | The speed of the CPU cores. This is an average value if there are multiple speeds. The product of CPU frequency and the number of cores is approximately equal to the sum of the MHz for all the individual cores on the host. |
Simple check | vmware.hv.hw.cpu.freq[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
CPU model | The CPU model. |
Simple check | vmware.hv.hw.cpu.model[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
CPU cores | Number of physical CPU cores on the host. Physical CPU cores are the processors contained by a CPU package. |
Simple check | vmware.hv.hw.cpu.num[{$VMWARE.URL},{$VMWARE.HV.UUID}] Preprocessing
|
CPU threads | Number of physical CPU threads on the host. |
Simple check | vmware.hv.hw.cpu.threads[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Total memory | The physical memory size. |
Simple check | vmware.hv.hw.memory[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Model | The system model identification. |
Simple check | vmware.hv.hw.model[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Bios UUID | The hardware BIOS identification. |
Simple check | vmware.hv.hw.uuid[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Vendor | The hardware vendor identification. |
Simple check | vmware.hv.hw.vendor[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Ballooned memory | The amount of guest physical memory that is currently reclaimed through the balloon driver. Sum of all guest VMs. |
Simple check | vmware.hv.memory.size.ballooned[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Used memory | Physical memory usage on the host. |
Simple check | vmware.hv.memory.used[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Number of bytes received | VMware hypervisor network input statistics (bytes per second). |
Simple check | vmware.hv.network.in[{$VMWARE.URL},{$VMWARE.HV.UUID},bps] |
Number of bytes transmitted | VMware hypervisor network output statistics (bytes per second). |
Simple check | vmware.hv.network.out[{$VMWARE.URL},{$VMWARE.HV.UUID},bps] |
Overall status | The overall alarm status of the host. One of the following: - Gray: Unknown; - Green: OK; - Yellow: It might have a problem; - Red: It has a problem. |
Simple check | vmware.hv.status[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Uptime | System uptime. |
Simple check | vmware.hv.uptime[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Version | Dot-separated version string. |
Simple check | vmware.hv.version[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Number of guest VMs | Number of guest virtual machines. |
Simple check | vmware.hv.vm.num[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Get sensors | Master item for sensor data. |
Simple check | vmware.hv.sensors.get[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Hypervisor is down | The service is unavailable or is not accepting ICMP pings. |
last(/VMware Hypervisor/icmpping[])=0 |
Average | Manual close: Yes |
The {$VMWARE.HV.UUID} health is Red | One or more components in the appliance might be in an unusable status and the appliance might soon become unresponsive. Security patches might be available. |
last(/VMware Hypervisor/vmware.hv.status[{$VMWARE.URL},{$VMWARE.HV.UUID}])=3 |
High | |
The {$VMWARE.HV.UUID} health is Yellow | One or more components in the appliance might soon become overloaded. |
last(/VMware Hypervisor/vmware.hv.status[{$VMWARE.URL},{$VMWARE.HV.UUID}])=2 |
Average | Depends on:
|
Hypervisor has been restarted | Uptime is less than 10 minutes. |
last(/VMware Hypervisor/vmware.hv.uptime[{$VMWARE.URL},{$VMWARE.HV.UUID}])<10m |
Warning | Manual close: Yes |
LLD rule Network interface discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Network interface discovery | Discovery of VMware hypervisor network interfaces. |
Simple check | vmware.hv.net.if.discovery[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Item prototypes for Network interface discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
[{#IFNAME}] network interface speed | VMware hypervisor network interface speed. |
Simple check | vmware.hv.network.linkspeed[{$VMWARE.URL},{$VMWARE.HV.UUID},{#IFNAME}] Preprocessing
|
LLD rule Datastore discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Datastore discovery | Discovery of VMware datastores. |
Simple check | vmware.hv.datastore.discovery[{$VMWARE.URL},{$VMWARE.HV.UUID}] |
Item prototypes for Datastore discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Average read IOPS of the datastore [{#DATASTORE}] | Average IOPS for a read operation from the datastore. |
Simple check | vmware.hv.datastore.read[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},rps] |
Average write IOPS of the datastore [{#DATASTORE}] | Average IOPS for a write operation to the datastore (milliseconds). |
Simple check | vmware.hv.datastore.write[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},rps] |
Average read latency of the datastore [{#DATASTORE}] | Average amount of time for a read operation from the datastore (milliseconds). |
Simple check | vmware.hv.datastore.read[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},latency] |
Free space on datastore [{#DATASTORE}] (percentage) | VMware datastore free space (percentage from the total). |
Simple check | vmware.hv.datastore.size[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},pfree] |
Total size of datastore [{#DATASTORE}] | VMware datastore space in bytes. |
Simple check | vmware.hv.datastore.size[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE}] Preprocessing
|
Average write latency of the datastore [{#DATASTORE}] | Average amount of time for a write operation to the datastore (milliseconds). |
Simple check | vmware.hv.datastore.write[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},latency] |
Multipath count for datastore [{#DATASTORE}] | Number of available datastore paths. |
Simple check | vmware.hv.datastore.multipath[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE}] |
Trigger prototypes for Datastore discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
[{#DATASTORE}]: Free space is critically low | Datastore free space has fallen below the critical threshold. |
last(/VMware Hypervisor/vmware.hv.datastore.size[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},pfree])<{$VMWARE.HV.DATASTORE.SPACE.CRIT} |
High | |
[{#DATASTORE}]: Free space is low | Datastore free space has fallen below the warning threshold. |
last(/VMware Hypervisor/vmware.hv.datastore.size[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},pfree])<{$VMWARE.HV.DATASTORE.SPACE.WARN} |
Warning | Depends on:
|
The multipath count has been changed | The number of available datastore paths is less than registered ( |
last(/VMware Hypervisor/vmware.hv.datastore.multipath[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE}],#1)<>last(/VMware Hypervisor/vmware.hv.datastore.multipath[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE}],#2) and last(/VMware Hypervisor/vmware.hv.datastore.multipath[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE}])<{#MULTIPATH.COUNT} |
Average | Manual close: Yes |
LLD rule Serial number discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Serial number discovery | VMware hypervisor serial number discovery. This item works only with VMware hypervisor versions above 6.7. |
Dependent item | vmware.hv.serial.number.discovery Preprocessing
|
Item prototypes for Serial number discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Serial number | VMware hypervisor serial number. |
Simple check | vmware.hv.hw.serialnumber[{$VMWARE.URL},{#VMWARE.HV.UUID}] Preprocessing
|
LLD rule Healthcheck discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck discovery | VMware Rollup Health State sensor discovery. |
Dependent item | vmware.hv.healthcheck.discovery Preprocessing
|
Item prototypes for Healthcheck discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health state rollup | The host's Rollup Health State sensor value. One of the following: - Gray: Unknown; - Green: OK; - Yellow: It might have a problem; - Red: It has a problem. |
Dependent item | vmware.hv.sensor.health.state[{#SINGLETON}] Preprocessing
|
Trigger prototypes for Healthcheck discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
The {$VMWARE.HV.UUID} health is Red | One or more components in the appliance might be in an unusable status and the appliance might soon become unresponsive. Security patches might be available. |
last(/VMware Hypervisor/vmware.hv.sensor.health.state[{#SINGLETON}])=3 |
High | Depends on:
|
The {$VMWARE.HV.UUID} health is Yellow | One or more components in the appliance might soon become overloaded. |
last(/VMware Hypervisor/vmware.hv.sensor.health.state[{#SINGLETON}])=2 |
Average | Depends on:
|
LLD rule Sensor discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Sensor discovery | VMware hardware sensor discovery. The data is retrieved from numeric sensor probes and provides information about the health of the physical system. |
Dependent item | vmware.hv.sensors.discovery Preprocessing
|
Item prototypes for Sensor discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Sensor [{#NAME}] health state | VMware hardware sensor health state. One of the following: - Gray: Unknown; - Green: OK; - Yellow: It might have a problem; - Red: It has a problem. |
Dependent item | vmware.hv.sensor.state["{#NAME}"] Preprocessing
|
Trigger prototypes for Sensor discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Sensor [{#NAME}] health state is Red | One or more components in the appliance might be in an unusable status and the appliance might soon become unresponsive. |
last(/VMware Hypervisor/vmware.hv.sensor.state["{#NAME}"])=3 |
High | Depends on:
|
Sensor [{#NAME}] health state is Yellow | One or more components in the appliance might soon become overloaded. |
last(/VMware Hypervisor/vmware.hv.sensor.state["{#NAME}"])=2 |
Average | Depends on:
|
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums