В 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.

Надеюсь это поможет.

Другие вопросы по тегам