Are there plans for being able to monitor snapshots in VMware? I've created a custom SSH sensor to achieve this with powershell and plink, however it is resource intensive.
VMware snapshots
Votes:
0
Best Answer
Votes:
0
I am doing just that with prtg.
Install the VMware Infrastructure (VI) Toolkit on Your probes.
Enable powershell script on probe.
Create this custom xml powershell script. Place it on Your probes and central server.
Do remember to call it with parameters like in the following decription.
And set timeout higher than 100 sec. it's a slow mofo depending on the size of Your Vmware farm offcourse :)
#--------------------------------------------------------------------------------------------- # Get the number of VM snapshots on ESX host or vCenter # # This script requires the installation of the VMware Infrastructure (VI) Toolkit for Windows. # # Args[0]:Server # Args[1]:Protocol (HTTP/HTTPS) # Args[2]:User # Args[3]:Password # Args[4]:Location (VI container(s), e.g. folders, datacenters, clusters). # Enclose in ' ' if location name contains spaces. # Args[5]:VM power state (PoweredOn, PoweredOff, * for all) # # Example 1: Snapshot count for single DRS cluster, only powered-on VMs # 10.23.112.235 https Administrator pass01 'My DRS Cluster' 'PoweredOn' # # Example 2: multiple datacenters, all VMs # 10.23.112.235 https Administrator pass01 'My Data Center 1','My Data Center 2' '*' # #--------------------------------------------------------------------------------------------- Add-PSSnapin VMWare.VIMAutomation.core >$Null $global:textvar = "" $server=Connect-VIServer -Server $Args[0] -Protocol $Args[1] -User $Args[2] -Password $Args[3]>$Null $powerstate = [string]$Args[5] $snapshot_count = 0 Get-VM -Location $Args[4] -Server $server | Get-Snapshot | ` ForEach-Object { $snapshot_count = $snapshot_count+1 } function get-snaps{ $vms = get-vm | sort name $vmsnaps = @() foreach($vm in $vms){ $snap = Get-Snapshot $vm if($snap){ $vmsnaps += $vm $snapshots = Get-Snapshot $vm foreach ($snapshot in $snapshots){ $global:textvar += $vm $global:textvar += "(" $global:textvar += $snapshot.name $global:textvar += "," $global:textvar += ([math]::Round($snapshot.sizemb/1024,2)) $global:textvar += ")" $global:textvar += " - " } } } } get-snaps $x=[string]$snapshot_count+":"+$global:textvar #write-host "$snapshot_count" if($snapshot_count -ne 0){ write-host "<prtg>" write-host "<error>" write-host "1" write-host "</error>" write-host "<text>" write-host $global:textvar write-host "</text>" write-host "</prtg>" } if($snapshot_count -eq 0){ write-host "<prtg>" write-host "<result>" write-host "<channel>Snapshots running</channel>" write-host "<value>" write-host $snapshot_count write-host "</value>" write-host "<LimitMaxError>0</LimitMaxError>" write-host "<LimitMode>1</LimitMode>" write-host "</result>" write-host "</prtg>" }
Created on Jan 25, 2013 4:35:10 PM
Last change on Jan 28, 2013 1:38:38 PM by
Torsten Lindner [Paessler Support]
12 Replies
Votes:
0
Hello,
I'm afraid currently there are no plans to have such sensors, sorry.
best regards.
Votes:
0
Now we're a year further on, I was just wondering if there are any plans to be able to monitor VMware virtual machine snapshots?
It would be really helpful to be able to monitor the number and age of VM snapshots.
Many thanks Paul
Votes:
0
I'm afraid still only on the wish-list. Sorry.
Votes:
0
I am doing just that with prtg.
Install the VMware Infrastructure (VI) Toolkit on Your probes.
Enable powershell script on probe.
Create this custom xml powershell script. Place it on Your probes and central server.
Do remember to call it with parameters like in the following decription.
And set timeout higher than 100 sec. it's a slow mofo depending on the size of Your Vmware farm offcourse :)
#--------------------------------------------------------------------------------------------- # Get the number of VM snapshots on ESX host or vCenter # # This script requires the installation of the VMware Infrastructure (VI) Toolkit for Windows. # # Args[0]:Server # Args[1]:Protocol (HTTP/HTTPS) # Args[2]:User # Args[3]:Password # Args[4]:Location (VI container(s), e.g. folders, datacenters, clusters). # Enclose in ' ' if location name contains spaces. # Args[5]:VM power state (PoweredOn, PoweredOff, * for all) # # Example 1: Snapshot count for single DRS cluster, only powered-on VMs # 10.23.112.235 https Administrator pass01 'My DRS Cluster' 'PoweredOn' # # Example 2: multiple datacenters, all VMs # 10.23.112.235 https Administrator pass01 'My Data Center 1','My Data Center 2' '*' # #--------------------------------------------------------------------------------------------- Add-PSSnapin VMWare.VIMAutomation.core >$Null $global:textvar = "" $server=Connect-VIServer -Server $Args[0] -Protocol $Args[1] -User $Args[2] -Password $Args[3]>$Null $powerstate = [string]$Args[5] $snapshot_count = 0 Get-VM -Location $Args[4] -Server $server | Get-Snapshot | ` ForEach-Object { $snapshot_count = $snapshot_count+1 } function get-snaps{ $vms = get-vm | sort name $vmsnaps = @() foreach($vm in $vms){ $snap = Get-Snapshot $vm if($snap){ $vmsnaps += $vm $snapshots = Get-Snapshot $vm foreach ($snapshot in $snapshots){ $global:textvar += $vm $global:textvar += "(" $global:textvar += $snapshot.name $global:textvar += "," $global:textvar += ([math]::Round($snapshot.sizemb/1024,2)) $global:textvar += ")" $global:textvar += " - " } } } } get-snaps $x=[string]$snapshot_count+":"+$global:textvar #write-host "$snapshot_count" if($snapshot_count -ne 0){ write-host "<prtg>" write-host "<error>" write-host "1" write-host "</error>" write-host "<text>" write-host $global:textvar write-host "</text>" write-host "</prtg>" } if($snapshot_count -eq 0){ write-host "<prtg>" write-host "<result>" write-host "<channel>Snapshots running</channel>" write-host "<value>" write-host $snapshot_count write-host "</value>" write-host "<LimitMaxError>0</LimitMaxError>" write-host "<LimitMode>1</LimitMode>" write-host "</result>" write-host "</prtg>" }
Created on Jan 25, 2013 4:35:10 PM
Last change on Jan 28, 2013 1:38:38 PM by
Torsten Lindner [Paessler Support]
Votes:
0
Hello
I'm getting following error in prtg with your powershell script:
Error reading response: XML Parser mismatch: Wanted </<<<>, got </prtg>
can you help me?
Many thanks Jussi Lenzi
Votes:
0
Hi, if the check runs into an error, let the output write to disk and analyze the logfile. Mostly there are powershell errors in this logfile.
Regards SML
Votes:
0
Any news on this one? We recently had a couple of issues with Orphaned snapshots which cost total server outage.
Would be good to be able to monitor this!
Votes:
0
Hi YachtCloud,
Did you try the provided script by klask? Next to this, it's still on the wish list and you will need to write your own Custom Sensor for the moment, sorry.
Best regards, Felix
Created on Oct 14, 2015 9:23:45 AM by
Felix Saure [Paessler Support]
Last change on Jul 24, 2018 7:36:59 AM by
Brandy Greger [Paessler Support]
Votes:
0
I am using the above script which I note has a parameter $powerstate but this does not appear to be called anywhere and I only want to monitor powered on VMs.
Any help would be appreciated.
Votes:
0
I put this script in the exe folder. I added a sensor and selected it from the drop down. I haleft the credentials as inherited. I loaded all the VMWARE VIBs. This is the error I get.
Any help is appreciated.
Sensor VMWARE SNAPSHOT
Response not well-formed: "(Add-PSSnapin : No snap-ins have been registered for Windows PowerShell version 5. At E:\Program Files (x86)\PRTG Network Monitor\custom sensors\EXE\PRTG-VMware_Snapshot.ps1:23 char:1 + Add-PSSnapin VMWare.VIMAutomation.core >$Null + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (VMWare.VIMAutomation.core:String) [Add-PSSnapin], PSArgumentException + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand WARNING: Please consider joining the VMware Customer Experience Improvement Program, so you can help us make PowerCLI a better product. You can join using the following command: Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true VMware's Customer Experience Improvement Program ("CEIP") provides VMware with information that enables VMware to improve its products and services, to fix problems, and to advise you on how best to deploy and use our products. As part of the CEIP, VMware collects technical information about your organizationâ?Ts use of VMware products and services on a regular basis in association with your organizationâ?Ts VMware license key(s). This information does not personally identify any individual. For more details: type "help about_ceip" to see the related help article. To disable this warning and set your preference use the following command and restart PowerShell: Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true or $false. Connect-VIServer : Cannot validate argument on parameter 'Server'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again. At E:\Program Files (x86)\PRTG Network Monitor\custom sensors\EXE\PRTG-VMware_Snapshot.ps1:27 char:34 + $server=Connect-VIServer -Server $Args[0] -Protocol $Args[1] -User $A ... + ~~~~~~~~ + CategoryInfo : InvalidData: (:) [Connect-VIServer], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,VMware.VimAutomation.ViCore.Cmdlets.Commands.ConnectVIS erver Get-VM : 9/9/2021 2:23:37 PMGet-VMYou are not currently connected to any servers. Please connect first using a Connect cmdlet. At E:\Program Files (x86)\PRTG Network Monitor\custom sensors\EXE\PRTG-VMware_Snapshot.ps1:31 char:1 + Get-VM -Location $Args[4] -Server $server | Get-Snapshot | ` + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (:) [Get-VM], ViServerConnectionException + FullyQualifiedErrorId : Core_BaseCmdlet_NotConnectedError,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetVM get-vm : 9/9/2021 2:23:37 PMGet-VMYou are not currently connected to any servers. Please connect first using a Connect cmdlet. At E:\Program Files (x86)\PRTG Network Monitor\custom sensors\EXE\PRTG-VMware_Snapshot.ps1:38 char:12 + $vms = get-vm | sort name + ~~~~~~ + CategoryInfo : ResourceUnavailable: (:) [Get-VM], ViServerConnectionException + FullyQualifiedErrorId : Core_BaseCmdlet_NotConnectedError,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetVM <prtg> <result> <channel>Snapshots running</channel> <value> 0 </value> <LimitMaxError>0</LimitMaxError> <LimitMode>1</LimitMode> </result> </prtg> )" (code: PE132)
Created on Sep 9, 2021 6:27:10 PM
Last change on Sep 10, 2021 12:59:57 PM by
Felix Wiesneth [Paessler Support]
Votes:
0
Hi AGoldMintek,
By default, PRTG runs below the System user account, which might not be allowed to interact with the SnapIn like your user does.
RDP on the machine from which you want to run the script, open services.msc and change the LogOn User for the PRTG Probe Service to a user with sufficient access rights. Restart the PRTG services and see if they can be loaded correctly afterwards.
If not, also ensure that the Plugins are loaded for the x86 PowerShell, since the Probe of PRTG is a 32bit application.
Kind regards,
Felix Saure, Tech Support Team
Votes:
0
maybe this can help you: https://github.com/Jannos-443/PRTG-VMware-Snapshot
Add comment