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:
Inicie sessão no portal do Azure.
Clique em "+ Criar um recurso" no canto superior esquerdo.
Procure por "Automação" (pressione enter).
Clique no aplicativo Automação nos resultados da pesquisa.
Uma vez dentro do painel "Criar uma conta de automação", clique em "Criar".
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.
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.
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.
- Caso seus Módulos do Azure precisem de atualização, consulte Suporte ao módulo Az na Automação do Azure.
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:
Acesse a conta de Automação do Azure que você criou na etapa anterior.
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.
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"..
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.
Clique no botão Criar para concluir a criação de um novo runbook.
Siga estas etapas para carregar um script do PowerShell dentro do runbook criado:
- 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.
- 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.
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:
- Acesse o item de menu "Meus fluxos".
- Dentro de Meus fluxos, selecione o link "+Criar em branco" na parte superior da página.
- Clique no link "Pesquisar centenas de conectores e gatilhos" na parte inferior da página.
- 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.
- 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:
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".
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".
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.
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.
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:
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
- Saiba mais sobre como o ajuste automático pode ajudá-lo a melhorar o desempenho do banco de dados, consulte Ajuste automático no Banco de Dados SQL do Azure.
- Para habilitar o ajuste automático no Banco de Dados SQL do Azure para gerenciar sua carga de trabalho, consulte Habilitar ajuste automático.
- Para rever e aplicar manualmente recomendações de ajuste automático, consulte Localizar e aplicar recomendações de desempenho.