Monitoring physical servers helps in collecting run-time metrics of Hyper-V application services running on a physical server. For information about the metrics collected for the Hyper-V application service, see HyperV Metrics.

The Hyper-V application service metrics collection is supported on the following operating systems:
  • Windows Server 2016
  • Windows Server 2019

To monitor the Hyper-V application service running on a target physical server, complete the following steps:

Procedure

  1. Update the Telegraf configuration in the target physical server after running the sample script or by signing the certificate with or without using the script.
    [[inputs.win_perf_counters]]
      plugin_name_override="hyperv"
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Virtual Machine Health Summary"
      Instances = ["------"]
      Measurement = "hyperv.vm.health"
      Counters = ["Health Ok", "Health Critical"]
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Dynamic Memory VM"
      Instances = ["*"]
      Measurement = "hyperv.vm.memory"
      Counters = ["Physical Memory", "Added Memory", "Guest Visible Physical Memory"]
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Hypervisor Virtual Processor"
      Instances = ["*"]
      Measurement = "hyperv.hypervisor.virtual.processor"
      Counters = ["% Guest Run Time", "% Hypervisor Run Time", "% Total Run Time"]
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Hypervisor Root Virtual Processor"
      Instances = ["*"]
      Measurement = "hyperv.hypervisor.root.virtual.processor"
      Counters = ["% Guest Run Time", "% Hypervisor Run Time", "% Total Run Time"]
      IncludeTotal = true
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Virtual IDE Controller (Emulated)"
      Instances = ["*"]
      Measurement = "hyperv.virtual.ide.controller"
      Counters = ["Write Bytes/sec", "Read Bytes/sec", "Written Sectors/sec", "Read Sectors/sec"]
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Virtual Network Adapter"
      Instances = ["*"]
      Measurement = "hyperv.virtual.net.adapter"
      Counters = ["Bytes/sec", "Bytes Received/sec", "Bytes Sent/Sec", "Packets Sent/sec", "Packets Received/sec", "Packets/sec"]
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Legacy Network Adapter"
      Instances = ["*"]
      Measurement = "hyperv.legacy.net.adapter"
      Counters = ["Bytes Dropped", "Bytes Received/sec", "Bytes Sent/Sec"]
      [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Hypervisor Partition"
      Instances = ["*"]
      Measurement = "hyperv.hypervisor.partition"
      Counters = ["Virtual Processors"]
    [[inputs.win_perf_counters.object]]
      ObjectName = "Hyper-V Virtual Storage Device"
      Instances = ["*"]
      Measurement = "hyperv.virtual.storage.device"
      Counters = [
      "Maximum Bandwidth", "Read Bytes/sec", "Write Bytes/sec", "Queue Length",
      "Lower Latency", "Minimum IO Rate", "Maximum IO Rate", "Latency", "Throughput",
      "Lower Queue Length", "Queue Length", "Normalized Throughput", "Write Operations/Sec",
      "Read Operations/Sec", "Write Bytes/sec", "Read Bytes/sec", "Error Count",
      "Flush Count", "Write Count", "Read Count"
      ]
    [[inputs.win_perf_counters.object]]
      ObjectName = "Processor"
      Instances = ["*"]
      Counters = ["% Idle Time", "% Interrupt Time", "% Privileged Time", "% Processor Time", "% User Time", "Interrupts/sec"]
      Measurement = "hyperv.host.cpu"
      IncludeTotal = true
      [[inputs.win_perf_counters.object]]
      ObjectName = "LogicalDisk"
      Instances = ["*"]
      Counters = ["% Disk Read Time", "% Disk Write Time", "% Free Space", "% Idle Time", "Avg. Disk Bytes/Read", "Avg. Disk Bytes/Write", "Avg. Disk Queue Length", "Avg. Disk sec/Read", "Avg. Disk sec/Write", "Avg. Disk Write Queue Length", "Free Megabytes", "Split IO/Sec"]
      Measurement = "hyperv.host.disk"
      IncludeTotal = true
    [[inputs.win_perf_counters.object]]
      ObjectName = "Memory"
      Counters = ["Available Bytes", "Cache Bytes", "Committed Bytes", "Cache Faults/sec", "Demand Zero Faults/sec", "Page Faults/sec", "Pages/sec", "Transition Faults/sec", "Pool Nonpaged Bytes", "Pool Paged Bytes"]
      Instances = ["------"]
      Measurement = "hyperv.host.mem"
      [[inputs.win_perf_counters.object]]
      ObjectName = "Network Interface"
      Counters = ["Bytes Received/sec", "Bytes Sent/sec", "Packets Outbound Discarded", "Packets Outbound Errors", "Packets Received Discarded", "Packets Received Errors", "Packets Received/sec", "Packets Sent/sec", "Bytes Total/sec", "Current Bandwidth", "Output Queue Length"]
      Instances = ["*"]
      Measurement = "hyperv.host.net"
      IncludeTotal = true
    [[inputs.win_perf_counters.object]]
      ObjectName = "System"
      Counters = ["Context Switches/sec", "Processes", "Processor Queue Length", "System Calls/sec", "System Up Time", "Threads"]
      Instances = ["------"]
      Measurement = "hyperv.host.system"
    [[inputs.win_perf_counters.object]]
      ObjectName = "Process"
      Counters = ["% Privileged Time", "% Processor Time", "% User Time", "Elapsed Time", "Handle Count", "IO Read Bytes/sec", "IO Read Operations/sec", "IO Write Bytes/sec", "IO Write Operations/sec", "Private Bytes", "Thread Count", "Virtual Bytes", "Working Set", "Working Set - Private"]
      Instances = ["_Total"]
      Measurement = "hyperv.host.process"
    
    Note: Do not change any other Telegraf configurations as it can lead to undesirable behavior.
  2. Restart Telegraf and wait for 10 minutes to get the data.

What to do next

You can view metrics by selecting the relevant object from the Metrics tab from the vRealize Operations Cloud user interface.