Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/a-schild/Zabbix-HyperV-Templates
Zabbix Templates and agent script for HyperV monitoring
https://github.com/a-schild/Zabbix-HyperV-Templates
Last synced: about 17 hours ago
JSON representation
Zabbix Templates and agent script for HyperV monitoring
- Host: GitHub
- URL: https://github.com/a-schild/Zabbix-HyperV-Templates
- Owner: a-schild
- License: other
- Created: 2014-11-24T17:03:48.000Z (almost 10 years ago)
- Default Branch: main
- Last Pushed: 2024-11-13T10:42:24.000Z (3 days ago)
- Last Synced: 2024-11-14T18:04:23.555Z (2 days ago)
- Language: PowerShell
- Size: 63.5 KB
- Stars: 55
- Watchers: 12
- Forks: 30
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Zabbix Agent 2 Templates for Hyper-V monitoring
## Description
Simple Hyper-V Guest and Host templates.Compatible with Zabbix Server 7.0+
The scripts are setup for the Agent2, but they also work with the
normal agent if you adapt some paths in the conf file.* Template Windows Hyper-V Guest
Discovers VM guest performance counters and creates Zabbix items for each of them.The following parameters are discovered and monitored:
* Hyper-V Virtual Storage Device (ops/s and Bytes/s)
* Hyper-V Virtual Network Adapter (Bytes/s)
* Hyper-V Hypervisor Virtual Processor(Total Run Time, %)
* Hyper-V VM replication status* Template Windows HyperV Host
The following _host_ parameters are monitored:
* Hyper-V Hypervisor Logical Processor(_Total)\% Guest Run Time
* Hyper-V Hypervisor Logical Processor(_Total)\% Hypervisor Run Time
* Hyper-V Hypervisor Logical Processor(_Total)\% Idle Time
* Hyper-V Hypervisor Root Virtual Processor(_Total)\% Guest Run Time
* Hyper-V Hypervisor Root Virtual Processor(_Total)\% Hypervisor Run Time
* Hyper-V Hypervisor Root Virtual Processor(_Total)\% Remote Run Time
* Hyper-V Hypervisor Root Virtual Processor(_Total)\% Total Run Time
* Hyper-V Hypervisor Virtual Processor(_Total)\% Guest Run Time
* Hyper-V Hypervisor Virtual Processor(_Total)\% Hypervisor Run Time
* Hyper-V Hypervisor Virtual Processor(_Total)\% Remote Run Time
* Hyper-V Hypervisor Virtual Processor(_Total)\% Total Run Time
* Hyper-V Virtual Switch(*)\Bytes
* Hyper-V Virtual Machine Health Summary\Health Critical
## Usage
* Import provided templates in this order
1. Template_Windows_HyperV_VM_Guest.xml (or the yaml version)
2. Template_Windows_HyperV_Host.xml (or the yaml version)* Copy provided PowerShell script to the desired location on your HyperV host machine.
`C:\Program Files\Zabbix Agent 2\` is the default used in the config file.* Assuming your host is called my-hyperv-hostname, you can create a self siged certificate and sign it as follow:
```$cert = New-SelfSignedCertificate -DnsName "my-hyperv-hostname" -type codesigning
Set-AuthenticodeSignature -Certificate $cert -FilePath 'C:\Program Files\Zabbix Agent 2\zabbix-vm-perf.ps1
$exportPath = "C:\myCert.cer"
Export-Certificate -Cert $cert -FilePath $exportPath
Import-Certificate -FilePath $exportPath -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
Import-Certificate -FilePath $exportPath -CertStoreLocation Cert:\LocalMachine\Root
Remove-Item -Path $exportPath
```* In case you don't care about security, you can lower the restrictions
If you downloaded the script from internet, then make sure windows is not blocking it.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
* Put the file hyper-v.conf in C:\Program files\Zabbix Agent 2\zabbix_agentd.d
Adjust the paths according to the previous step if needed* Restart zabbix agent.
* Set-up Hyper-V host in Zabbix interface.
* Add a new host, if needed.
* Link it with "Template Windows HyperV Host" template.
* Wait for a guest discovery to fire, it will:
* discover Hyper-V guests,
* create a new host for each VM,
* put discovered VM host into "Hyper-V VM" group,
* link VM host with "Template Windows HyperV VM Guest"
* Go to the Hyper-V host in the Zabbix interface and click on the discoveries, and click on test.
* If you get an error check
* If your certificate is signed/you changed the policy to unrestricted.
* If your path in the config file is correct.
```The argument 'C:\Program Files\Zabbix Agent 2\zabbix-vm-perf.ps1' to the -File parameter does not exist.
Provide the path to an existing '.ps1' file as an argument to the -File parameter.
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
```## F.A.Q.
- Depending on the load of your Hyper-V server, you will have to increase the default
Zabbix Temout from 3 to 10-30 seconds
- Make sure the agent is allowed to execute the zabbix-vm-perf.ps1 file.
For this open a cmd console in the `C:\Program Files\Zabbix Agent 2` location
Then type `powershell zabbix-vm-perf.ps1` + enter
This should return a json structure with all the VM's on this host,
including the vm state, and the replication status```cmd
c:\Program Files\Zabbix Agent 2\zabbix_agent2.d>powershell .\zabbix-vm-perf.ps1
```
Example output
```json
{
"data":[{ "{#VMNAME}":"apps-company" ,"{#VMSTATE}":"Running", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"Suspended" },
{ "{#VMNAME}":"ipva-company" ,"{#VMSTATE}":"Running", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"Suspended" },
{ "{#VMNAME}":"rp-company" ,"{#VMSTATE}":"Running", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"Error" },
{ "{#VMNAME}":"SV02" ,"{#VMSTATE}":"Running", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"Error" },
{ "{#VMNAME}":"sv03" ,"{#VMSTATE}":"Running", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"Disabled" },
{ "{#VMNAME}":"sv05" ,"{#VMSTATE}":"Running", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"Error" },
{ "{#VMNAME}":"sv101" ,"{#VMSTATE}":"Running", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"Error" },
{ "{#VMNAME}":"XCase" ,"{#VMSTATE}":"Off", "{#VMHOST}":"SV02-HV" ,"{#REPLICATION}":"WaitingForStartResynchronize" }
]
}
```If the discovery still does not work, try to get the vm list via zabbix_get and the agent.
You might have to allow 127.0.0.1 in the agent config.
This should return the same json data as invoking the script directly```cmd
zabbix_get -s 127.0.0.1 -k hyperv.discovery --tls-connect psk \
--tls-psk-identity SERVER-IDENTITY --tls-psk-file "C:\Program Files\Zabbix Agent 2\psk.key"
```## Bugs
* There are no Triggers for VM Guest.## Changelog
- 2024-11-13
- Switched performance counters to work with all OS languages.
Thanks to the new perf_counter_en zabbix item.
Updated documentation