Powershell ile SQL Always On / Failover Cluster Geçiş Kontrolü

Sql Server Always On ortamımızda nodelar arası failover cluster senaryosu gerçekleştikçe bu işlemleri bizlere bildirmesi için bir script ihtiyacımız doğdu. SQL üzerinden bu işlemler yapılabiliyor ancak powershell ile ilerlemeyi tercih ettik.

Aşağıdaki scripti task scheculer üzerine ekleyip 10 dakika da bir çalışacak şekilde yapılandırdık.

Scriptimize smtp bilgilerimizi mail alacak ve atacak adres değerlerini düzelterek kullanmayı ihmal etmeyin.

Son 10 dakika içerisinde ilgili Failover Cluster nodları üzerinde 1641 eventid si oluşursa mail atma işlemi gerçekleştirecek. Mail içeriğinde hangi node üzerinde bulunan db ler hangi noda taşınmakta, hangi AO Grup bu taşıma işleminde etkilenmte olduğuna dair bilgileri içerecek şekilde gerçekleştirmektedir. İşlem saati, node bilgisi gibi değerleri içermektedir.

$smtpServer = "10.x.x.x"
$smtpPort = 25
$sender = "xxx@onurbabur.com"
$recipient = "infra-alert@onurbabur.com"
$subject = "Failover Cluster Alert"

$startTime = (Get-Date).AddMinutes(-10)
$endTime = Get-Date
$eventID = 1641
$logName = 'Application'

$events = Get-winEvent -filterHashTable @{logname ='Microsoft-Windows-FailoverClustering/Operational'; id=$eventID; StartTime=$startTime; EndTime=$endTime}| ft -AutoSize -Wrap

if ($events) {
    $body = $events | Out-String

    $smtp = New-Object System.Net.Mail.SmtpClient($smtpServer, $smtpPort)
    $mailMessage = New-Object System.Net.Mail.MailMessage($sender, $recipient, $subject, $body)

    try {
        $smtp.Send($mailMessage)
        Write-Host "E-posta gönderildi!"
    } catch {
        Write-Host "E-posta gönderirken hata oluştu: $_.Exception.Message"
    }
} else {
    Write-Host "Belirtilen filtrelerle uyumlu olay bulunamadığından e-posta gönderilmedi."
}

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir