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 Gerenciada de SQL 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 mais opções de monitoramento, confira Monitoramento e ajuste de desempenho no Banco de Dados SQL do Azure e Instância Gerenciada de SQL do Azure.

A Análise de SQL do Azure (versão prévia) é uma solução de monitoramento de nuvem avançada para monitorar o desempenho de todos os seus bancos de dados SQL do Azure em escala e em várias assinaturas em uma só 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.

Ao usar essas métricas coletadas, você pode criar regras e alertas de monitoramento customizados. A Análise de SQL do Azure ajuda a identificar problemas em cada camada da pilha do aplicativo. A Análise de SQL do Azure usa o Diagnóstico do Azure com modos de exibição 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 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 suporta a transmissão de telemetria de diagnóstico para todos os seus 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 oferece suporte ao monitoramento de SQL Server hospedados localmente ou em máquinas virtuais.

Fonte Conectada Com suporte Descrição
Configurações de diagnóstico Sim Os dados de métrica e de log do Azure são enviados ao Logs do Azure Monitor diretamente pelo Azure.
Conta de Armazenamento do Azure Não O Azure Monitor não lê os dados pré-existentes 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 do 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 entre o agente do Operations Manager e o Azure Monitor não é usada pela Análise de SQL do Azure.

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

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

Opção de Análise de SQL do Azure Descrição Suporte ao Banco de Dados SQL do Azure Suporte à Instância Gerenciada de SQL
Recurso por tipo Perspectiva que conta todos os recursos monitorados. Sim Sim
Insights Fornece uma busca detalhada hierárquica no Intelligent Insights sobre o desempenho. Sim Yes
Errors Fornece drill down hierárquico sobre erros do SQL que ocorreram nos bancos de dados. Sim Sim
Tempos limite Fornece drill down hierárquico sobre tempos limite do SQL que ocorreram nos bancos de dados. Sim Não
Bloqueios Fornece drill down hierárquico sobre bloqueios do SQL que ocorreram nos bancos de dados. Sim Não
Esperas do banco de dados Fornece drill down hierárquico sobre estatísticas de espera do SQL sobre o nível do banco de dados. Inclui resumos de tempo de espera total e o tempo de espera por tipo de espera. Sim Não
Duração da consulta Fornece drill down hierárquico sobre as estatísticas de execução de consulta como duração da consulta, uso da CPU, uso de E/S dos dados, uso de E/S do log. Sim Sim
Esperas da consulta Fornece drill down hierárquico sobre as estatísticas de espera da consulta 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 a partir da Galeria de Soluções para adicionar a Análise de SQL do Azure (visualização) ao workspace do Log Analytics.

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

Depois que você criou uma solução de Análise de SQL do Azure em seu workspace, você precisará configurar cada recurso que você deseja monitorar para transmitir a telemetria de diagnóstico à 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 em um único workspace da Análise de SQL do Azure como um único painel de controle.

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

Navegue até a sua implantação da Análise de SQL 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 a 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 as diferentes perspectivas funcionem, é necessário permitir que métricas ou logs adequados em seus recursos SQL sejam 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 as informações de monitoramento.

Exibição de Banco de Dados SQL do Azure

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

Captura de tela que mostra o painel de monitoramento.

Selecionar qualquer bloco abre um relatório de detalhamento sobre a perspectiva específica. Quando a perspectiva for selecionada, o relatório de dril down será aberto.

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

Cada perspectiva nessa exibição fornece resumos nos níveis da assinatura, do servidor, do pool elástico e do banco de dados. Além disso, cada perspectiva mostrada é específica ao relatório à direita. Selecionar a assinatura, o servidor, o pool ou o banco de dados na lista dá continuidade ao drill down.

Visualização de Instância Gerenciada de SQL

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

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

Selecionar qualquer bloco abre um relatório de detalhamento sobre a perspectiva específica. Quando a perspectiva for selecionada, o relatório de dril down será aberto.

A seleção da exibição Instância Gerenciada de SQL mostra detalhes sobre a utilização da instância, os bancos de dados de instância e telemetria sobre as consultas executadas na instância gerenciada.

Tempos limite da Análise de SQL do Azure

Relatório de Insights inteligentes

O Intelligent Insights do Banco de dados SQL do Azure permite que você saiba o que está acontecendo com o desempenho do Banco de Dados SQL do Microsoft Azure. Todos os insights inteligentes coletados podem ser visualizados e acessados por meio da perspectiva de Insights.

Insights de Análise de SQL do Azure

Relatórios de pool elástico e 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 horário especificado.

Banco de dados de Análise de SQL do Azure

Pool elástico SQL do Azure

Relatórios de consulta

Por meio das perspectivas de duração da consulta e espera da consulta, é possível correlacionar o desempenho de qualquer consulta por meio do relatório de consulta. Este relatório compara o desempenho de consultas em bancos de dados diferentes e torna mais fácil identificar bancos de dados que executam a consulta selecionada em comparação com as lentas.

Consultas de Análise de 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 de leitor no Azure. No entanto, essa função não permite que os usuários vejam o texto de consulta ou realizem quaisquer ações de ajuste automático. As funções mais permissivas no Azure que permitem usar a Análise de SQL do Azure em toda a extensão são Proprietário, Colaborador, Colaborador do banco de dados do SQL ou Colaborador do SQL Server. Também convém 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 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 estrito no Azure, localize o seguinte script PowerShell, possibilitando a criação de uma função personalizada "Operador de monitoramento da Análise de SQL" no portal do Azure, com, pelo menos, permissões de leitura e gravação necessárias para usar a Análise de SQL do Azure até a extensão máxima.

Substitua "{SubscriptionId}" no script abaixo por sua ID da assinatura do Azure e execute o script conectado como uma 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 de criar a nova função, atribua essa função para cada usuário ao qual você precisa conceder permissões personalizadas para usar a Análise de SQL do Azure.

Analisar dados e criar alertas

A análise de dados na Análise de SQL do Azure baseia-se na linguagem de programação do Log Analytics para suas consultas personalizadas e relatórios. Leia a descrição dos dados disponíveis coletados do recurso de banco de dados para a consulta personalizada métricas e logs disponíveis.

Os alertas automatizados na Análise de SQL do Azure baseiam-se em gravar uma consulta do Log Analytics que dispare um alerta quando uma condição for atendida. Veja abaixo vários exemplos de consultas do Log Analytics após os quais alertas podem ser configurados na Análise de SQL do Azure.

Criar alertas para o Banco de Dados SQL do Azure

Você pode criar alertas facilmente com os dados provenientes de recursos de Banco de Dados SQL do Azure. Aqui estão algumas consultas de consultas de logs que podem ser usadas com um alerta do 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 da configuração desse alerta é que os bancos de dados monitorados transmitam métricas básicas para o workspace do Log Analytics usado pela Análise de SQL do Azure.
  • Substitua o valor MetricName cpu_percent por dtu_consumption_percent para obter os resultados de DTU alto.

CPU alta 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 da configuração desse alerta é que os bancos de dados monitorados transmitam métricas básicas para o workspace do Log Analytics usado pela Análise de SQL do Azure.
  • Substitua o valor MetricName cpu_percent por dtu_consumption_percent para obter os resultados de DTU alto.

Armazenamento em média acima de 95% na última 1 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 da configuração desse alerta é que os bancos de dados monitorados transmitam métricas básicas para o workspace do Log Analytics usado pela Análise de SQL do Azure.
  • Essa consulta exige que uma regra de alerta seja configurada para disparar um alerta quando houver resultados (> 0 resultado) 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 no time_range definido.
  • A saída é uma lista de recursos de banco de dados que estão acima do storage_threshold no time_range definido.

Alerta no Intelligent Insights

Importante

Caso um banco de dados esteja funcionando bem e não tenham sido gerados Intelligent Insights, essa consulta falhará com uma mensagem de erro: falha ao resolver a expressão escalar denominada rootCauseAnalysis_s. Esse comportamento é esperado para todos os casos em que não existem intelligent insights 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 da configuração desse alerta é que os bancos de dados monitorados transmitam log de diagnóstico do SQLInsights para o workspace do Log Analytics usado pela Análise de SQL do Azure.
  • Essa consulta exige 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 resultado) da consulta.
  • Personalize o alert_run_interval para especificar o intervalo de tempo a ser verificado se a condição tiver ocorrido em bancos de dados configurados para transmitir o log do SQLInsights para a Análise de SQL do Azure.
  • Personalize o insights_string para capturar a saída do texto da análise de causa de raiz do Insights. Este é o mesmo texto exibido na interface do usuário da Análise de SQL do Azure, o qual você pode usar dos insights existentes. Como alternativa, você pode usar a consulta a seguir 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 configuração desse alerta é que a instância gerenciada monitorada tenha o streaming do log ResourceUsageStats habilitado para o workspace do Log Analytics usando pela Análise de SQL do Azure.
  • Essa consulta exige que uma regra de alerta seja configurada para disparar um alerta quando houver resultados (> 0 resultado) da consulta, indicando que a condição existe na instância gerenciada. O resultado é o percentual de consumo de armazenamento na instância gerenciada.

O consumo médio de CPU está acima de 95% na última 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 configuração desse alerta é que a instância gerenciada monitorada tenha o streaming do log ResourceUsageStats habilitado para o workspace do Log Analytics usando pela Análise de SQL do Azure.
  • Essa consulta exige que uma regra de alerta seja configurada para disparar um alerta quando houver resultados (> 0 resultado) da consulta, indicando que a condição existe na instância gerenciada. A saída é o consumo médio de porcentagem de utilização da CPU em um período definido na instância gerenciada.

Preços

Enquanto a Análise de SQL do Azure (versão prévia) for de uso gratuito, aplica-se o consumo de telemetria de diagnóstico acima das unidades gratuitas de ingestão de dados alocados por mês, confira Preço do Log Analytics. As unidades gratuitas de ingestão de dados fornecidas habilitam o monitoramento gratuito de vários bancos de dados por mês. Bancos de dados mais ativos com cargas de trabalho mais pesadas vão ingerir mais dados em comparação com os 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, em seguida, selecionando Uso e custos estimados.

Próximas etapas