VMware

VMware develops virtualization software. Virtualization software creates an abstraction layer over computer hardware that allows the hardware elements of a single computer— processors, memory, storage, and more— to be divided into multiple virtual computers, commonly called virtual machines (VMs).

Available solutions




This template is for Zabbix version: 7.0

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

  1. Compile Zabbix server with the required options (--with-libxml2 and --with-libcurl)
  2. Set the StartVMwareCollectors option in the Zabbix server configuration file to "1" or more
  3. Create a new host
  4. If you want to use a separate user for monitoring, make sure that the user is a member of the SystemConfiguration.ReadOnly and vStatsGroup groups Set the host macros (on the host or template level) required for VMware authentication:
{$VMWARE.URL}
{$VMWARE.USERNAME}
{$VMWARE.PASSWORD}
  1. 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:

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 {$USERNAME} user password.

{$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

  • Discard unchanged with heartbeat: 1d

Version

VMware service version.

Simple check vmware.version[{$VMWARE.URL}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

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

  • JSON Path: $.error

    ⛔️Custom on fail: Set value to

  • Discard unchanged with heartbeat: 3h

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

  • JSON Path: $.health

  • Discard unchanged with heartbeat: 3h

Triggers

Name Description Expression Severity Dependencies and additional info
VMware: 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
VMware: 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

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.[?(@.key == "{#VMWARE.ALARMS.KEY}")].key.first()

    ⛔️Custom on fail: Set value to: -1

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for VMware alarm discovery

Name Description Expression Severity Dependencies and additional info
VMware: {#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
VMware: 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
VMware: 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:
  • VMware: The [{#CLUSTER.NAME}] status is Red

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

  • Discard unchanged with heartbeat: 1h

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
VMware: [{#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
VMware: [{#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:
  • VMware: [{#DATASTORE}]: Free space is critically low

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 {$USERNAME} user password.

{$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

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1d

Snapshot count

Snapshot count of the guest VM.

Dependent item vmware.vm.snapshot.count

Preprocessing

  • JSON Path: $.count

  • Discard unchanged with heartbeat: 1d

Get snapshots

Snapshots of the guest VM.

Simple check vmware.vm.snapshot.get[{$VMWARE.URL},{$VMWARE.VM.UUID}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

Snapshot latest date

Latest snapshot date of the guest VM.

Dependent item vmware.vm.snapshot.latestdate

Preprocessing

  • JSON Path: $.latestdate

  • Discard unchanged with heartbeat: 1d

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

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

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

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

VMware Tools version

Monitoring of the VMware Tools version.

Simple check vmware.vm.tools[{$VMWARE.URL},{$VMWARE.VM.UUID},version]

Preprocessing

  • Discard unchanged with heartbeat: 12h

Cluster name

Cluster name of the guest VM.

Simple check vmware.vm.cluster.name[{$VMWARE.URL},{$VMWARE.VM.UUID}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

Number of virtual CPUs

Number of virtual CPUs assigned to the guest.

Simple check vmware.vm.cpu.num[{$VMWARE.URL},{$VMWARE.VM.UUID}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

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

  • Discard unchanged with heartbeat: 1d

Hypervisor name

Hypervisor name of the guest VM.

Simple check vmware.vm.hv.name[{$VMWARE.URL},{$VMWARE.VM.UUID}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

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

  • Discard unchanged with heartbeat: 1d

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

  • Discard unchanged with heartbeat: 1h

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
VMware Guest: Snapshot consolidation needed

Snapshot consolidation needed.

last(/VMware Guest/vmware.vm.consolidationneeded[{$VMWARE.URL},{$VMWARE.VM.UUID}])=0 Average Manual close: Yes
VMware Guest: VM is not running

VMware virtual machine is not running.

last(/VMware Guest/vmware.vm.state[{$VMWARE.URL},{$VMWARE.VM.UUID}]) <> 2 Average
VMware Guest: 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:
  • VMware Guest: VM is not running
VMware Guest: 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

  • Custom multiplier: 1024

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

  • Discard unchanged with heartbeat: 1d

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
VMware Guest: [{#FSNAME}]: Disk space is critically low

The disk free space on [{#FSNAME}] has been less than {$VMWARE.VM.FS.PFREE.MIN.CRIT:"{#FSNAME}"}% for 5m.

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
VMware Guest: [{#FSNAME}]: Disk space is low

The disk free space on [{#FSNAME}] has been less than {$VMWARE.VM.FS.PFREE.MIN.WARN:"{#FSNAME}"}% for 5m.

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 Guest: [{#FSNAME}]: Disk space is critically low

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:

  1. Compile Zabbix server with the required options (--with-libxml2 and --with-libcurl)
  2. Set the StartVMwareCollectors option in the Zabbix server configuration file to "1" or more
  3. Create a new host
  4. Set the host macros (on the host or template level) required for VMware authentication:
{$VMWARE.URL}
{$VMWARE.USERNAME}
{$VMWARE.PASSWORD}
  1. To get the hypervisor UUID, enable access to the hypervisor via SSH and log in via SSH using a valid login and password.
  2. Run the following command and specify the UUID in the macro {$VMWARE.HV.UUID}:
vim-cmd hostsvc/hostsummary | grep uuid
  1. Add the agent interface on the host with the address (IP or DNS) of the VMware hypervisor
  2. 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 {$USERNAME} user password.

{$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

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

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

  • Discard unchanged with heartbeat: 10m

Cluster name

Cluster name of the guest VM.

Simple check vmware.hv.cluster.name[{$VMWARE.URL},{$VMWARE.HV.UUID}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

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

  • Discard unchanged with heartbeat: 6h

Datacenter name

Datacenter name of the hypervisor.

Simple check vmware.hv.datacenter.name[{$VMWARE.URL},{$VMWARE.HV.UUID}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

Full name

The complete product name, including the version information.

Simple check vmware.hv.fullname[{$VMWARE.URL},{$VMWARE.HV.UUID}]

Preprocessing

  • Discard unchanged with heartbeat: 1d

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

  • Discard unchanged with heartbeat: 1d

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
VMware Hypervisor: Hypervisor is down

The service is unavailable or is not accepting ICMP pings.

last(/VMware Hypervisor/icmpping[])=0 Average Manual close: Yes
VMware Hypervisor: 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
VMware Hypervisor: 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:
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Red
VMware Hypervisor: 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

  • Custom multiplier: 1000000

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

  • Discard unchanged with heartbeat: 1d

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
VMware Hypervisor: [{#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
VMware Hypervisor: [{#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:
  • VMware Hypervisor: [{#DATASTORE}]: Free space is critically low
VMware Hypervisor: The multipath count has been changed

The number of available datastore paths is less than registered ({#MULTIPATH.COUNT}).

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

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 6h

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

  • Discard unchanged with heartbeat: 1d

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

  • JSON Path: The text is too long. Please see the template.

    ⛔️Custom on fail: Set value to: []

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 6h

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

  • JSON Path: The text is too long. Please see the template.

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for Healthcheck discovery

Name Description Expression Severity Dependencies and additional info
VMware Hypervisor: 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:
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Red
VMware Hypervisor: 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:
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Red
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Yellow
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Red

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

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 6h

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

  • JSON Path: The text is too long. Please see the template.

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for Sensor discovery

Name Description Expression Severity Dependencies and additional info
VMware Hypervisor: 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:
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Red
VMware Hypervisor: 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:
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Red
  • VMware Hypervisor: The {$VMWARE.HV.UUID} health is Yellow
  • VMware Hypervisor: Sensor [{#NAME}] health state is Red

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

Didn't find integration you need?