Partilhar via


Notificações por e-mail para ajuste automático

Aplica-se a:Banco de Dados SQL do Azure Instância Gerenciada SQLdo Azure

As recomendações de ajuste do Banco de Dados SQL do Azure são geradas pelo ajuste automático do Banco de Dados SQL do Azure. Essa solução monitora e analisa continuamente cargas de trabalho de bancos de dados, fornecendo recomendações de ajuste personalizadas para cada banco de dados individual relacionadas à criação de índices, exclusão de índices e otimização de planos de execução de consultas.

As recomendações de ajuste automático do Banco de Dados SQL do Azure podem ser exibidas no portal do Azure, recuperadas com chamadas de API REST ou usando comandos T-SQL e PowerShell. Este artigo baseia-se no uso de um script do PowerShell para recuperar recomendações de ajuste automático.

Nota

Este artigo usa o módulo Azure Az PowerShell, que é o módulo PowerShell recomendado para interagir com o Azure. Para começar a utilizar o módulo Azure PowerShell, veja Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Importante

O módulo PowerShell Azure Resource Manager ainda é suportado pelo Banco de Dados SQL do Azure, mas todo o desenvolvimento futuro é para o módulo Az.Sql. Para esses cmdlets, consulte AzureRM.Sql. Os argumentos para os comandos no módulo Az e nos módulos AzureRm são substancialmente idênticos.

Automatize as notificações por e-mail para recomendações de ajuste automático

A solução a seguir automatiza o envio de notificações por e-mail contendo recomendações de ajuste automático. A solução descrita consiste em automatizar a execução de um script do PowerShell para recuperar recomendações de ajuste usando a Automação do Azure e a automação do agendamento de trabalho de entrega de email usando o Microsoft Power Automate.

Criar conta de Automação do Azure

Para usar a Automação do Azure, a primeira etapa é criar uma conta de automação e configurá-la com os recursos do Azure a serem usados para a execução do script do PowerShell. Para saber mais sobre a Automação do Azure e seus recursos, consulte Introdução à automação do Azure.

Siga estas etapas para criar uma Conta de Automação do Azure por meio do método de seleção e configuração de um aplicativo de Automação do Azure Marketplace:

  1. Inicie sessão no portal do Azure.

  2. Clique em "+ Criar um recurso" no canto superior esquerdo.

  3. Procure por "Automação" (pressione enter).

  4. Clique no aplicativo Automação nos resultados da pesquisa.

    Adding Azure automation

  5. Uma vez dentro do painel "Criar uma conta de automação", clique em "Criar".

  6. Preencha as informações necessárias: insira um nome para essa conta de automação, selecione sua ID de assinatura do Azure e os recursos do Azure a serem usados para a execução do script do PowerShell.

  7. Para a opção "Criar conta Run As do Azure", selecione Sim para configurar o tipo de conta sob a qual o script do PowerShell é executado com a ajuda da Automação do Azure. Para saber mais sobre os tipos de conta, consulte Conta Run As.

  8. Conclua a criação da conta de automação clicando em Criar.

Gorjeta

Registre o nome da conta da Automação do Azure, a ID da assinatura e os recursos (como copiar e colar em um bloco de notas) exatamente como inserido durante a criação do aplicativo de Automação. Você precisa dessas informações mais tarde.

Se você tiver várias assinaturas do Azure para as quais gostaria de criar a mesma automação, precisará repetir esse processo para suas outras assinaturas.

Atualizar módulos de Automação do Azure

O script do PowerShell para recuperar a recomendação de ajuste automático usa os comandos Get-AzResource e Get-AzSqlDatabaseRecommendedAction para os quais o Módulo do Azure versão 4 e superior é necessário.

Criar runbook de Automação do Azure

A próxima etapa é criar um Runbook na Automação do Azure dentro do qual reside o script do PowerShell para recuperação de recomendações de ajuste.

Siga estas etapas para criar um novo runbook de Automação do Azure:

  1. Acesse a conta de Automação do Azure que você criou na etapa anterior.

  2. Uma vez no painel de conta de automação, clique no item de menu "Runbooks" no lado esquerdo para criar um novo runbook de Automação do Azure com o script do PowerShell. Para saber mais sobre como criar runbooks de automação, consulte Criar um novo runbook.

  3. Para adicionar um novo runbook, clique na opção de menu "+ Add a runbook" e, em seguida, clique em "Quick create – Create a new runbook"..

  4. No painel Runbook, digite o nome do seu runbook (para a finalidade deste exemplo, "AutomaticTuningEmailAutomation" é usado), selecione o tipo de runbook como PowerShell e escreva uma descrição desse runbook para descrever sua finalidade.

  5. Clique no botão Criar para concluir a criação de um novo runbook.

    Add Azure automation runbook

Siga estas etapas para carregar um script do PowerShell dentro do runbook criado:

  1. Dentro do painel "Edit PowerShell Runbook", selecione "RUNBOOKS" na árvore de menus e expanda a exibição até ver o nome do seu runbook (neste exemplo "AutomaticTuningEmailAutomation"). Selecione este runbook.
  2. Na primeira linha do "Editar Runbook do PowerShell" (começando com o número 1), copie e cole o seguinte código de script do PowerShell. Este script do PowerShell é fornecido no estado em que se encontra para você começar. Modifique o script para atender às suas necessidades.

No cabeçalho do script do PowerShell fornecido, você precisa substituir <SUBSCRIPTION_ID_WITH_DATABASES> pela sua ID de assinatura do Azure. Para saber como recuperar sua ID de assinatura do Azure, consulte Obtendo seu GUID de Assinatura do Azure.

No caso de várias assinaturas, você pode adicioná-las como delimitadas por vírgulas à propriedade "$subscriptions" no cabeçalho do script.

# PowerShell script to retrieve Azure SQL Database automatic tuning recommendations.
#
# Provided "as-is" with no implied warranties or support.
# The script is released to the public domain.
#
# Replace <SUBSCRIPTION_ID_WITH_DATABASES> in the header with your Azure subscription ID.
#
# Microsoft Azure SQL Database team, 2018-01-22.

# Set subscriptions : IMPORTANT – REPLACE <SUBSCRIPTION_ID_WITH_DATABASES> WITH YOUR SUBSCRIPTION ID
$subscriptions = ("<SUBSCRIPTION_ID_WITH_DATABASES>", "<SECOND_SUBSCRIPTION_ID_WITH_DATABASES>", "<THIRD_SUBSCRIPTION_ID_WITH_DATABASES>")

# Get credentials
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

# Define the resource types
$resourceTypes = ("Microsoft.Sql/servers/databases")
$advisors = ("CreateIndex", "DropIndex");
$results = @()

# Loop through all subscriptions
foreach($subscriptionId in $subscriptions) {
    Select-AzSubscription -SubscriptionId $subscriptionId
    $rgs = Get-AzResourceGroup

    # Loop through all resource groups
    foreach($rg in $rgs) {
        $rgname = $rg.ResourceGroupName;

        # Loop through all resource types
        foreach($resourceType in $resourceTypes) {
            $resources = Get-AzResource -ResourceGroupName $rgname -ResourceType $resourceType

            # Loop through all databases
            # Extract resource groups, servers and databases
            foreach ($resource in $resources) {
                $resourceId = $resource.ResourceId
                if ($resourceId -match ".*RESOURCEGROUPS/(?<content>.*)/PROVIDERS.*") {
                    $ResourceGroupName = $matches['content']
                } else {
                    continue
                }
                if ($resourceId -match ".*SERVERS/(?<content>.*)/DATABASES.*") {
                    $ServerName = $matches['content']
                } else {
                    continue
                }
                if ($resourceId -match ".*/DATABASES/(?<content>.*)") {
                    $DatabaseName = $matches['content']
                } else {
                    continue
                }

                # Skip if master
                if ($DatabaseName -eq "master") {
                    continue
                }

                # Loop through all automatic tuning recommendation types
                foreach ($advisor in $advisors) {
                    $recs = Get-AzSqlDatabaseRecommendedAction -ResourceGroupName $ResourceGroupName -ServerName $ServerName  -DatabaseName $DatabaseName -AdvisorName $advisor
                    foreach ($r in $recs) {
                        if ($r.State.CurrentValue -eq "Active") {
                            $object = New-Object -TypeName PSObject
                            $object | Add-Member -Name 'SubscriptionId' -MemberType Noteproperty -Value $subscriptionId
                            $object | Add-Member -Name 'ResourceGroupName' -MemberType Noteproperty -Value $r.ResourceGroupName
                            $object | Add-Member -Name 'ServerName' -MemberType Noteproperty -Value $r.ServerName
                            $object | Add-Member -Name 'DatabaseName' -MemberType Noteproperty -Value $r.DatabaseName
                            $object | Add-Member -Name 'Script' -MemberType Noteproperty -Value $r.ImplementationDetails.Script
                            $results += $object
                        }
                    }
                }
            }
        }
    }
}

# Format and output results for the email
$table = $results | Format-List
Write-Output $table

Clique no botão "Salvar" no canto superior direito para salvar o script. Quando estiver satisfeito com o script, clique no botão "Publicar" para publicar este runbook.

No painel principal do runbook, você pode optar por clicar no botão "Iniciar" para testar o script. Clique em "Saída" para ver os resultados do script executado. Esta saída será o conteúdo do seu e-mail. A saída de exemplo do script pode ser vista na captura de tela a seguir.

Run view automatic tuning recommendations with Azure Automation

Certifique-se de ajustar o conteúdo personalizando o script do PowerShell de acordo com suas necessidades.

Com as etapas acima, o script do PowerShell para recuperar recomendações de ajuste automático é carregado na Automação do Azure. O próximo passo é automatizar e agendar o trabalho de entrega de e-mail.

Automatize os trabalhos de email com o Microsoft Power Automate

Para concluir a solução, como etapa final, crie um fluxo de automação no Microsoft Power Automate que consiste em três ações (trabalhos):

  • "Automação do Azure - Criar trabalho" – usado para executar o script do PowerShell para recuperar recomendações de ajuste automático dentro do runbook de Automação do Azure.
  • "Azure Automation - Get job output" – usado para recuperar a saída do script PowerShell executado.
  • "Office 365 Outlook – Enviar um e-mail" – usado para enviar email. Os e-mails são enviados usando a conta corporativa ou escolar do indivíduo que cria o fluxo.

Para saber mais sobre os recursos do Microsoft Power Automate, consulte Introdução ao Microsoft Power Automate.

O pré-requisito para esta etapa é se inscrever em uma conta do Microsoft Power Automate e fazer login. Uma vez dentro da solução, siga estas etapas para configurar um novo fluxo:

  1. Acesse o item de menu "Meus fluxos".
  2. Dentro de Meus fluxos, selecione o link "+Criar em branco" na parte superior da página.
  3. Clique no link "Pesquisar centenas de conectores e gatilhos" na parte inferior da página.
  4. No campo de pesquisa, digite "recorrência" e selecione "Agendar - Recorrência" nos resultados da pesquisa para agendar a execução do trabalho de entrega de e-mail.
  5. No painel Recorrência no campo Frequência, selecione a frequência de agendamento para que esse fluxo seja executado, como enviar e-mails automatizados a cada minuto, hora, dia, semana, etc.

A próxima etapa é adicionar três trabalhos (criar, obter saída e enviar e-mail) ao fluxo recorrente recém-criado. Para concluir a adição dos trabalhos necessários ao fluxo, siga estas etapas:

  1. Criar ação para executar script do PowerShell para recuperar recomendações de ajuste

    • Selecione "+Nova etapa", seguido por "Adicionar uma ação" dentro do painel Fluxo de recorrência.
    • No campo de pesquisa, digite "automação" e selecione "Azure Automation – Create job" nos resultados da pesquisa.
    • No painel Criar trabalho, configure as propriedades do trabalho. Para essa configuração, você precisará de detalhes de sua ID de assinatura do Azure, Grupo de Recursos e Conta de Automação registrados anteriormente no painel Conta de Automação. Para saber mais sobre as opções disponíveis nesta seção, consulte Automação do Azure - Criar trabalho.
    • Conclua a criação desta ação clicando em "Salvar fluxo".
  2. Criar uma ação para recuperar a saída do script PowerShell executado

    • Selecione "+ Nova etapa", seguida de "Adicionar uma ação" dentro do painel de fluxo de recorrência
    • No campo de pesquisa, digite "automação" e selecione "Azure Automation – Get job output" nos resultados da pesquisa. Para saber mais sobre as opções disponíveis nesta seção, consulte Automação do Azure – Obter saída de trabalho.
    • Preencher campos necessários (semelhante à criação do trabalho anterior) - preencha sua ID de assinatura do Azure, Grupo de Recursos e Conta de Automação (conforme inserido no painel Conta de Automação).
    • Clique dentro do campo "ID da vaga" para que o menu "Conteúdo dinâmico" apareça. Neste menu, selecione a opção "Job ID".
    • Conclua a criação desta ação clicando em "Salvar fluxo".
  3. Criar uma ação para enviar email usando a integração do Office 365

    • Selecione "+Nova etapa", seguido por "Adicionar uma ação" dentro do painel Fluxo de recorrência.
    • No campo de pesquisa, digite "enviar um email" e selecione "Office 365 Outlook – Enviar um email" nos resultados da pesquisa.
    • No campo "Para", digite o endereço de e-mail para o qual você precisa enviar o e-mail de notificação.
    • No campo "Assunto", digite o assunto do seu e-mail, por exemplo, "Recomendações de ajuste automático de notificação por e-mail".
    • Clique dentro do campo "Corpo" para que o menu "Conteúdo dinâmico" apareça. Neste menu, em "Obter saída de trabalho", selecione "Conteúdo".
    • Conclua a criação desta ação clicando em "Salvar fluxo".

Gorjeta

Para enviar e-mails automatizados para destinatários diferentes, crie fluxos separados. Nesses fluxos adicionais, altere o endereço de e-mail do destinatário no campo "Para" e a linha de assunto do e-mail no campo "Assunto". A criação de novos runbooks na Automação do Azure com scripts personalizados do PowerShell (como a alteração da ID de assinatura do Azure) permite a personalização adicional de cenários automatizados, como, por exemplo, enviar e-mails para destinatários separados em recomendações de ajuste automatizado para assinaturas separadas.

O acima conclui as etapas necessárias para configurar o fluxo de trabalho de entrega de e-mail. Todo o fluxo que consiste em três ações construídas é mostrado na imagem a seguir.

View automatic tuning email notifications flow

Para testar o fluxo, clique em "Executar agora" no canto superior direito dentro do painel de fluxo.

As estatísticas de execução dos trabalhos automatizados, mostrando o sucesso das notificações por e-mail enviadas, podem ser vistas no painel de análise do Flow.

Running flow for automatic tuning email notifications

O painel Análise de fluxo é útil para monitorar o sucesso das execuções de trabalho e, se necessário, para a solução de problemas. No caso de solução de problemas, você também pode querer examinar o log de execução de script do PowerShell acessível por meio do aplicativo de Automação do Azure.

A saída final do e-mail automatizado é semelhante ao seguinte e-mail recebido após a criação e execução desta solução:

Sample email output from automatic tuning email notifications

Ajustando o script do PowerShell, você pode ajustar a saída e a formatação do email automatizado às suas necessidades.

Você pode personalizar ainda mais a solução para criar notificações por email com base em um evento de ajuste específico e para vários destinatários, para várias assinaturas ou bancos de dados, dependendo de seus cenários personalizados.

Próximos passos