Hyper-V

Microsoft Hyper-V, codenamed Viridian and formerly known as Windows Server Virtualization, is a native hypervisor; it can create virtual machines on x86-64 systems running Windows.

Available solutions

Zabbix version 8.0
Download

Microsoft Hyper-V Failover Cluster by SSH

Overview

Microsoft Hyper-V is a native hypervisor that allows for the creation and management of virtual machines on Windows systems. It provides hardware virtualization, enabling multiple operating systems to run simultaneously on a single physical host by isolating them into separate partitions. Hyper-V is a key component for building scalable and high-availability virtualization environments, including failover clusters.

Requirements

Zabbix version: 8.0 and higher.

Tested versions

This template has been tested on:

  • OS Name: Microsoft Windows Server 2025 Datacenter Evaluation
  • OS Version: 10.0.26100
  • OS Build: 26100
  • PS Version: 5.1.26100.7462
  • .NET CLR: 4.0.30319.42000
  • Mod: FailoverClusters: 2.0.0.0
  • Mod: Hyper-V: 2.0.0.0
  • Mod: CimCmdlets: 1.0.0.0

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

Prerequisites & least privilege scope

The solution requires a service account with sufficient privileges to query cluster resources, performance counters, and virtualization subsystems. The exact implementation of these privileges (e.g., via Local Administrators group, Delegated Permissions, or JEA) is at the discretion of the infrastructure administrator, provided the following functional requirements are met.

Connectivity & execution

  • SSH access: The account must be able to establish an SSH session to the Cluster VIP or individual nodes.

  • PowerShell execution: The account requires permission to execute PowerShell commands (non-interactive mode).

  • Inter-node communication: The script utilizes Invoke-Command to query multiple nodes in parallel. The account must allow WinRM connections from the entry node to all other cluster nodes.

WMI & CIM namespaces (read access)

The solution relies heavily on WMI queries. Read access is required for the following namespaces:

  • root\\cimv2 (Operating System, Processor, Physical Memory, Logical Disk).

  • root\\virtualization\\v2 (Hyper-V VM states, Resource Metering, Configuration).

  • root\\MSCluster (Cluster API, Nodes, Resources, Networks, Quorum).

  • root\\wmi (specific access to Win32\_PerfFormattedData\_CsvFsPerfProvider\_ClusterCSVFileSystem for CSV performance counters).

Storage subsystem

  • File system access: Read access to Cluster Shared Volumes paths (e.g., C:\\ClusterStorage\\\*) is required to calculate volume utilization.

  • Storage Management API: Access to query Storage Pools and Volumes (Get-StoragePool, Get-Volume, or equivalent CIM classes).

Cluster API

  • Cluster access: The account requires explicit permissions to query the Failover Cluster configuration (equivalent to Grant-ClusterAccess -Read).

SSH setup

  1. Create a Service Account: Create a user (e.g., zabbix\_mon) in the domain or locally on all nodes.

  2. Install the SSH service:

    # Install SSH service
    Add-WindowsCapability -Online -Name OpenSSH.Server
    
    # Set autorun and start service
    Start-Service sshd
    Set-Service -Name sshd -StartupType 'Automatic'
    
    # Open port in firewall
    if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
        New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
    }
    
    # Enable resource metering for all VMs (needed for statistics without PerfCounters)
    Get-VM -Name * | Enable-VMResourceMetering
    
  3. Zabbix configuration:

    • Ensure timeout is set to at least 30 seconds (script takes ~15s).

Verification

ssh -l <user_name>@<domain_name> <cluster_name>

or

ssh -l <local_user> <cluster_name>

Enable Resource Metering for VMs

To ensure accurate collection of CPU, Disk I/O, and Network Traffic metrics, Resource Metering must be enabled on all Virtual Machines. By default, Hyper-V creates new VMs with this feature disabled.

Recommended approach: create a Scheduled Task on each Hyper-V Node to automatically enable metering for new VMs.

PowerShell Deployment Command (Run as Admin): this command creates a daily task named HyperV-AutoEnableMetering that runs under the SYSTEM account.

$Action = New-ScheduledTaskAction -Execute "powershell.exe" `
    -Argument '-NoProfile -Command "Get-VM | Where-Object ResourceMeteringEnabled -eq $false | Enable-VMResourceMetering"'

$Trigger = New-ScheduledTaskTrigger -Daily -At "04:00"

Register-ScheduledTask -Action $Action -Trigger $Trigger `
    -TaskName "HyperV-AutoEnableMetering" `
    -User "NT AUTHORITY\SYSTEM" `
    -RunLevel Highest `
    -Description "Automatically enables Resource Metering for new VMs to support Zabbix monitoring."

Macros used

Name Description Default
{$HYPERV.SSH.USER}

SSH username.

user[@domain]
{$HYPERV.SSH.PASSWORD}

SSH password.

password
{$HYPERV.SSH.ADDRESS}

SSH address.

127.0.0.1
{$HYPERV.SSH.PORT}

SSH port.

22
{$HYPERV.TRIGGER.NODE.MEMORY.UTILIZATION}

Threshold for Hyper-V Cluster Node memory utilization trigger. Supports context {#NODE.NAME}.

85
{$HYPERV.TRIGGER.NODE.CPU.UTILIZATION}

Threshold for Hyper-V Cluster Node CPU utilization trigger. Supports context {#NODE.NAME}.

85
{$HYPERV.TRIGGER.CSV.SPACE.UTILIZATION}

Threshold for Hyper-V Cluster CSV space utilization trigger. Supports context {#CSV.NAME}.

85
{$HYPERV.TRIGGER.VM.STATUS.NORMAL}

Normal state for Hyper-V Virtual Machine status trigger. Supports context {#VM.NAME}.

2
{$HYPERV.TRIGGER.VM.MEMORY.UTILIZATION}

Threshold for Hyper-V Virtual Machine memory utilization trigger. Supports context {#VM.NAME}.

85
{$HYPERV.TRIGGER.POOL.SPACE.UTILIZATION}

Threshold for Hyper-V Pool space utilization trigger. Supports context {#POOL.NAME}.

85
{$HYPERV.FILTER.LLD.NODE.NAME.MATCHES}

Regular expression to filter Hyper-V Cluster Nodes based on their names. Only nodes with names matching this regex will be monitored.

.*
{$HYPERV.FILTER.LLD.NODE.NAME.NOT_MATCHES}

Regular expression to filter Hyper-V Cluster Nodes based on their names. Nodes with names matching this regex will be excluded from monitoring.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.NODE.STATUS.MATCHES}

Regular expression to filter Hyper-V Cluster Node status. Only nodes with statuses matching this regex will be monitored. See value mappings for possible status values.

.*
{$HYPERV.FILTER.LLD.NODE.STATUS.NOT_MATCHES}

Regular expression to filter Hyper-V Cluster Node status. Nodes with statuses matching this regex will be excluded from monitoring. See value mappings for possible status values.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.CSV.NAME.MATCHES}

Regular expression to filter Hyper-V Cluster CSVs based on their names. Only CSVs with names matching this regex will be monitored.

.*
{$HYPERV.FILTER.LLD.CSV.NAME.NOT_MATCHES}

Regular expression to filter Hyper-V Cluster CSVs based on their names. CSVs with names matching this regex will be excluded from monitoring.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.CSV.STATUS.MATCHES}

Regular expression to filter Hyper-V Cluster CSV Status. Only CSVs with statuses matching this regex will be monitored. See value mappings for possible status values.

.*
{$HYPERV.FILTER.LLD.CSV.STATUS.NOT_MATCHES}

Regular expression to filter Hyper-V Cluster CSV Status. CSVs with statuses matching this regex will be excluded from monitoring. See value mappings for possible status values.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.VM.NAME.MATCHES}

Regular expression to filter Hyper-V Virtual Machines based on their names. Only VMs with names matching this regex will be monitored.

.*
{$HYPERV.FILTER.LLD.VM.NAME.NOT_MATCHES}

Regular expression to filter Hyper-V Virtual Machines based on their names. VMs with names matching this regex will be excluded from monitoring.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.VM.STATUS.MATCHES}

Regular expression to filter Hyper-V Virtual Machine status. Only VMs with statuses matching this regex will be monitored. See value mappings for possible status values.

.*
{$HYPERV.FILTER.LLD.VM.STATUS.NOT_MATCHES}

Regular expression to filter Hyper-V Virtual Machine status. VMs with statuses matching this regex will be excluded from monitoring. See value mappings for possible status values.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.POOL.NAME.MATCHES}

Regular expression to filter Hyper-V Pools based on their names. Only Pools with names matching this regex will be monitored.

.*
{$HYPERV.FILTER.LLD.POOL.NAME.NOT_MATCHES}

Regular expression to filter Hyper-V Pools based on their names. Pools with names matching this regex will be excluded from monitoring.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.POOL.STATUS.MATCHES}

Regular expression to filter Hyper-V Pool Status. Only Pools with statuses matching this regex will be monitored. See value mappings for possible status values.

.*
{$HYPERV.FILTER.LLD.POOL.STATUS.NOT_MATCHES}

Regular expression to filter Hyper-V Pool Status. Pools with statuses matching this regex will be excluded from monitoring. See value mappings for possible status values.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.DISK.NODE_NAME.MATCHES}

Regular expression to filter Hyper-V Disks based on their node names. Only Disks with node names matching this regex will be monitored.

.*
{$HYPERV.FILTER.LLD.DISK.NODE_NAME.NOT_MATCHES}

Regular expression to filter Hyper-V Disks based on their node names. Disks with node names matching this regex will be excluded from monitoring.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.DISK.SLOT.MATCHES}

Regular expression to filter Hyper-V Disks based on their slots. Only Disks with slots matching this regex will be monitored.

.*
{$HYPERV.FILTER.LLD.DISK.SLOT.NOT_MATCHES}

Regular expression to filter Hyper-V Disks based on their slots. Disks with slots matching this regex will be excluded from monitoring.

CHANGE_IF_NEEDED
{$HYPERV.FILTER.LLD.DISK.MODEL.MATCHES}

Regular expression to filter Hyper-V Disks based on their models. Only Disks with models matching this regex will be monitored.

.*
{$HYPERV.FILTER.LLD.DISK.MODEL.NOT_MATCHES}

Regular expression to filter Hyper-V Disks based on their models. Disks with models matching this regex will be excluded from monitoring.

CHANGE_IF_NEEDED

Items

Name Description Type Key and additional info
Get data

Collects data about Microsoft Hyper-V Failover Cluster via SSH.

SSH agent ssh.run[hyper-v.get_data,{$HYPERV.SSH.ADDRESS},{$HYPERV.SSH.PORT}]

Preprocessing

  • Check for not supported value: error matches ".*timeout error.*"

    ⛔️Custom on fail: Set value to: {"Message": "Timeout error. Consider increasing the timeout setting.", "Data": {"Perf": {"TotalTime": 0}, "Cluster": {"QuorumState": -1}}}

  • Check for not supported value: any error

    ⛔️Custom on fail: Set value to: {"Message": "Error getting data. Check the logs for more details.", "Data": {"Perf": {"TotalTime": 0}, "Cluster": {"QuorumState": -1}}}

Get data message

Message from the data retrieval process for Microsoft Hyper-V Failover Cluster.

Dependent item hyperv.get_data.message

Preprocessing

  • JSON Path: $.Message

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Get data performance

Time taken to retrieve data about Microsoft Hyper-V Failover Cluster via SSH.

Dependent item hyperv.get_data.performance

Preprocessing

  • JSON Path: $.Data.Perf.TotalTime

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.001

Cluster quorum status

Status of the Hyper-V Failover Cluster Quorum.

Dependent item hyperv.cluster.quorum.status

Preprocessing

  • JSON Path: $.Data.Cluster.QuorumState

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Cluster name

Name of the Hyper-V Failover Cluster.

Dependent item hyperv.cluster.name

Preprocessing

  • JSON Path: $.Data.Cluster.Name

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Triggers

Name Description Expression Severity Dependencies and additional info
Hyper-V Failover Cluster: Data retrieval failure

Trigger fires when there is an error retrieving data from Hyper-V Failover Cluster.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.get_data.message)<>"OK" Disaster
Hyper-V Failover Cluster: Cluster Quorum {ITEM.VALUE}

Trigger fires when the Hyper-V Failover Cluster Quorum is offline (lost quorum).

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.quorum.status)=-1 or last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.quorum.status)>=3 High
Hyper-V Failover Cluster: Cluster Quorum {ITEM.VALUE}

Trigger fires when the Hyper-V Failover Cluster Quorum is not online.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.quorum.status)<>2 Info Depends on:
  • Hyper-V Failover Cluster: Cluster Quorum {ITEM.VALUE}

LLD rule Node discovery

Name Description Type Key and additional info
Node discovery

Discovery of Hyper-V Cluster Nodes.

Dependent item hyperv.cluster.node.discovery

Preprocessing

  • JSON Path: $.Data.Nodes

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Item prototypes for Node discovery

Name Description Type Key and additional info
Node [{#NODE.NAME}]: Status

Status of Hyper-V Cluster Node {#NODE.NAME}.

Dependent item hyperv.cluster.node.status[{#NODE.ID}]

Preprocessing

  • JSON Path: $.Data.Nodes[?(@.Id=='{#NODE.ID}')].State.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Node [{#NODE.NAME}]: Response time

Response time of Hyper-V Cluster Node {#NODE.NAME}.

Dependent item hyperv.cluster.node.response_time[{#NODE.ID}]

Preprocessing

  • JSON Path: $.Data.Nodes[?(@.Id=='{#NODE.ID}')].ResponseTime.first()

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.001

Node [{#NODE.NAME}]: Free memory

Free memory of Hyper-V Cluster Node {#NODE.NAME}.

Dependent item hyperv.cluster.node.memory.free[{#NODE.ID}]

Preprocessing

  • JSON Path: $.Data.Nodes[?(@.Id=='{#NODE.ID}')].FreeMem.first()

    ⛔️Custom on fail: Discard value

Node [{#NODE.NAME}]: Total memory

Total memory of Hyper-V Cluster Node {#NODE.NAME}.

Dependent item hyperv.cluster.node.memory.total[{#NODE.ID}]

Preprocessing

  • JSON Path: $.Data.Nodes[?(@.Id=='{#NODE.ID}')].TotalMem.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Node [{#NODE.NAME}]: Memory utilization

Memory utilization of Hyper-V Cluster Node {#NODE.NAME}.

Dependent item hyperv.cluster.node.memory.utilization[{#NODE.ID}]

Preprocessing

  • JSON Path: $.Data.Nodes[?(@.Id=='{#NODE.ID}')].first()

    ⛔️Custom on fail: Discard value

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

Node [{#NODE.NAME}]: CPU utilization

CPU utilization of Hyper-V Cluster Node {#NODE.NAME}.

Dependent item hyperv.cluster.node.cpu.utilization[{#NODE.ID}]

Preprocessing

  • JSON Path: $.Data.Nodes[?(@.Id=='{#NODE.ID}')].CPU.first()

    ⛔️Custom on fail: Discard value

Trigger prototypes for Node discovery

Name Description Expression Severity Dependencies and additional info
Hyper-V Failover Cluster: Cluster node [{#NODE.NAME}] {ITEM.VALUE}

Trigger fires when the Hyper-V Cluster Node {#NODE.NAME} is down.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.node.status[{#NODE.ID}])=1 or last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.node.status[{#NODE.ID}])=-1 High
Hyper-V Failover Cluster: Cluster node [{#NODE.NAME}] {ITEM.VALUE}

Trigger fires when the Hyper-V Cluster Node {#NODE.NAME} is not up.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.node.status[{#NODE.ID}])<>0 Info Depends on:
  • Hyper-V Failover Cluster: Cluster node [{#NODE.NAME}] {ITEM.VALUE}
Hyper-V Failover Cluster: Cluster node [{#NODE.NAME}]: High memory utilization

Trigger fires when the memory utilization on Hyper-V Cluster Node {#NODE.NAME} exceeds {$HYPERV.TRIGGER.NODE.MEMORY.UTILIZATION:"{#NODE.NAME}"}%.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.node.memory.utilization[{#NODE.ID}])>{$HYPERV.TRIGGER.NODE.MEMORY.UTILIZATION:"{#NODE.NAME}"} Warning
Hyper-V Failover Cluster: Cluster node [{#NODE.NAME}]: High CPU utilization

Trigger fires when the CPU utilization on Hyper-V Cluster Node {#NODE.NAME} exceeds {$HYPERV.TRIGGER.NODE.CPU.UTILIZATION:"{#NODE.NAME}"}%.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.node.cpu.utilization[{#NODE.ID}])>{$HYPERV.TRIGGER.NODE.CPU.UTILIZATION:"{#NODE.NAME}"} Warning

LLD rule CSV discovery

Name Description Type Key and additional info
CSV discovery

Discovery of Hyper-V Cluster CSVs.

Dependent item hyperv.cluster.csv.discovery

Preprocessing

  • JSON Path: $.Data.Storage

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Item prototypes for CSV discovery

Name Description Type Key and additional info
CSV [{#CSV.NAME}]: Status

Status of Hyper-V Cluster CSV {#CSV.NAME}.

Dependent item hyperv.cluster.csv.status[{#CSV.ID}]

Preprocessing

  • JSON Path: $.Data.Storage[?(@.Id=='{#CSV.ID}')].State.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

CSV [{#CSV.NAME}]: Free space

Free space of Hyper-V Cluster CSV {#CSV.NAME}.

Dependent item hyperv.cluster.csv.space.free[{#CSV.ID}]

Preprocessing

  • JSON Path: $.Data.Storage[?(@.Id=='{#CSV.ID}')].Free.first()

    ⛔️Custom on fail: Discard value

CSV [{#CSV.NAME}]: Total space

Total space of Hyper-V Cluster CSV {#CSV.NAME}.

Dependent item hyperv.cluster.csv.space.total[{#CSV.ID}]

Preprocessing

  • JSON Path: $.Data.Storage[?(@.Id=='{#CSV.ID}')].Total.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

CSV [{#CSV.NAME}]: Space utilization

Space utilization of Hyper-V Cluster CSV {#CSV.NAME}.

Dependent item hyperv.cluster.csv.space.utilization[{#CSV.ID}]

Preprocessing

  • JSON Path: $.Data.Storage[?(@.Id=='{#CSV.ID}')].UsedPct.first()

    ⛔️Custom on fail: Discard value

CSV [{#CSV.NAME}]: Read speed

Read speed of Hyper-V Cluster CSV {#CSV.NAME}, aggregated from nodes.

Dependent item hyperv.cluster.csv.speed.read[{#CSV.ID}]

Preprocessing

  • JSON Path: $.Data.Storage[?(@.Id=='{#CSV.ID}')].ReadBps.first()

    ⛔️Custom on fail: Discard value

CSV [{#CSV.NAME}]: Write speed

Write speed of Hyper-V Cluster CSV {#CSV.NAME}, aggregated from nodes.

Dependent item hyperv.cluster.csv.speed.write[{#CSV.ID}]

Preprocessing

  • JSON Path: $.Data.Storage[?(@.Id=='{#CSV.ID}')].WriteBps.first()

    ⛔️Custom on fail: Discard value

CSV [{#CSV.NAME}]: Path

Path of Hyper-V Cluster CSV {#CSV.NAME}.

Dependent item hyperv.cluster.csv.path[{#CSV.ID}]

Preprocessing

  • JSON Path: $.Data.Storage[?(@.Id=='{#CSV.ID}')].Path.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for CSV discovery

Name Description Expression Severity Dependencies and additional info
Hyper-V Failover Cluster: Cluster CSV [{#CSV.NAME}] {ITEM.VALUE}

Trigger fires when the Hyper-V Cluster CSV {#CSV.NAME} indicates an error {ITEM.VALUE}.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.csv.status[{#CSV.ID}])=-1 or last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.csv.status[{#CSV.ID}])>=3 High
Hyper-V Failover Cluster: Cluster CSV [{#CSV.NAME}] {ITEM.VALUE}

Trigger fires when the Hyper-V Cluster CSV {#CSV.NAME} is not online.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.csv.status[{#CSV.ID}])<>2 Info Depends on:
  • Hyper-V Failover Cluster: Cluster CSV [{#CSV.NAME}] {ITEM.VALUE}
Hyper-V Failover Cluster: Cluster CSV [{#CSV.NAME}]: High space utilization

Trigger fires when the space utilization on Hyper-V Cluster CSV {#CSV.NAME} exceeds {$HYPERV.TRIGGER.CSV.SPACE.UTILIZATION:"{#CSV.NAME}"}%.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.cluster.csv.space.utilization[{#CSV.ID}])>{$HYPERV.TRIGGER.CSV.SPACE.UTILIZATION:"{#CSV.NAME}"} Warning

LLD rule VM discovery

Name Description Type Key and additional info
VM discovery

Discovery of Hyper-V Virtual Machines.

Dependent item hyperv.vm.discovery

Preprocessing

  • JSON Path: $.Data.VMs

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Item prototypes for VM discovery

Name Description Type Key and additional info
VM [{#VM.NAME}]: Status

Status of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.status[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].State.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

VM [{#VM.NAME}]: Uptime

Uptime of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.uptime[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].Uptime.first()

    ⛔️Custom on fail: Discard value

VM [{#VM.NAME}]: Node owner

Node owner of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.owner[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].Owner.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

VM [{#VM.NAME}]: CPU utilization

CPU utilization of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.cpu.utilization[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].CPU.first()

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 1000000

VM [{#VM.NAME}]: Used memory

Used memory of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.memory.used[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].UsedMem.first()

    ⛔️Custom on fail: Discard value

VM [{#VM.NAME}]: Total memory

Total memory of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.memory.total[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].TotalMem.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

VM [{#VM.NAME}]: Memory utilization

Memory utilization of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.memory.utilization[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].first()

    ⛔️Custom on fail: Discard value

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

VM [{#VM.NAME}]: Network in (bits per second)

Network incoming traffic of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.net.in[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].NetIn.first()

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 1048576

  • Custom multiplier: 8

  • Change per second
VM [{#VM.NAME}]: Network out (bits per second)

Network outgoing traffic of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.net.out[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].NetOut.first()

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 1048576

  • Custom multiplier: 8

  • Change per second
VM [{#VM.NAME}]: Disk read (bytes per second)

Disk read speed of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.disk.read[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].DiskRead.first()

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 1048576

  • Change per second
VM [{#VM.NAME}]: Disk write (bytes per second)

Disk write speed of Hyper-V Virtual Machine {#VM.NAME}.

Dependent item hyperv.vm.disk.write[{#VM.ID}]

Preprocessing

  • JSON Path: $.Data.VMs[?(@.Id=='{#VM.ID}')].DiskWrite.first()

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 1048576

  • Change per second

Trigger prototypes for VM discovery

Name Description Expression Severity Dependencies and additional info
Hyper-V Failover Cluster: Virtual machine [{#VM.NAME}] {ITEM.VALUE}

Trigger fires when Hyper-V Virtual Machine {#VM.NAME} is not in normal state.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.vm.status[{#VM.ID}])<>{$HYPERV.TRIGGER.VM.STATUS.NORMAL:"{#VM.NAME}"} Average
Hyper-V Failover Cluster: Virtual machine [{#VM.NAME}] has rebooted

Trigger fires when the uptime of Hyper-V Virtual Machine {#VM.NAME} is less than 15 minutes, which may indicate that the VM has recently rebooted.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.vm.uptime[{#VM.ID}])<900 and last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.vm.uptime[{#VM.ID}])<>0 Info
Hyper-V Failover Cluster: Virtual machine [{#VM.NAME}] owner changed

Trigger fires when the owner node of Hyper-V Virtual Machine {#VM.NAME} changes.

change(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.vm.owner[{#VM.ID}]) Info
Hyper-V Failover Cluster: Virtual machine [{#VM.NAME}]: High memory utilization

Trigger fires when the memory utilization on Hyper-V Virtual Machine {#VM.NAME} exceeds {$HYPERV.TRIGGER.VM.MEMORY.UTILIZATION:"{#VM.NAME}"}%.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.vm.memory.utilization[{#VM.ID}])>{$HYPERV.TRIGGER.VM.MEMORY.UTILIZATION:"{#VM.NAME}"} Warning

LLD rule S2D pool discovery

Name Description Type Key and additional info
S2D pool discovery

Discovery of Hyper-V S2D Pools.

Dependent item hyperv.s2d.pool.discovery

Preprocessing

  • JSON Path: $.Data.S2D.Pools

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Item prototypes for S2D pool discovery

Name Description Type Key and additional info
S2D Pool [{#POOL.NAME}]: Status

Status of Hyper-V S2D Pool {#POOL.NAME}.

Dependent item hyperv.s2d.pool.status[{#POOL.NAME}]

Preprocessing

  • JSON Path: $.Data.S2D.Pools[?(@.Name=='{#POOL.NAME}')].Status.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Pool [{#POOL.NAME}]: Allocated space

Allocated space of Hyper-V S2D Pool {#POOL.NAME}.

Dependent item hyperv.s2d.pool.allocated[{#POOL.NAME}]

Preprocessing

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

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Pool [{#POOL.NAME}]: Health status

Health status of Hyper-V S2D Pool {#POOL.NAME}.

Dependent item hyperv.s2d.pool.health[{#POOL.NAME}]

Preprocessing

  • JSON Path: $.Data.S2D.Pools[?(@.Name=='{#POOL.NAME}')].Health.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Pool [{#POOL.NAME}]: Total space

Total space of Hyper-V S2D Pool {#POOL.NAME}.

Dependent item hyperv.s2d.pool.total[{#POOL.NAME}]

Preprocessing

  • JSON Path: $.Data.S2D.Pools[?(@.Name=='{#POOL.NAME}')].Total.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Pool [{#POOL.NAME}]: Free space

Free space of Hyper-V S2D Pool {#POOL.NAME}.

Dependent item hyperv.s2d.pool.free[{#POOL.NAME}]

Preprocessing

  • JSON Path: $.Data.S2D.Pools[?(@.Name=='{#POOL.NAME}')].Free.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Pool [{#POOL.NAME}]: Space utilization

Space utilization of Hyper-V S2D Pool {#POOL.NAME}.

Dependent item hyperv.s2d.pool.utilization[{#POOL.NAME}]

Preprocessing

  • JSON Path: $.Data.S2D.Pools[?(@.Name=='{#POOL.NAME}')].first()

    ⛔️Custom on fail: Discard value

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

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for S2D pool discovery

Name Description Expression Severity Dependencies and additional info
Hyper-V Failover Cluster: S2D Pool [{#POOL.NAME}] not ready

Trigger fires when Hyper-V S2D Pool {#POOL.NAME} is not ready.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.s2d.pool.status[{#POOL.NAME}])<>2 High
Hyper-V Failover Cluster: S2D Pool [{#POOL.NAME}]: Unhealthy

Trigger fires when Hyper-V S2D Pool {#POOL.NAME} is unhealthy.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.s2d.pool.health[{#POOL.NAME}])<>0 High
Hyper-V Failover Cluster: S2D Pool [{#POOL.NAME}]: High space utilization

Trigger fires when the space utilization on Hyper-V S2D Pool {#POOL.NAME} exceeds {$HYPERV.TRIGGER.POOL.SPACE.UTILIZATION:"{#POOL.NAME}"}%.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.s2d.pool.utilization[{#POOL.NAME}])>{$HYPERV.TRIGGER.POOL.SPACE.UTILIZATION:"{#POOL.NAME}"} Warning

LLD rule S2D physical disk discovery

Name Description Type Key and additional info
S2D physical disk discovery

Discovery of Hyper-V S2D Physical Disks.

Dependent item hyperv.s2d.disk.discovery

Preprocessing

  • JSON Path: $.Data.S2D.PhysicalDisks

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Item prototypes for S2D physical disk discovery

Name Description Type Key and additional info
S2D Physical Disk [{#DISK.NODE}/{#DISK.SLOT}/{#DISK.MODEL}]: Size

Size of Hyper-V S2D Physical Disk {#DISK.ID} on Node {#DISK.NODE}.

Dependent item hyperv.s2d.disk.size[{#DISK.ID}]

Preprocessing

  • JSON Path: $.Data.S2D.PhysicalDisks[?(@.Id=='{#DISK.ID}')].Size.first()

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Physical Disk [{#DISK.NODE}/{#DISK.SLOT}/{#DISK.MODEL}]: Type

Type of Hyper-V S2D Physical Disk {#DISK.ID} on Node {#DISK.NODE}.

Dependent item hyperv.s2d.disk.type[{#DISK.ID}]

Preprocessing

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

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Physical Disk [{#DISK.NODE}/{#DISK.SLOT}/{#DISK.MODEL}]: Health status

Health status of Hyper-V S2D Physical Disk {#DISK.ID} on Node {#DISK.NODE}.

Dependent item hyperv.s2d.disk.health[{#DISK.ID}]

Preprocessing

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

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

S2D Physical Disk [{#DISK.NODE}/{#DISK.SLOT}/{#DISK.MODEL}]: Operational status

Operational status of Hyper-V S2D Physical Disk {#DISK.ID} on Node {#DISK.NODE}.

Dependent item hyperv.s2d.disk.status[{#DISK.ID}]

Preprocessing

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

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for S2D physical disk discovery

Name Description Expression Severity Dependencies and additional info
Hyper-V Failover Cluster: S2D Physical Disk [{#DISK.NODE}/{#DISK.SLOT}/{#DISK.MODEL}]: Unhealthy

Trigger fires when Hyper-V S2D Physical Disk {#DISK.ID} on Node {#DISK.NODE} is unhealthy.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.s2d.disk.health[{#DISK.ID}])<>0 High
Hyper-V Failover Cluster: S2D Physical Disk [{#DISK.NODE}/{#DISK.SLOT}/{#DISK.MODEL}]: Not ready

Trigger fires when Hyper-V S2D Physical Disk {#DISK.ID} on Node {#DISK.NODE} is not ready.

last(/Microsoft Hyper-V Failover Cluster by SSH/hyperv.s2d.disk.status[{#DISK.ID}])<>2 High

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

Articles and documentation

+ Propose new article

No se encuentra la integración que necesitas?