Signed-off-by: EisenbergD <dominik.eisenberg@beiersdorf.com> Co-authored-by: EisenbergD <dominik.eisenberg@beiersdorf.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
54 KiB
hyperv collector
The hyperv collector exposes metrics about the Hyper-V hypervisor
| Metric name prefix | hyperv |
| Source | Performance counters, Hyper-V WMI (root/virtualization/v2), virtdisk.dll |
| Enabled by default? | No |
Flags
--collector.hyperv.enabled
Comma-separated list of collectors to use, for example:
--collector.hyperv.enabled=datastore,dynamic_memory_balancer,dynamic_memory_vm,host,hypervisor_logical_processor,hypervisor_root_partition,hypervisor_root_virtual_processor,hypervisor_virtual_processor,legacy_network_adapter,replica_vm,virtual_hard_disk,virtual_machine_health_summary,virtual_machine_vid_partition,virtual_network_adapter,virtual_network_adapter_drop_reasons,virtual_smb,virtual_storage_device,virtual_switch,wmi_health
--collector.hyperv.virtual-hard-disk.refresh-interval
Interval at which the virtual_hard_disk sub-collector reads the disks in the background, for example 10m.
Scrapes publish the values of the last refresh. Default: 5m.
Metrics
Hyper-V Datastore
Sub-collector datastore. It reads the Hyper-V DataStore performance counter set. Each virtual machine has its own
instances, named after the VM GUID, for example <VM GUID> configuration file and <VM GUID> runtime file. They
describe the files in which Hyper-V keeps the configuration and runtime state of the virtual machine (.vmcx,
.vmrs, see virtual machine file types), for example their fragmentation, free space in their tables and the reads and writes to them. All metrics are
prefixed with windows_hyperv_datastore.
Note
A Hyper-V DataStore is not a storage volume, unlike a datastore in VMware vSphere. These metrics don't report the capacity or usage of the volumes that hold the virtual machines. For Cluster Shared Volumes, use the
shared_volumessub-collector of themsclustercollector. For volumes of a single host, use thelogical_diskcollector.The counter set has no instances on a host without virtual machines. The sub-collector then exports no
windows_hyperv_datastore_*series and doesn't report an error.
| Metric Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_datastore_fragmentation_ratio |
Represents the fragmentation ratio of the DataStore. | gauge | datastore |
windows_hyperv_datastore_sector_size_bytes |
Represents the sector size of the DataStore in bytes. | gauge | datastore |
windows_hyperv_datastore_data_alignment_bytes |
Represents the data alignment of the DataStore in bytes. | gauge | datastore |
windows_hyperv_datastore_current_replay_log_size_bytes |
Represents the current replay log size of the DataStore in bytes. | gauge | datastore |
windows_hyperv_datastore_available_entries |
Represents the number of available entries inside object tables. | gauge | datastore |
windows_hyperv_datastore_empty_entries |
Represents the number of empty entries inside object tables. | gauge | datastore |
windows_hyperv_datastore_free_bytes |
Represents the number of free bytes inside key tables. | gauge | datastore |
windows_hyperv_datastore_data_end_bytes |
Represents the data end of the DataStore in bytes. | gauge | datastore |
windows_hyperv_datastore_file_objects |
Represents the number of file objects in the DataStore. | gauge | datastore |
windows_hyperv_datastore_object_tables |
Represents the number of object tables in the DataStore. | gauge | datastore |
windows_hyperv_datastore_key_tables |
Represents the number of key tables in the DataStore. | gauge | datastore |
windows_hyperv_datastore_file_data_size_bytes |
Represents the file data size in bytes of the DataStore. | gauge | datastore |
windows_hyperv_datastore_table_data_size_bytes |
Represents the table data size in bytes of the DataStore. | gauge | datastore |
windows_hyperv_datastore_names_size_bytes |
Represents the names size in bytes of the DataStore. | gauge | datastore |
windows_hyperv_datastore_number_of_keys |
Represents the number of keys in the DataStore. | gauge | datastore |
windows_hyperv_datastore_reconnect_latency_microseconds |
Represents the reconnect latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_disconnect_count |
Represents the disconnect count of the DataStore. | counter | datastore |
windows_hyperv_datastore_write_to_file_byte_latency_microseconds |
Represents the write-to-file byte latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_write_to_file_byte_count |
Represents the write-to-file byte count of the DataStore. | counter | datastore |
windows_hyperv_datastore_write_to_file_count |
Represents the write-to-file count of the DataStore. | counter | datastore |
windows_hyperv_datastore_read_from_file_byte_latency_microseconds |
Represents the read-from-file byte latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_read_from_file_byte_count |
Represents the read-from-file byte count of the DataStore. | counter | datastore |
windows_hyperv_datastore_read_from_file_count |
Represents the read-from-file count of the DataStore. | counter | datastore |
windows_hyperv_datastore_write_to_storage_byte_latency_microseconds |
Represents the write-to-storage byte latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_write_to_storage_byte_count |
Represents the write-to-storage byte count of the DataStore. | counter | datastore |
windows_hyperv_datastore_write_to_storage_count |
Represents the write-to-storage count of the DataStore. | counter | datastore |
windows_hyperv_datastore_read_from_storage_byte_latency_microseconds |
Represents the read-from-storage byte latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_read_from_storage_byte_count |
Represents the read-from-storage byte count of the DataStore. | counter | datastore |
windows_hyperv_datastore_read_from_storage_count |
Represents the read-from-storage count of the DataStore. | counter | datastore |
windows_hyperv_datastore_commit_byte_latency_microseconds |
Represents the commit byte latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_commit_byte_count |
Represents the commit byte count of the DataStore. | counter | datastore |
windows_hyperv_datastore_commit_count |
Represents the commit count of the DataStore. | counter | datastore |
windows_hyperv_datastore_cache_update_operation_latency_microseconds |
Represents the cache update operation latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_cache_update_operation_count |
Represents the cache update operation count of the DataStore. | counter | datastore |
windows_hyperv_datastore_commit_operation_latency_microseconds |
Represents the commit operation latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_commit_operation_count |
Represents the commit operation count of the DataStore. | counter | datastore |
windows_hyperv_datastore_compact_operation_latency_microseconds |
Represents the compact operation latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_compact_operation_count |
Represents the compact operation count of the DataStore. | counter | datastore |
windows_hyperv_datastore_load_file_operation_latency_microseconds |
Represents the load file operation latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_load_file_operation_count |
Represents the load file operation count of the DataStore. | counter | datastore |
windows_hyperv_datastore_remove_operation_latency_microseconds |
Represents the remove operation latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_remove_operation_count |
Represents the remove operation count of the DataStore. | counter | datastore |
windows_hyperv_datastore_query_size_operation_latency_microseconds |
Represents the query size operation latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_query_size_operation_count |
Represents the query size operation count of the DataStore. | counter | datastore |
windows_hyperv_datastore_set_operation_latency_microseconds |
Represents the set operation latency in microseconds of the DataStore. | gauge | datastore |
windows_hyperv_datastore_set_operation_count |
Represents the set operation count of the DataStore. | counter | datastore |
Hyper-V Dynamic Memory Balancer
Some metrics explained: https://learn.microsoft.com/en-us/archive/blogs/chrisavis/monitoring-dynamic-memory-in-windows-server-hyper-v-2012
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_dynamic_memory_balancer_available_memory_bytes |
Represents the amount of memory left on the node. | gauge | balancer |
windows_hyperv_dynamic_memory_balancer_available_memory_for_balancing_bytes |
Represents the available memory for balancing purposes. | gauge | balancer |
windows_hyperv_dynamic_memory_balancer_average_pressure_ratio |
Represents the average system pressure on the balancer node among all balanced objects. | gauge | balancer |
windows_hyperv_dynamic_memory_balancer_system_current_pressure_ratio |
Represents the current pressure in the system. | gauge | balancer |
Hyper-V Dynamic Memory VM
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_dynamic_memory_vm_added_total |
Represents the cumulative amount of memory added to the VM. | counter | vm |
windows_hyperv_dynamic_memory_vm_pressure_current_ratio |
Represents the current pressure in the VM. | gauge | vm |
windows_hyperv_dynamic_memory_vm_guest_available_bytes |
Represents the current amount of available memory in the VM (reported by the VM). | gauge | vm |
windows_hyperv_dynamic_memory_vm_guest_visible_physical_memory_bytes |
Represents the amount of memory visible in the VM. | gauge | vm |
windows_hyperv_dynamic_memory_vm_pressure_maximum_ratio |
Represents the maximum pressure band in the VM. | gauge | vm |
windows_hyperv_dynamic_memory_vm_add_operations_total |
Represents the total number of add operations for the VM. | counter | vm |
windows_hyperv_dynamic_memory_vm_remove_operations_total |
Represents the total number of remove operations for the VM. | counter | vm |
windows_hyperv_dynamic_memory_vm_pressure_minimum_ratio |
Represents the minimum pressure band in the VM. | gauge | vm |
windows_hyperv_dynamic_memory_vm_physical_bytes |
Represents the current amount of memory in the VM. | gauge | vm |
windows_hyperv_dynamic_memory_vm_removed_bytes_total |
Represents the cumulative amount of memory removed from the VM. | counter | vm |
Windows reports no instance name for VMs managed by the Host Compute Service, such as the WSL 2 VM.
The first such VM has vm="(unknown)", further ones vm="(unknown)#1", vm="(unknown)#2" and so on.
The suffix only keeps the series unique and does not identify the VM across scrapes.
Hyper-V Host
Metrics about the host's CPU allocation. Processor counts per virtual machine are
read from the Host Compute Service API; the logical processor count comes from the
Hyper-V Hypervisor Logical Processor performance counter object.
| Metric Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_host_logical_processor_count |
Number of logical processors on the host | gauge | None |
windows_hyperv_vm_processor_count |
Number of virtual processors assigned to the VM | gauge | vm_id, vm |
windows_hyperv_total_vm_processor_count |
Total number of virtual processors assigned to all VMs | gauge | None |
The CPU allocation ratio can be computed in PromQL. Virtual cores per logical host core:
windows_hyperv_total_vm_processor_count / windows_hyperv_host_logical_processor_count
Where hyper-threading (SMT) is enabled, the host reports two logical cores per physical core. Multiply by the number of threads per core to get the ratio per physical core.
Hyper-V Hypervisor Logical Processor
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_hypervisor_logical_processor_time_total |
Time that processor spent in different modes (hypervisor, guest, idle) | counter | core,state |
windows_hyperv_hypervisor_logical_processor_total_run_time_total |
Time that processor spent | counter | core |
windows_hyperv_hypervisor_logical_processor_context_switches_total |
The rate of virtual processor context switches on the processor. | counter | core |
Hyper-V Hypervisor Root Partition
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_root_partition_address_spaces |
The number of address spaces in the virtual TLB of the partition | gauge | None |
windows_hyperv_root_partition_attached_devices |
The number of devices attached to the partition | gauge | None |
windows_hyperv_root_partition_deposited_pages |
The number of pages deposited into the partition | gauge | None |
windows_hyperv_root_partition_device_dma_errors |
An indicator of illegal DMA requests generated by all devices assigned to the partition | gauge | None |
windows_hyperv_root_partition_device_interrupt_errors |
An indicator of illegal interrupt requests generated by all devices assigned to the partition | gauge | None |
windows_hyperv_root_partition_device_interrupt_mappings |
The number of device interrupt mappings used by the partition | gauge | None |
windows_hyperv_root_partition_device_interrupt_throttle_events |
The number of times an interrupt from a device assigned to the partition was temporarily throttled because the device was generating too many interrupts | gauge | None |
windows_hyperv_root_partition_preferred_numa_node_index |
The number of pages present in the GPA space of the partition (zero for root partition) | gauge | None |
windows_hyperv_root_partition_gpa_space_modifications |
The rate of modifications to the GPA space of the partition | counter | None |
windows_hyperv_root_partition_io_tlb_flush_cost |
The average time (in nanoseconds) spent processing an I/O TLB flush | gauge | None |
windows_hyperv_root_partition_io_tlb_flush |
The rate of flushes of I/O TLBs of the partition | counter | None |
windows_hyperv_root_partition_recommended_virtual_tlb_size |
The recommended number of pages to be deposited for the virtual TLB | gauge | None |
windows_hyperv_root_partition_physical_pages_allocated |
The number of timer interrupts skipped for the partition | gauge | None |
windows_hyperv_root_partition_1G_device_pages |
The number of 1G pages present in the device space of the partition | gauge | None |
windows_hyperv_root_partition_1G_gpa_pages |
The number of 1G pages present in the GPA space of the partition | gauge | None |
windows_hyperv_root_partition_2M_device_pages |
The number of 2M pages present in the device space of the partition | gauge | None |
windows_hyperv_root_partition_2M_gpa_pages |
The number of 2M pages present in the GPA space of the partition | gauge | None |
windows_hyperv_root_partition_4K_device_pages |
The number of 4K pages present in the device space of the partition | gauge | None |
windows_hyperv_root_partition_4K_gpa_pages |
The number of 4K pages present in the GPA space of the partition | gauge | None |
windows_hyperv_root_partition_virtual_tlb_flush_entries |
The rate of flushes of the entire virtual TLB | counter | None |
windows_hyperv_root_partition_virtual_tlb_pages |
The number of pages used by the virtual TLB of the partition | gauge | None |
Hyper-V Hypervisor Root Virtual Processor
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_hypervisor_root_virtual_processor_time_total |
Time that processor spent in different modes (hypervisor, guest_run, guest_idle, remote) | counter | core,state |
windows_hyperv_hypervisor_root_virtual_processor_total_run_time_total |
Time that processor spent | counter | core |
windows_hyperv_hypervisor_root_virtual_cpu_wait_time_per_dispatch_total |
The average time (in nanoseconds) spent waiting for a virtual processor to be dispatched onto a logical processor | counter | core |
Hyper-V Legacy Network Adapter
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_legacy_network_adapter_bytes_dropped_total |
Bytes Dropped is the number of bytes dropped on the network adapter | counter | adapter |
windows_hyperv_legacy_network_adapter_bytes_received_total |
Bytes received is the number of bytes received on the network adapter | counter | adapter |
windows_hyperv_legacy_network_adapter_bytes_sent_total |
Bytes sent is the number of bytes sent over the network adapter | counter | adapter |
windows_hyperv_legacy_network_adapter_frames_dropped_total |
Frames Dropped is the number of frames dropped on the network adapter | counter | adapter |
windows_hyperv_legacy_network_adapter_frames_received_total |
Frames received is the number of frames received on the network adapter | counter | adapter |
windows_hyperv_legacy_network_adapter_frames_sent_total |
Frames sent is the number of frames sent over the network adapter | counter | adapter |
Hyper-V Replica VM
Sub-collector replica_vm, enabled by default. The performance counter metrics come from the
Hyper-V Replica VM counter set and only exist for virtual machines with Hyper-V Replica enabled.
The health and state metrics come from the Msvm_ReplicationRelationship WMI class in the
root/virtualization/v2 namespace and exist for every virtual machine, including those without replication.
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_replica_vm_average_replication_latency_seconds |
The average time taken to replicate the virtual machine | gauge | vm |
windows_hyperv_replica_vm_average_replication_size_bytes |
The average size of the replicated data | gauge | vm |
windows_hyperv_replica_vm_compression_efficiency |
The compression efficiency of the replicated data | gauge | vm |
windows_hyperv_replica_vm_last_replication_size_bytes |
The size of the last replicated data | gauge | vm |
windows_hyperv_replica_vm_network_received_bytes_total |
The total number of bytes received over the network for replication | counter | vm |
windows_hyperv_replica_vm_network_sent_bytes_total |
The total number of bytes sent over the network for replication | counter | vm |
windows_hyperv_replica_vm_replications_total |
The total number of replication cycles | counter | vm |
windows_hyperv_replica_vm_replication_latency_seconds |
The time taken by the last replication of the virtual machine | gauge | vm |
windows_hyperv_replica_vm_resynchronized_bytes_total |
The total number of bytes sent during resynchronization | counter | vm |
windows_hyperv_replica_vm_health |
The replication health of the virtual machine, see below | gauge | vm, relationship |
windows_hyperv_replica_vm_state |
The replication state of the virtual machine, see below | gauge | vm, relationship |
The relationship label is primary for the primary replication relationship and extended for
extended replication.
Values of windows_hyperv_replica_vm_health:
| Value | Health |
|---|---|
| 0 | Not applicable |
| 1 | OK |
| 2 | Warning |
| 3 | Critical |
Values of windows_hyperv_replica_vm_state:
| Value | State |
|---|---|
| 0 | Disabled |
| 1 | Ready for replication |
| 2 | Waiting to complete initial replication |
| 3 | Replicating |
| 4 | Synced replication complete |
| 5 | Recovered |
| 6 | Committed |
| 7 | Suspended |
| 8 | Critical |
| 9 | Waiting to start resynchronization |
| 10 | Resynchronizing |
| 11 | Resynchronization suspended |
| 12 | Failover in progress |
| 13 | Failback in progress |
| 14 | Failback complete |
| 15 | Disk update in progress |
| 16 | Disk update critical |
| 17 | Unknown |
| 18 | Repurpose replication in progress |
| 19 | Prepared for sync replication |
| 20 | Prepared for group reverse replication |
| 21 | Fire drill in progress |
Example alert:
- alert: HyperVReplicationCritical
expr: windows_hyperv_replica_vm_health == 3
for: 15m
labels:
severity: critical
annotations:
summary: Hyper-V replication of {{ $labels.vm }} is critical on {{ $labels.instance }}
Hyper-V Hypervisor Virtual Processor
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_hypervisor_virtual_processor_mode_time_total |
Time that processor spent in different modes (hypervisor, guest_run, guest_idle, remote) | counter | vm, core, state |
windows_hyperv_hypervisor_virtual_processor_run_time_total |
Time that processor spent | counter | vm, core |
windows_hyperv_hypervisor_virtual_processor_cpu_wait_time_per_dispatch_total |
The average time (in nanoseconds) spent waiting for a virtual processor to be dispatched onto a logical processor. | counter | vm, core |
windows_hyperv_hypervisor_virtual_processor_time_total |
Deprecated: use windows_hyperv_hypervisor_virtual_processor_mode_time_total. Time that processor spent in different modes (hypervisor, guest_run, guest_idle, remote) |
counter | vm, core, state |
windows_hyperv_hypervisor_virtual_processor_total_run_time_total |
Deprecated: use windows_hyperv_hypervisor_virtual_processor_run_time_total. Time that processor spent |
counter | vm, core |
Hyper-V Virtual Network Adapter
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_virtual_network_adapter_received_bytes_total |
Represents the total number of bytes received per second by the network adapter | counter | adapter |
windows_hyperv_virtual_network_adapter_sent_bytes_total |
Represents the total number of bytes sent per second by the network adapter | counter | adapter |
windows_hyperv_virtual_network_adapter_incoming_dropped_packets_total |
Represents the total number of dropped packets per second in the incoming direction of the network adapter | counter | adapter |
windows_hyperv_virtual_network_adapter_outgoing_dropped_packets_total |
Represents the total number of dropped packets per second in the outgoing direction of the network adapter | counter | adapter |
windows_hyperv_virtual_network_adapter_received_packets_total |
Represents the total number of packets received per second by the network adapter | counter | adapter |
windows_hyperv_virtual_network_adapter_sent_packets_total |
Represents the total number of packets sent per second by the network adapter | counter | adapter |
Hyper-V Virtual Network Adapter Drop Reasons
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_virtual_network_adapter_drop_reasons |
Hyper-V Virtual Network Adapter Drop Reasons | counter | adapter,reason,direction |
Hyper-V Virtual SMB
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_virtual_smb_direct_mapped_sections |
Represents the number of direct-mapped sections in the virtual SMB` | gauge | instance |
windows_hyperv_virtual_smb_direct_mapped_pages |
Represents the number of direct-mapped pages in the virtual SMB` | gauge | instance |
windows_hyperv_virtual_smb_write_bytes_rdma |
Represents the number of bytes written per second using RDMA in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_write_bytes |
Represents the number of bytes written per second in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_read_bytes_rdma |
Represents the number of bytes read per second using RDMA in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_read_bytes |
Represents the number of bytes read per second in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_flush_requests |
Represents the number of flush requests per second in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_write_requests_rdma |
Represents the number of write requests per second using RDMA in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_write_requests |
Represents the number of write requests per second in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_read_requests_rdma |
Represents the number of read requests per second using RDMA in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_read_requests |
Represents the number of read requests per second in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_current_pending_requests |
Represents the current number of pending requests in the virtual SMB` | gauge | instance |
windows_hyperv_virtual_smb_current_open_file_count |
Represents the current number of open files in the virtual SMB` | gauge | instance |
windows_hyperv_virtual_smb_tree_connect_count |
Represents the number of tree connects in the virtual SMB` | gauge | instance |
windows_hyperv_virtual_smb_requests |
Represents the number of requests per second in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_sent_bytes |
Represents the number of bytes sent per second in the virtual SMB` | counter | instance |
windows_hyperv_virtual_smb_received_bytes |
Represents the number of bytes received per second in the virtual SMB` | counter | instance |
Hyper-V Virtual Switch
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_vswitch_broadcast_packets_received_total |
Represents the total number of broadcast packets received per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_broadcast_packets_sent_total |
Represents the total number of broadcast packets sent per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_bytes_total |
Represents the total number of bytes per second traversing the virtual switch | counter | vswitch |
windows_hyperv_vswitch_bytes_received_total |
Represents the total number of bytes received per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_bytes_sent_total |
Represents the total number of bytes sent per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_directed_packets_received_total |
Represents the total number of directed packets received per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_directed_packets_send_total |
Represents the total number of directed packets sent per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_dropped_packets_incoming_total |
Represents the total number of packet dropped per second by the virtual switch in the incoming direction | counter | vswitch |
windows_hyperv_vswitch_dropped_packets_outcoming_total |
Represents the total number of packet dropped per second by the virtual switch in the outgoing direction | counter | vswitch |
windows_hyperv_vswitch_extensions_dropped_packets_incoming_total |
Represents the total number of packet dropped per second by the virtual switch extensions in the incoming direction | counter | vswitch |
windows_hyperv_vswitch_extensions_dropped_packets_outcoming_total |
Represents the total number of packet dropped per second by the virtual switch extensions in the outgoing direction | counter | vswitch |
windows_hyperv_vswitch_learned_mac_addresses_total |
Represents the total number of learned MAC addresses of the virtual switch | counter | vswitch |
windows_hyperv_vswitch_multicast_packets_received_total |
Represents the total number of multicast packets received per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_multicast_packets_sent_total |
Represents the total number of multicast packets sent per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_number_of_send_channel_moves_total |
Represents the total number of send channel moves per second on this virtual switch | counter | vswitch |
windows_hyperv_vswitch_number_of_vmq_moves_total |
Represents the total number of VMQ moves per second on this virtual switch | counter | vswitch |
windows_hyperv_vswitch_packets_flooded_total |
Represents the total number of packets flooded by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_packets_total |
Represents the total number of packets per second traversing the virtual switch | counter | vswitch |
windows_hyperv_vswitch_packets_received_total |
Represents the total number of packets received per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_packets_sent_total |
Represents the total number of packets send per second by the virtual switch | counter | vswitch |
windows_hyperv_vswitch_purged_mac_addresses_total |
Represents the total number of purged MAC addresses of the virtual switch | counter | vswitch |
Hyper-V Virtual Storage Device
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_virtual_storage_device_error_count_total |
Represents the total number of errors that have occurred on this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_queue_length |
Deprecated: use rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total). Cumulative queue length in 100ns ticks, see below. |
gauge | device |
windows_hyperv_virtual_storage_device_bytes_read |
Represents the total number of bytes that have been read on this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_operations_read_total |
Represents the total number of read operations that have occurred on this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_bytes_written |
Represents the total number of bytes that have been written on this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_operations_written_total |
Represents the total number of write operations that have occurred on this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_io_latency_seconds_total |
Represents the total IO transfer latency for this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_latency_seconds |
Deprecated: use windows_hyperv_virtual_storage_device_io_latency_seconds_total. Cumulative IO transfer latency in 100ns ticks, see below. |
gauge | device |
windows_hyperv_virtual_storage_device_throughput_total |
Represents the total number of 8KB IO transfers completed by this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_normalized_throughput |
Represents the average number of IO transfers completed by this virtual device. | gauge | device |
windows_hyperv_virtual_storage_device_lower_io_latency_seconds_total |
Represents the total IO transfer latency on the underlying storage subsystem for this virtual device. | counter | device |
windows_hyperv_virtual_storage_device_lower_queue_length |
Deprecated: use rate(windows_hyperv_virtual_storage_device_lower_io_latency_seconds_total). Cumulative queue length in 100ns ticks, see below. |
gauge | device |
windows_hyperv_virtual_storage_device_lower_latency_seconds |
Deprecated: use windows_hyperv_virtual_storage_device_lower_io_latency_seconds_total. Cumulative IO transfer latency in 100ns ticks, see below. |
gauge | device |
windows_hyperv_io_quota_replenishment_rate |
Represents the IO quota replenishment rate for this virtual device. | gauge | device |
Deprecated latency and queue length metrics
The Latency, Lower Latency, Queue Length and Lower Queue Length performance counters
are averages that Windows computes from two samples. windows_exporter reads their raw values,
which only grow: the sum of all IO latencies in 100ns ticks. The raw queue length values are
the same as the raw latency values.
windows_hyperv_virtual_storage_device_latency_seconds, windows_hyperv_virtual_storage_device_lower_latency_seconds,
windows_hyperv_virtual_storage_device_queue_length and windows_hyperv_virtual_storage_device_lower_queue_length
keep exposing these raw values as gauges for compatibility. They are deprecated and will be removed in a future release.
Use the *_io_latency_seconds_total counters instead:
# Average IO latency in seconds
rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total[5m])
/ rate(windows_hyperv_virtual_storage_device_throughput_total[5m])
# Average queue length
rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total[5m])
Hyper-V VM Vid Partition
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_vid_physical_pages_allocated |
The number of physical pages allocated | gauge | vm |
windows_hyperv_vid_preferred_numa_node_index |
The preferred NUMA node index associated with this partition | gauge | vm |
windows_hyperv_vid_remote_physical_pages |
The number of physical pages not allocated from the preferred NUMA node | gauge | vm |
Hyper-V WMI Health
Sub-collector wmi_health, enabled by default. It runs a minimal WQL query
(SELECT Name FROM Msvm_ComputerSystem WHERE Name = '<computer name>') against the
root/virtualization/v2 namespace on every scrape, so remove it from --collector.hyperv.enabled if you don't need it.
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_wmi_health |
Hyper-V WMI health status. 1 if the Hyper-V WMI namespace is responding, 0 if it is broken or not responding | gauge | None |
WMI can stop responding while the host and the exporter otherwise keep running. On a Hyper-V
cluster node, Failover Cluster Manager generally cannot connect to the host in that state, and
recovery often requires a reboot. The query times out after 5 seconds and is then reported as 0.
Example alert:
- alert: HyperVWMIUnhealthy
expr: windows_hyperv_wmi_health == 0
for: 5m
labels:
severity: critical
annotations:
summary: Hyper-V WMI is not responding on {{ $labels.instance }}
Hyper-V Virtual Hard Disk
Sub-collector virtual_hard_disk, enabled by default. It reports the size and provisioning type of every
virtual hard disk (VHD, VHDX, checkpoint AVHDX) attached to a virtual machine on this host.
The disks are listed with two WQL queries against the root/virtualization/v2 namespace
(Msvm_ComputerSystem and Msvm_StorageAllocationSettingData); the sizes are read with virtdisk.dll,
the API behind Get-VHD. On a failover cluster, each node reports the virtual machines it currently owns.
The disks are read in the background every --collector.hyperv.virtual-hard-disk.refresh-interval (default 5m),
so a scrape only publishes the last values and a slow or unreachable disk doesn't block the hyperv collector.
The values can be up to one interval old. A disk that can't be read is logged and counted in
windows_hyperv_virtual_hard_disk_read_errors; only a failed disk listing fails the collector.
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_virtual_hard_disk_size_bytes |
Maximum size of the virtual hard disk, as seen by the VM | gauge | vm, vm_id, path, type, device |
windows_hyperv_virtual_hard_disk_file_size_bytes |
Size of the virtual hard disk file on storage | gauge | vm, vm_id, path, type, device |
windows_hyperv_virtual_hard_disk_read_errors |
Number of attached virtual hard disks that could not be read in the last refresh | gauge | None |
windows_hyperv_virtual_hard_disk_last_refresh_timestamp_seconds |
Time of the last successful refresh | gauge | None |
type is fixed (thick provisioned), dynamic (thin provisioned), differencing (checkpoint or child disk)
or unknown.
For a VM with checkpoints, path is the current .avhdx and file_size_bytes only counts that file.
The parent disks aren't reported, so summing file_size_bytes per VM undercounts its storage.
device is the instance name of the disk in the Hyper-V Virtual Storage Device counter set, the same value as the
device label of windows_hyperv_virtual_storage_device_*. It joins the I/O metrics with the virtual machine.
The right-hand side is turned into 1 first, so the join only adds the vm label and keeps the values:
rate(windows_hyperv_virtual_storage_device_io_latency_seconds_total[5m])
* on (instance, device) group_left (vm)
(0 * windows_hyperv_virtual_hard_disk_size_bytes{device!=""} + 1)
The instance names are read from the counter set on every refresh and matched to path (Hyper-V replaces \ with
- and (…) with […]). device is empty when the disk has no instance, which is the case for virtual machines that
aren't running. The instance of a VHD-format checkpoint (.avhd) is named after the base disk of its chain; device is
then that name. VHDX checkpoints (.avhdx) have their own instance.
Space promised to thin provisioned disks but not yet allocated:
sum by (instance) (
windows_hyperv_virtual_hard_disk_size_bytes{type="dynamic"}
- windows_hyperv_virtual_hard_disk_file_size_bytes{type="dynamic"}
)
Disks that could not be read, and stale data:
- alert: HyperVVirtualHardDiskReadErrors
expr: windows_hyperv_virtual_hard_disk_read_errors > 0
for: 30m
- alert: HyperVVirtualHardDiskStale
expr: time() - windows_hyperv_virtual_hard_disk_last_refresh_timestamp_seconds > 3 * 300
Hyper-V Virtual Machine Health Summary
| Name | Description | Type | Labels |
|---|---|---|---|
windows_hyperv_virtual_machine_health_total_count |
Represents the number of virtual machines with health | gauge | state |
Example metric
This collector does not yet have explained examples, we would appreciate your help adding them!
Useful queries
Percent of physical CPU resources used per VM (on instance "localhost")
(sum (rate(windows_hyperv_hypervisor_virtual_processor_mode_time_total{state="hypervisor",instance="localhost"}[1m]))) / ignoring(state,vm) group_left max (windows_cpu_logical_processor{instance="localhost"}) / 100000
Percent of physical CPU resources used by all VMs (on all monitored hosts)
(sum by (instance)(rate(windows_hyperv_hypervisor_virtual_processor_run_time_total{}[1m]))) / max by (instance)(windows_cpu_logical_processor{}) / 100000
Percent of physical CPU resources by the hosts themselves (on all monitored hosts)
(sum by (instance)(rate(windows_hyperv_hypervisor_root_virtual_processor_total_run_time_total{}[1m]))) / sum by (instance)(windows_cpu_logical_processor{}) / 100000
Percent of physical CPU resources by the hypervisor (on all monitored hosts)
(sum by (instance)(rate(windows_hyperv_hypervisor_logical_processor_time_total{}[1m]))) / sum by (instance)(windows_cpu_logical_processor{}) / 100000
Alerting examples
This collector does not yet have alerting examples, we would appreciate your help adding them!