В Azure как настроить оповещение или уведомление при сбое SQL Server?
В Azure как настроить оповещение или уведомление, когда происходит переключение при сбое SQL Server, если вы настраиваете сервер SQL с группами отказоустойчивости, а для политики переключения при сбое установлено автоматическое? Если это не может быть настроено в Мониторе, может ли это быть написано в другом месте?
2 ответа
Нашел способ написать сценарий в Azure, используя учетные записи автоматизации> Runbook >, используя Powershell. Простой скрипт вроде этого должен сделать это. Просто нужно вычислить запуск в качестве учетной записи и запустить его по расписанию или по предупреждению.
function sendEmailAlert
{
# Send email
}
function checkFailover
{
$list = Get-AzSqlDatabaseFailoverGroup -ResourceGroupName "my-resourceGroup" -server "my-sql-server"
if ( $list.ReplicationRole -ne 'Primary')
{
sendEmailAlert
}
}
checkFailover
Спасибо, CKelly, это дало мне хороший толчок к тому, что должно быть стандартным в Azure. Я создал учетную запись службы автоматизации Azure, добавил модули Az.Account, Az.Automation и Az.Sql, а затем добавил немного больше в ваш код. В Azure я создал учетную запись SendGrid.
#use the Azure Account Automation details to login to Azure
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
#create email alert
function sendEmailAlert
{
# Send email
$From = "<email from>"
$To = "<email of stakeholders to receive this message>"
$SMTPServer = "smtp.sendgrid.net"
$SMTPPort = "587"
$Username = "<sendgrid username>"
$Password = "<sendgridpassword>"
$subject = "<email subject>"
$body = "<text to go in email body>"
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($From, $To, $subject, $body)
}
#create failover check and send if the primary server has changed
function checkFailover
{
$list = Get-AzSqlDatabaseFailoverGroup -ResourceGroupName "<the resourcegroup>" -server "<SQl Databse server>"
if ( $list.ReplicationRole -ne 'Primary')
{
sendEmailAlert
}
}
checkFailover
Этот процесс может помочь другим.
База данных SQL Azure поддерживает только следующие показатели оповещений:
Мы не могли использовать предупреждение, когда произошел сбой SQL Server. Вы можете получить это из этого документа: Создайте оповещения для базы данных SQL Azure и хранилища данных с помощью портала Azure.
Надеюсь это поможет.