vCenter Üzerinde Enable ve Email Tanımlı Alert lerin Export Edilmesi
Merhabalar,
Bir müşterim eski ortamından yeni ortamına geçerken mevcutta kullanmakta olduğu 6 vCenter Server sunucuda tanımlı olan alert ler (300 civarı) içerisinden sadece Enabled durumda olan ve bunlar içerisinde de email adresi tanımlı olanları export ederek yeni ortamında ki 4 vCenter Server sunucusuna aktarma işlemini nasıl yapabileceğini sordu.
Google üzerinde yaptığım araştırma sonucunda ekip arkadaşlarımdan Marco Baajen’ nin geliştirdiği hem export hem de import işlemlerini yapabilen script e denk geldim. İlgili script e https://vtam.nl/2021/03/02/vcenter-alarms-export-import-revisited-and-fixed/ adresinden ulaşabilirsiniz. Kendisine bu emeği için ayrıca teşekkür ederim.
Benim yaptığım sadece bu script in export kısmına Enabled olan ve Enabled olanlar içerisinde ki alarmlardan email tanımlı olanların export edilebilmesi için birkaç satır kod eklemek. İlgili kodu aşağıda paylaşıyorum.
Not: Bu script in kullanımı ve import işlemi sonrasında karşılaşılabilinecek problemler uygulayan kişinin sorumluluğundadır. Unutulmamalı ki export işlemi vCenter Server Database i üzerinde işlem yapılmasını sağladığı için mutlaka test edilmeli ve yedeği alınmış vCenter Server üzerinde denenmelidir.
function Replace-SpecialChars {
param($InputString)
$SpecialChars = '[#?\/{:}]'
$Replacement = '-'
$InputString -replace $SpecialChars,$Replacement
}
function ExportAlarm() {
if( -not (Test-Path -Path $exportFolder -PathType Container) ) {
mkdir -Path $exportFolder}
# Exclude vCenter specific Alarms containing "Exhaustion"in the name AND matching the filter
# Filtering to exclude not Enabled and only email defined alerts
$alarmToExportable= Get-AlarmDefinition $alarmToExportName | ? {$_.name -notmatch "Exhaustion" -and $_.Enabled -eq "Enabled"}
$alarmActionToExport = Get-AlarmAction -AlarmDefinition $alarmToExport.Name | ? {$_.ActionType -eq "SendEmail"}
$alarmToExport = $alarmActionToExport.AlarmDefinition
$alarmToExport | % {
$a = Get-View -Id $_.Id
$CustomAlarmName = $alarmprefix + ' ' + (Replace-SpecialChars -InputString $a.info.Name)
$a.info.Name = $CustomAlarmName
$ShortCustomAlarmName=$CustomAlarmName[1..84] -join ''
$a.Info | Export-Clixml -Path ($exportFolder + $ShortCustomAlarmName + ".xml") -Depth ( [System.Int32]::MaxValue )}
}
$serverToExportFrom = "vcenter.mhclabs.com"
$alarmToExportName = "Alarmtest"
$exportFolder = "C:\Alarms\"
$alarmToExportName = "*"
ExportAlarm
Disconnect-VIServer * -Confirm:$False -Force:$True
Umarım herkes için faydalı olur…