Sanal ortam yönetiminde VMware vCenter Server üzerinde snapshot’ların düzenli takibi, depolama alanının optimize edilmesi ve performansın korunması için önemlidir. Snapshot’lar zamandan tasarruf sağlayan bir özellik sunarken uzun süreli snapshot’ların sistem kaynaklarını tüketmesi, performansı düşürmesi ve depolama alanını doldurması gibi dezavantajları olabilir. Bu nedenle günlük snapshot raporlarının otomatik olarak e-posta yoluyla gönderilmesi sistem yöneticilerine mevcut durumu takip etme konusunda büyük kolaylık sağlar.
VMware PowerCLI aracı ile vCenter ile entegre çalışan bir komut satırı aracı olarak günlük snapshot raporlarını almak ve bu bilgileri e-posta ile iletmek için ideal bir yöntemdir.
Aşağıdaki script ile vCenter Server’a bağlanarak mevcut snapshot’ları listeler ve belirlenen e-posta adresine bir rapor olarak gönderir.
# PowerCLI'in yüklenmesi;
Import-Module VMware.PowerCLI
# vCenter Server erişim bilgileri;
$vcenterServer = "tr0601vcn01.kadirkozan.local"
$username = "administrator@vsphere.local"
$password = "Passw0rd"
# Mail server ayarları;
$smtpServer = "10.10.10.10"
$from = "snapshot-alert@kadirkozan.com"
$to = "it-vm@kadirkozan.com"
$subject = "Daily VMware Snapshot Report"
# vCenter Server’a bağlanılması;
Connect-VIServer -Server $vcenterServer -User $username -Password $password
# Snapshot bilgilerinin alınması;
$snapshots = Get-VM | Get-Snapshot
# Rapor oluşturması;
if ($snapshots.Count -eq 0) {
$body = "Currently, there are no snapshots on vCenter Server $vcenterServer."
} else {
$body = "The following snapshots are present on vCenter Server $vcenterServer:`n`n"
foreach ($snapshot in $snapshots) {
$body += "VM Name: $($snapshot.VM.Name)`n"
$body += "Snapshot Name: $($snapshot.Name)`n"
$body += "Created Date: $($snapshot.Created)`n"
$body += "Size (MB): $([math]::round($snapshot.SizeMB, 2))`n"
$body += "`n" + ("-" * 50) + "`n"
}
}
# Mail gönderme;
Send-MailMessage -SmtpServer $smtpServer -From $from -To $to -Subject $subject -Body $body -BodyAsHtml:$false
# vCenter Server bağlantısını kapat;
Disconnect-VIServer -Server $vcenterServer -Confirm:$false
Script’i her gün belirli bir saatte çalıştırmak için Windows Görev Zamanlayıcı’yı (Task Scheduler) kullanabilirsiniz. Bu script’in düzenli olarak çalışmasını ve günlük snapshot raporunun otomatik olarak e-posta ile gönderilmesini sağlar.
Yukarıdaki scirpt’in VMware PowerCLI ile günlük snapshot raporlarını almasında kullanışlı olsa da vCenter Server Appliance (VCSA) üzerinde bu script’i doğrudan çalıştırmak mümkün değildir. Bu nedenle vCenter Server Appliance üzerinde PowerCLI script’lerinin çalıştırılabilirliğini ve alternatif çözüm yollarını inceleyeceğiz. VMware vCenter Server Appliance yönetim amacıyla kullanılan Linux tabanlı bir sanal sunucudur. Ancak vCenter Server Appliance üzerinde PowerCLI script’leri çalıştırılamaz çünkü PowerCLI aracı Windows PowerShell tabanlı bir araçtır ve Windows tabanlı bir ortam gerektirir. PowerCLI script’lerinin çalışabilmesi için ayrı bir Windows sunucusu veya Windows işletim sistemine sahip bir makine gereklidir.
VCSA üzerinde PowerCLI script çalıştırılamadığı için bir Windows işletim sistemi veya Windows sunucusundan PowerCLI kullanarak vCenter Server’a bağlanmak en iyi çözüm olacaktır. Bu yöntemle PowerCLI script’i bir Windows ortamında çalıştırarak vCenter Server üzerindeki snapshot bilgilerini toplayabilir ve e-posta ile raporlayabilirsiniz.
- PowerCLI aracını kurunuz : Script’i çalıştıracağınız Windows makinede PowerCLI’nin kurulu olması gereklidir. PowerCLI’yi PowerShell üzerinden aşağıdaki komut ile kolayca yükleyebilirsiniz.
Install-Module -Name VMware.PowerCLI
- Yukaridaki script’in .ps1 uzantısı ile kaydediniz ve kendi yapınıza uygun olarak düzenleyiniz. Snapshot raporunu günlük olarak çalıştırmak için bu script’i mutlaka .ps1 dosyası olarak kaydediniz. Diğer dosya uzantılarını kullanmayınız.
- Windows işletim sisteminde görev zamanlayıcı ile scirpt otomatik çalıştırılması gerekiyor. Windows Görev Zamanlayıcı (Task Scheduler) ile bu script’i günlük olarak çalışacak şekilde ayarlayabilirsiniz. Bu sayede her gün belirli bir saatte script çalışır ve snapshot raporu otomatik olarak e-posta ile iletilir. “Action” sekmesinde scirpt yolunu belirtiniz.
powershell.exe -File "C:\Kadirkozan-scripts\DailySnapshotReport.ps1"