Compartilhar via


Monitorar o Banco de Dados SQL do Azure usando a Análise de SQL do Azure (versão prévia)

APLICA-SE A: Banco de Dados SQL do Azure, Instância SQL Gerenciada do Azure

Cuidado

A Análise de SQL do Azure (versão prévia) é uma integração com o Azure Monitor, em que muitas soluções de monitoramento não estão mais em desenvolvimento ativo. Para obter mais opções de monitoramento, consulte Monitoramento e ajuste de desempenho no Banco de Dados SQL do Azure e na Instância Gerenciada de SQL do Azure.

A Análise de SQL do Azure (versão prévia) é uma solução avançada de monitoramento de nuvem para monitorar o desempenho de todos os bancos de dados SQL do Azure em escala e em várias assinaturas em uma única exibição. A Análise de SQL do Azure coleta e visualiza as principais métricas de desempenho com inteligência interna para solução de problemas de desempenho.

Usando essas métricas coletadas, você pode criar regras e alertas de monitoramento personalizados. A Análise de SQL do Azure ajuda você a identificar problemas em cada camada da pilha de aplicativos. A Análise de SQL do Azure usa métricas de Diagnóstico do Azure junto com exibições do Azure Monitor para apresentar dados sobre todos os bancos de dados SQL do Azure em um único workspace do Log Analytics. O Azure Monitor ajuda você a coletar, correlacionar e visualizar dados estruturados e não estruturados.

Fontes conectadas

A Análise de SQL do Azure é uma solução de monitoramento somente na nuvem que dá suporte ao streaming de telemetria de diagnóstico para todos os bancos de dados SQL do Azure. Como a Análise de SQL do Azure não usa agentes para se conectar ao Azure Monitor, ela não dá suporte ao monitoramento do SQL Server hospedado localmente ou em máquinas virtuais.

Origem conectada Suportado Descrição
Configurações de diagnóstico Sim Os dados de métrica e log do Azure são enviados diretamente pelo Azure para o Azure Monitor Logs.
Conta de Armazenamento do Azure Não O Azure Monitor não lê os dados de uma conta de armazenamento.
agentes do Windows Não Os agentes diretos do Windows não são usados pela Análise de SQL do Azure.
Agentes Linux Não Os agentes diretos do Linux não são usados pela Análise de SQL do Azure.
Grupo de Gerenciamento do System Center Operations Manager Não Uma conexão direta do agente do Operations Manager com o Azure Monitor não é usada pela Análise de SQL do Azure.

Opções da Análise de SQL do Azure

A tabela abaixo descreve as opções com suporte para duas versões do painel da Análise de SQL do Azure, uma para o Banco de Dados SQL do Azure e outra para bancos de dados da Instância Gerenciada de SQL do Azure.

Opção análise de SQL do Azure Descrição Suporte ao Banco de Dados SQL Suporte à Instância Gerenciada de SQL
Recurso por tipo Perspectiva que conta todos os recursos monitorados. Sim Sim
Inspirações Fornece detalhamento hierárquico sobre o desempenho do Intelligent Insights. Sim Sim
Erros Fornece uma análise hierárquica sobre erros sql que ocorreram nos bancos de dados. Sim Sim
Tempos de Espera Oferece investigação hierárquica dos timeouts de SQL que ocorreram dentro dos bancos de dados. Sim Não
Bloqueios Fornece detalhamento hierárquico em bloqueios SQL que ocorreram nos bancos de dados. Sim Não
Esperas de banco de dados Fornece uma análise detalhada hierárquica das estatísticas de espera do SQL no nível do banco de dados. Inclui resumos do tempo total de espera e do tempo de espera por tipo de espera. Sim Não
Duração da consulta Fornece uma busca detalhada hierárquica nas estatísticas de execução da consulta, como duração da consulta, uso da CPU, uso de E/S de dados, uso de E/S de log. Sim Sim
Esperas de consulta Fornece uma análise hierárquica detalhada das estatísticas de espera de consultas, classificadas por categoria de espera. Sim Sim

Configuração da Análise de SQL do Azure (versão prévia)

Use o processo descrito em Adicionar soluções do Azure Monitor por meio da Galeria de Soluções para adicionar o Azure SQL Analytics (versão prévia) ao seu workspace do Log Analytics.

Configurar o Banco de Dados SQL do Azure para transmitir telemetria de diagnóstico

Depois de criar a solução do Azure SQL Analytics em seu workspace, você precisará configurar cada recurso que deseja monitorar para transmitir sua telemetria de diagnóstico para a Análise de SQL do Azure. Siga as instruções detalhadas nesta página:

A página acima também fornece instruções sobre como habilitar o suporte para monitorar várias assinaturas do Azure de um único workspace do Azure SQL Analytics como um único painel de vidro.

Usar a Análise de SQL do Azure (versão prévia)

Acesse a implantação do SQL Analytics na página soluções herdadas do workspace do Log Analytics.

A Análise de SQL do Azure fornece duas exibições separadas: uma para monitorar o Banco de Dados SQL e outra para monitorar a Instância Gerenciada de SQL.

Exibindo dados da Análise de SQL do Azure

O painel inclui a visão geral de todos os bancos de dados monitorados por meio de diferentes perspectivas. Para que diferentes perspectivas funcionem, você deve habilitar métricas ou logs adequados em seus recursos SQL para serem transmitidos para o workspace do Log Analytics.

Se algumas métricas ou logs não forem transmitidos para o Azure Monitor, os blocos na Análise de SQL do Azure não serão preenchidos com informações de monitoramento.

Exibição do Banco de Dados SQL

Depois que o bloco da Análise de SQL do Azure para o banco de dados for selecionado, o painel de monitoramento será mostrado.

Captura de tela que mostra o painel de monitoramento.

Selecionar qualquer um dos blocos abre um relatório detalhado na perspectiva específica. Depois que a perspectiva é selecionada, o relatório de detalhamento é aberto.

Captura de tela que mostra o relatório de detalhamento na perspectiva específica.

Cada perspectiva nessa exibição fornece resumos nos níveis de assinatura, servidor, pool elástico e banco de dados. Além disso, cada perspectiva apresenta uma visão específica do relatório localizado à direita. A seleção da assinatura, do servidor, do pool ou do banco de dados da lista continua a exploração detalhada.

Exibição da Instância Gerenciada de SQL

Depois que o bloco da Análise de SQL do Azure para os bancos de dados for selecionado, o painel de monitoramento será mostrado.

Visão geral da Análise de SQL do Azure

Selecionar qualquer um dos blocos abre um relatório detalhado na perspectiva específica. Depois que a perspectiva é selecionada, o relatório de detalhamento é aberto.

Selecionar a visualização de Instância Gerenciada do SQL mostra detalhes sobre a utilização da instância, os bancos de dados da instância e a telemetria das consultas executadas na instância gerenciada.

Tempos limite da Análise de SQL do Azure

Relatório do Intelligent Insights

O Intelligent Insights do Banco de Dados SQL do Azure permite que você saiba o que está acontecendo com o desempenho de todos os bancos de dados SQL do Azure. Todos os Insights Inteligentes coletados podem ser visualizados e acessados através da perspectiva Insights.

Insights da Análise de SQL do Azure

Pools elásticos e relatórios de banco de dados

Os pools elásticos e os bancos de dados têm seus próprios relatórios específicos que mostram todos os dados coletados para o recurso no tempo especificado.

Banco de Dados da Análise de SQL do Azure

Azure SQL Elastic Pool

Consultar relatórios

Por meio da duração da consulta e das perspectivas de espera de consulta, você pode correlacionar o desempenho de qualquer consulta por meio do relatório de consulta. Este relatório compara o desempenho da consulta em diferentes bancos de dados e facilita a identificação de bancos de dados que executam bem a consulta selecionada em comparação com os que estão lentos.

Consultas de Análise SQL do Azure

Permissões

Para usar a Análise de SQL do Azure (versão prévia), os usuários precisam receber uma permissão mínima da função Leitor no Azure. Essa função, no entanto, não permite que os usuários vejam o texto da consulta ou executem ações de ajuste automático. As funções mais permissivas no Azure que permitem o uso da Análise do Azure SQL na máxima extensão são Proprietário, Colaborador, Colaborador do Banco de Dados SQL ou Colaborador do SQL Server. Você também pode considerar a criação de uma função personalizada no portal com permissões específicas necessárias apenas para usar a Análise de SQL do Azure e sem acesso ao gerenciamento de outros recursos.

Criar uma função personalizada no portal

Observação

Recomendamos que você use o módulo do Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Reconhecendo que algumas organizações impõem controles de permissão estritos no Azure, localize o script do PowerShell a seguir, permitindo a criação de uma função personalizada "Operador de Monitoramento da Análise de SQL" no portal do Azure com as permissões mínimas de leitura e gravação necessárias para usar a Análise de SQL do Azure em sua extensão mais completa.

Substitua "{SubscriptionId}" no script abaixo pela sua ID de subscrição do Azure e execute o script logado com a função de proprietário ou colaborador no Azure.

 Connect-AzAccount
 Select-AzSubscription {SubscriptionId}
 $role = Get-AzRoleDefinition -Name Reader
 $role.Name = "SQL Analytics Monitoring Operator"
 $role.Description = "Lets you monitor database performance with Azure SQL Analytics as a reader. Does not allow change of resources."
 $role.IsCustom = $true
 $role.Actions.Add("Microsoft.SQL/servers/databases/read");
 $role.Actions.Add("Microsoft.SQL/servers/databases/topQueries/queryText/*");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/write");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/write");
 $role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/write");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/read");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/write");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/read");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/write");
 $role.Actions.Add("Microsoft.Resources/deployments/write");
 $role.AssignableScopes = "/subscriptions/{SubscriptionId}"
 New-AzRoleDefinition $role

Depois que a nova função for criada, atribua essa função a cada usuário que você precisa para conceder permissões personalizadas para usar a Análise de SQL do Azure.

Analisar dados e criar alertas

A análise de dados no Azure SQL Analytics baseia-se no idioma do Log Analytics para suas consultas e relatórios personalizados. Encontre a descrição dos dados disponíveis coletados do banco de dados para consulta personalizada em métricas e logs disponíveis.

O alerta automatizado no Azure SQL Analytics baseia-se na gravação de uma consulta do Log Analytics que dispara um alerta após uma condição atendida. Encontre abaixo vários exemplos de consultas do Log Analytics nas quais os alertas podem ser configurados no Azure SQL Analytics.

Criar alertas para o Banco de Dados SQL do Azure

Você pode criar alertas facilmente com os dados provenientes dos recursos do Banco de Dados SQL do Azure. Aqui estão algumas consultas de log úteis que você pode usar com um alerta de log:

CPU alta

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/DATABASES/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Observação

  • O pré-requisito de configurar esse alerta é que os bancos de dados monitorados transmitam métricas básicas para o workspace do Log Analytics usado pelo Azure SQL Analytics.
  • Substitua o valor de MetricName cpu_percent por dtu_consumption_percent para obter resultados de DTU altos.

Alta utilização de CPU em pools elásticos

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/ELASTICPOOLS/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Observação

  • O pré-requisito de configurar esse alerta é que os bancos de dados monitorados transmitam métricas básicas para o workspace do Log Analytics usado pelo Azure SQL Analytics.
  • Substitua o valor cpu_percent por dtu_consumption_percent de MetricName para alcançar resultados altos de DTU.

Armazenamento em média acima de 95% na última hora

let time_range = 1h;
let storage_threshold = 95;
AzureMetrics
| where ResourceId contains "/DATABASES/"
| where MetricName == "storage_percent"
| summarize max_storage = max(Average) by ResourceId, bin(TimeGenerated, time_range)
| where max_storage > storage_threshold
| distinct ResourceId

Observação

  • O pré-requisito de configurar esse alerta é que os bancos de dados monitorados transmitam métricas básicas para o workspace do Log Analytics usado pelo Azure SQL Analytics.
  • Essa consulta requer que uma regra de alerta seja configurada para disparar um alerta quando houver resultados (> 0 resultados) da consulta, indicando que a condição existe em alguns bancos de dados. A saída é uma lista de recursos de banco de dados que estão acima do storage_threshold dentro do time_range definido.
  • A saída é uma lista de recursos de banco de dados que estão acima do storage_threshold dentro do time_range definido.

Alerta sobre insights inteligentes

Importante

Caso um banco de dados esteja com um bom desempenho e que nenhum Intelligent Insights tenha sido gerado, essa consulta falhará com uma mensagem de erro: falha ao resolver a expressão escalar chamada rootCauseAnalysis_s. Esse comportamento é esperado para todos os casos em que não existem insights inteligentes para o banco de dados.

let alert_run_interval = 1h;
let insights_string = "hitting its CPU limits";
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| where TimeGenerated > ago(alert_run_interval)
| where rootCauseAnalysis_s contains insights_string
| distinct ResourceId

Observação

  • O pré-requisito de configurar esse alerta é que os bancos de dados monitorados transmitam o log de diagnóstico do SQLInsights para o workspace do Log Analytics usado pelo Azure SQL Analytics.
  • Essa consulta requer que uma regra de alerta seja configurada para ser executada com a mesma frequência que alert_run_interval, a fim de evitar resultados duplicados. A regra deve ser configurada para disparar o alerta quando houver resultados (> 0 resultados) da consulta.
  • Personalize o alert_run_interval para especificar o intervalo de tempo para verificar se a condição ocorreu em bancos de dados configurados para transmitir continuamente o log do SQLInsights para a Análise do SQL do Azure.
  • Personalize o insights_string para capturar a saída do texto de análise de causa raiz do Insights. Esse é o mesmo texto exibido na interface do usuário do Azure SQL Analytics que você pode usar nos insights disponíveis. Como alternativa, você pode usar a consulta abaixo para ver o texto de todos os Insights gerados em sua assinatura. Use a saída da consulta para coletar as cadeias de caracteres distintas para configurar alertas no Insights.
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s

Criar alertas para a Instância Gerenciada de SQL

O armazenamento está acima de 90%

let storage_percentage_threshold = 90;
AzureDiagnostics
| where Category =="ResourceUsageStats"
| summarize (TimeGenerated, calculated_storage_percentage) = arg_max(TimeGenerated, todouble(storage_space_used_mb_s) *100 / todouble (reserved_storage_mb_s))
   by ResourceId
| where calculated_storage_percentage > storage_percentage_threshold

Observação

  • O pré-requisito de configurar esse alerta é que a instância gerenciada monitorada tenha o streaming do log ResourceUsageStats habilitado para o workspace do Log Analytics usado pelo Azure SQL Analytics.
  • Essa consulta requer que uma regra de alerta seja configurada para disparar um alerta quando houver resultados (> 0 resultados) da consulta, indicando que a condição existe na instância gerenciada. A saída é o consumo de percentual de armazenamento na instância gerenciada.

O consumo médio da CPU está acima de 95% nos últimos 1 hora

let cpu_percentage_threshold = 95;
let time_threshold = ago(1h);
AzureDiagnostics
| where Category == "ResourceUsageStats" and TimeGenerated > time_threshold
| summarize avg_cpu = max(todouble(avg_cpu_percent_s)) by ResourceId
| where avg_cpu > cpu_percentage_threshold

Observação

  • O pré-requisito de configurar esse alerta é que a instância gerenciada monitorada tenha o streaming do log ResourceUsageStats habilitado para o workspace do Log Analytics usado pelo Azure SQL Analytics.
  • Essa consulta requer que uma regra de alerta seja configurada para disparar um alerta quando houver resultados (> 0 resultados) da consulta, indicando que a condição existe na instância gerenciada. A saída é o consumo médio do percentual de utilização da CPU no período definido na instância gerenciada.

Preços

Embora a Análise de SQL do Azure (versão prévia) seja livre para uso, o consumo de telemetria de diagnóstico acima das unidades gratuitas de ingestão de dados alocadas a cada mês se aplica, consulte os preços do Log Analytics. As unidades gratuitas de ingestão de dados fornecidas permitem o monitoramento gratuito de vários bancos de dados por mês. Bancos de dados mais ativos com cargas de trabalho mais pesadas ingerem mais dados versus bancos de dados ociosos. Você pode monitorar facilmente o consumo de ingestão de dados na Análise de SQL do Azure selecionando o Workspace do OMS no menu de navegação da Análise de SQL do Azure e selecionando Uso e Custos Estimados.

Próximas etapas