VMware Cloud Community
mimo974
Contributor
Contributor

Create alarm by mail for snapshot

Hello,

Its possible to create an alarm on vcenter 6.0 for snapshot when still have it on VM more 2 days. I tried to find on vcenter alarm default but cant find it.

Do you think can make an alarm for snapshot ?

Thank you for your helps.

Francois.

0 Kudos
2 Replies
HassanAlKak88
Expert
Expert

Hello,

On the vCenter you can create alarms that are based on 3 types of triggers: event, metric and state. The age of a snapshot doesn't fall under any of these triggers I'm afraid.

Kindly check the following a script to manage your request, maybe it will be helpful: PowerCLI Scripting - SnapShot Create Date is older than 3 days


If my reply was helpful, I kindly ask you to like it and mark it as a solution

Regards,
Hassan Alkak
0 Kudos
mimo974
Contributor
Contributor

Hello,

Thank for your help. Im not an expert with PowerCLI and have some parts on this script im not sure.

1/ When the script is ready i just need to open a vmware powerCLI and start the script ?

2/ I can let the script in mu computer on C:\ ?

3/ I put on red some lines i not sure

# PowerShell script to check for VM snapshots and send Email report

add-pssnapin VMware.VimAutomation.Core

Connect-VIServer -Server <ip-or-host> -User <username> -Password <password> (I need to let -Server -User and -Password ? and i need to right in clear my password ?)

# HTML formatting

$a = "<style>"

$a = $a + "BODY{background-color:white;}"

$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"

$a = $a + "TH{border-width: 1px;padding: 5px;border-style: solid;border-color: black;foreground-color: black;background-color: LightBlue}"

$a = $a + "TD{border-width: 1px;padding: 5px;border-style: solid;border-color: black;foreground-color: black;background-color: white}"

$a = $a + "</style>"

# Main section of check

Write-Host "Checking VMs for for snapshots"

$date = get-date

$datefile = get-date -uformat '%m-%d-%Y-%H%M%S'

$filename = "c:\dir\Snapshots_" + $datefile + ".htm" (Its directory of my computer ?)

# Get list of VMs with snapshots

# Note:  It may take some time for the  Get-VM cmdlet to enumerate VMs in larger environments

$ss = Get-VM | Get-Snapshot | Where {$_.Created -lt (Get-Date).AddDays(-3)}

Write-Host "   Complete " -ForegroundColor Green

Write-Host "Generating VM snapshot report"

#$ss | Select-Object vm, name, SizeGB, Created, powerstate | ConvertTo-HTML -head $a -body "<H2>VM Snapshot Report</H2>"| Out-File $filename

$ss | Select-Object vm, name, SizeGB, Created, powerstate | ConvertTo-HTML -head $a -body "<H2>VM Snapshot Report </H2>"| Out-File $filename

Write-Host "   Complete " -ForegroundColor Green

Write-Host "Your snapshot report has been saved to:" $filename

$SMTPServer = <smtp_server>

$SMTPPort = 587

$Username = "email@email.com"

#Define the receiver of the report

$to = "recipient.email@email.com"

$subject = "VM Snapshot Report"

$body = "VM Snapshot Report"

$attachment = new-object Net.Mail.Attachment($filename)

$message = New-Object System.Net.Mail.MailMessage

$message.subject = $subject

$message.body = $body

$message.to.add($to)

$message.from = $username

$message.attachments.add($attachment)

$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);

$smtp.EnableSSL = $true

#$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);

$smtp.send($message)

write-host "Mail Sent"

0 Kudos