Notificações por email para ajuste automático

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do 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. Esta 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 e exclusão de índice e à otimização de planos de execução de consulta.

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

Observação

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

Importante

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

Automatizar as notificações por email para as recomendações de ajuste automático

A seguinte solução automatiza o envio de notificações por email que contêm as recomendações de ajuste automático. A solução descrita consiste em automatizar a execução de um script do PowerShell para recuperar as recomendações de ajuste usando a Automação do Azure e a automação de agendamento do 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 de 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 a Conta de Automação do Azure por meio do método de seleção e configuração do aplicativo de Automação do Azure Marketplace:

  1. Faça logon no portal do Azure.

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

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

  4. Clique no aplicativo de 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: nomeie a conta de automação e selecione a ID de assinatura e os recursos do Azure a serem usados para a execução do script de PowerShell.

  7. No caso da opção "Criar conta Executar como do Azure", selecione Sim para configurar o tipo de conta na qual o script do PowerShell será executado com a ajuda da Automação do Azure. Para saber mais sobre os tipos de conta, confira Conta Executar como.

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

Dica

Registre o nome da conta de Automação do Azure, ID da assinatura e recursos (como copiar e colar em um bloco de notas) exatamente como digitado ao criar o aplicativo Automação. Você precisará dessas informações mais adiante.

Se tiver várias assinaturas do Azure para as quais você deseja criar a mesma automação, você precisa repetir este processo para as 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-AzSqlDatabaseRecommendedActio para os quais o Azure Module versão 4 e superior é necessário.

Criar o runbook de Automação do Azure

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

Siga as etapas a seguir para criar um novo runbook da Automação do Azure:

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

  2. Uma vez no painel da conta de automação, clique no item de menu "Runbooks" à esquerda para criar um runbook de Automação do Azure com o script de PowerShell. Para saber mais sobre a criação de runbooks de automação, confira Criar um runbook.

  3. Para adicionar um runbook, clique na opção de menu " + Adicionar um runbook" e selecione "Criação rápida – criar um runbook".

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

  5. Clique no botão Criar para concluir a criação do runbook.

    Add Azure automation runbook

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

  1. Dentro de "Editar Runbook do PowerShell", 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 em "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 que se adeque às suas necessidades.

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

Caso haja várias assinaturas, você pode adicioná-las 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 o script estiver pronto, clique no botão "Publicar" para publicar este runbook.

No painel principal do runbook, você pode clicar no botão "Iniciar" para testar o script. Clique em "Saída" para exibir os resultados do script executado. Essa saída será o conteúdo do seu email. O exemplo de saída do script pode ser visto na captura de tela a seguir.

Run view automatic tuning recommendations with Azure Automation

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

Com as etapas acima, o script do PowerShell de recuperação das recomendações de ajuste automático são carregadas na Automação do Azure. A próxima etapa é automatizar e agendar o trabalho de entrega de email.

Automatizar 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 consista em três ações (trabalhos):

  • "Automação do Azure – Criar trabalho" – usada para executar o script do PowerShell para recuperar recomendações de ajuste automático dentro do runbook de Automação do Azure.
  • "Automação do Azure – Obter saída de trabalho" – usada para recuperar a saída do script de PowerShell executado.
  • "Office 365 Outlook – Enviar um email" – usada para enviar email. Os emails são enviados usando a conta corporativa ou de estudante do indivíduo que cria o fluxo.

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

Essa etapa exige como pré-requisito a inscrição e logon em uma conta do Microsoft Power Automate. Uma vez dentro da solução, siga estas etapas para configurar um novo fluxo:

  1. Acesse o item de menu "Meu fluxos".
  2. Dentro de Meus fluxo, selecione o link " +Criar de página em branco" no topo da página.
  3. Clique no link "Pesquisar por 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 o trabalho de entrega de email a ser executado.
  5. No painel Recorrência no campo Frequência, selecione a frequência de agendamento para este fluxo de execução, como enviar email automatizado a cada Minuto, Hora, Dia, Semana, etc.

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

  1. Crie uma ação para executar o script de PowerShell para recuperar as recomendações de ajuste

    • Selecione " +Nova etapa", seguido por "Adicionar uma ação" dentro do painel Recorrência do fluxo.
    • No campo de pesquisa, digite "automação" e selecione "Automação do Azure – Criar trabalho" nos resultados da pesquisa.
    • No painel de trabalho Criar, configure as propriedades do trabalho. Para essa configuração, você precisará de detalhes da sua ID de assinatura do Azure, grupo de recursos e conta de automação registrada anteriormente no painel da 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 dessa ação clicando em "Salvar fluxo".
  2. Criar uma ação para recuperar a saída do script do PowerShell executado

    • Selecione " +Nova etapa", seguido por "Adicionar uma ação" dentro do painel Recorrência do fluxo
    • No campo de pesquisa, digite "automação" e selecione "Automação do Azure – obter saída do trabalho" nos resultados da pesquisa. Para saber mais sobre as opções disponíveis nesta seção, consulte Automação do Azure – obter saída do trabalho.
    • Preencher os campos necessários (semelhante à criação do trabalho anterior) – preencha sua ID de assinatura do Azure, grupo de recursos e conta de automação (como inserido no painel Conta de Automação).
    • Clique no campo "ID do trabalho" para que o menu "Conteúdo dinâmico" apareça. Dentro desse menu, selecione a opção "ID do trabalho".
    • Conclua a criação dessa 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 Recorrência do fluxo.
    • No campo de pesquisa, digite "enviar um email" e selecione "Outlook do Office 365 – Enviar um e-mail" nos resultados de pesquisa.
    • No campo "Para", digite o endereço de email para o qual você precisa enviar o email de notificação.
    • No campo "Assunto", digite o assunto do email, por exemplo "Notificação por email de recomendações de ajuste automático".
    • Clique no campo "Corpo" para que o menu "Conteúdo dinâmico" apareça. Dentro desse menu, em "Obter saída de trabalho", selecione "Conteúdo".
    • Conclua a criação dessa ação clicando em "Salvar fluxo".

Dica

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

As instruções acima concluem as etapas necessárias para configurar o fluxo de trabalho de entrega de email. O fluxo inteiro que consiste na criação de três ações é 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 do fluxo.

Estatísticas da execução das tarefas automatizadas, mostrando o êxito de notificações por email 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 da solução de problemas, também convém 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 email automatizado é semelhante ao seguinte email recebido depois de criar e executar essa 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, várias assinaturas ou bancos de dados, dependendo de seus cenários personalizados.

Próximas etapas