SharePoint Hizmetlerini İzleyin (Zamanlayıcı Hizmeti gibi) - Arızalandığında Uyarı E-postası Gönderin!
Yazımın devamı: PowerShell Komut Dosyasını Kullanarak SharePoint Uygulama Havuzlarını İzleyin, SharePoint sunucusundaki belirli Hizmetler çökerse, bu durum SharePoint ortamınızda kesintilere veya hizmet kesintilerine neden olabilir! SCOM gibi izleme çözümleri hizmetleri izleyebilse de hizmeti durdurulduğunda otomatik olarak başlatamazlar. Öyleyse bu sorunu PowerShell'in yardımıyla çözelim! Durdurulduğunda gerekli hizmetleri başlatmak ve uyarı e-postaları göndermek için kullanışlı PowerShell betiğim burada.
Bu komut dosyası yalnızca hizmetlerin kullanılabilirliğini taramakla kalmaz, aynı zamanda:
- Başlatılmış durumda değilse hizmetlerin durumunu algıla
- Durdurulmuş durumdaysa hizmeti otomatik olarak başlatır
- SharePoint Yönetici ekibine (veya yapılandıran kişiye!) Uyarı E-postası gönderir.
Hizmetleri İzlemek ve E-posta Bildirimi Göndermek için PowerShell betiği:
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
#Configuration variables
$EmailFrom = "ServiceMonitor@crescent.com"
$EmailTo = "SPAdmin@crescent.com" # Use commas for multiple addresses
$EmailSubject = "Service(s) went down in SharePoint Server"
#Services to Monitor
$ServicesToMonitor = "IISADMIN", "SPTimerV4", "SPAdminV4", "SPTraceV4" , "SPUserCodeV4" , "SPWriterV4" , "OSearch14" , "W3SVC"
#Get Outgoing Email Server of the SharePoint Farm
$SMTP= (Get-SPWebApplication -IncludeCentralAdministration | Where { $_.IsAdministrationWebApplication } ) | %{$_.outboundmailserviceinstance.server.address}
#Check the status of each service
Foreach($ServiceName in $ServicesToMonitor)
{
#Get the service
$Service = Get-Service -Name $ServiceName
#Check the Service status
if ($Service.Status -ne "Running")
{
Write-Host $Service.DisplayName Found Not running!
Try
{
#Set the Error Action
$ErrorActionPreference = "Stop"
#Try to start the service
Start-Service $ServiceName
}
catch
{
Write-Host "Attempt to start service failed. Find the Error Message below:" -ForegroundColor Red
Write-Host $_.Exception.Message -ForegroundColor Red
}
finally
{
#Reset the Error Action to Default
$ErrorActionPreference = "Continue"
}
#Send out the Alert E-mail
$EmailBody = "Hi SharePoint Team, `n `n The Service: $($Service.DisplayName) was found in stopped state!. `n`nWe tried Re-starting it... Current State of the Service: $($Service.Status). `n`nPlease take necessary actions if its not started! `n `nThanks, `nSharePoint Monitoring Script."
Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $EmailSubject -Body $EmailBody -SmtpServer $SMTP -usessl
}
}
SharePoint Grubunun her bir sunucusundaki hizmetler nasıl izlenir?
“-ComputerName $Server.Address” parametresini “Get-Service” ve “Start-Service” cmdlet'lerine eklemeniz yeterlidir.
Yani kod şöyle gider:
#Get all SharePoint Servers
$ServersColl = Get-SPServer | where { $_.role -ne "Invalid"}
Foreach($Server in $ServersColl)
{
#Wrap the above code
}
Bu PowerShell betiğini, Uygulama Havuzu durumunu periyodik olarak taramak için herhangi bir Uygulama sunucusundaki (veya başka bir sunucunun yapacağı!) Windows Görev zamanlayıcısında planlayın, Her 5 Dakikada bir söyleyin! Uygulama önceliğinize göre bir çalışma aralığı ayarlanabilir. İşte Windows Görev Zamanlayıcı'yı kullanarak PowerShell komut dosyalarını Zamanlama ile ilgili başka bir gönderi: Windows Görev Zamanlayıcı ile PowerShell Komut Dosyası için Zamanlanmış Görev Oluşturma
