Monitorizar a Base de Dados SQL do Azure com o SQL do Azure Analytics (pré-visualização)

APLICA-SE A: SQL do Azure Database, Azure SQL Managed Instance

Atenção

SQL do Azure Analytics (pré-visualização) é uma integração com o Azure Monitor, onde muitas soluções de monitorização já não estão em desenvolvimento ativo. Para obter mais opções de monitorização, veja Monitorização e otimização do desempenho na Base de Dados SQL do Azure e Azure SQL Managed Instance.

SQL do Azure Analytics (pré-visualização) é uma solução avançada de monitorização da cloud para monitorizar o desempenho de todas as bases de dados SQL do Azure em escala e em várias subscrições numa única vista. SQL do Azure Analytics recolhe e visualiza as principais métricas de desempenho com inteligência incorporada para resolução de problemas de desempenho.

Ao utilizar estas métricas recolhidas, pode criar regras e alertas de monitorização personalizados. SQL do Azure Analytics ajuda-o a identificar problemas em cada camada da pilha de aplicações. SQL do Azure Analytics utiliza métricas Diagnóstico do Azure juntamente com as vistas do Azure Monitor para apresentar dados sobre todas as bases de dados SQL do Azure numa única área de trabalho do Log Analytics. O Azure Monitor ajuda-o a recolher, correlacionar e visualizar dados estruturados e não estruturados.

Origens ligadas

SQL do Azure Analytics é uma solução de monitorização apenas na cloud que suporta a transmissão em fluxo de telemetria de diagnósticos para todas as bases de dados SQL do Azure. Uma vez que o SQL do Azure Analytics não utiliza agentes para ligar ao Azure Monitor, não suporta a monitorização de SQL Server alojados no local ou em máquinas virtuais.

Origem Ligada Suportado Description
Definições de diagnóstico Sim Os dados de métricas e registos do Azure são enviados diretamente para os Registos do Azure Monitor pelo Azure.
Conta de armazenamento do Azure No O Azure Monitor não lê os dados de uma conta de armazenamento.
Agentes do Windows No Os agentes Diretos do Windows não são utilizados pelo SQL do Azure Analytics.
Agentes do Linux No Os agentes Do Linux Direto não são utilizados pelo SQL do Azure Analytics.
Grupo de gestão do System Center Operations Manager No Uma ligação direta do agente do Operations Manager para o Azure Monitor não é utilizada pelo SQL do Azure Analytics.

opções do SQL do Azure Analytics

A tabela abaixo descreve as opções suportadas para duas versões do dashboard do SQL do Azure Analytics, uma para a Base de Dados SQL do Azure e outra para bases de dados Azure SQL Managed Instance.

opção análise de SQL do Azure Description Base de Dados SQL suporte Suporte ao SQL Managed Instance
Recurso por tipo Perspetiva que conta todos os recursos monitorizados. Yes Yes
Informações Fornece uma desagregação hierárquica das Informações Inteligentes sobre o desempenho. Yes Yes
Erros Fornece desagregar hierárquica sobre erros de SQL que ocorreram nas bases de dados. Yes Yes
Tempos limite Fornece desagregar hierárquica nos tempos limite do SQL que ocorreram nas bases de dados. Yes No
Bloqueios Fornece desagregar hierárquicos em bloqueios de SQL que ocorreram nas bases de dados. Yes No
Esperas da base de dados Fornece desagregar hierárquica nas estatísticas de espera do SQL ao nível da base de dados. Inclui resumos do tempo total de espera e do tempo de espera por tipo de espera. Yes No
Duração da consulta Fornece desagregar hierárquica nas estatísticas de execução de consultas, tais como a duração da consulta, a utilização da CPU, a utilização de E/S de Dados, a utilização de E/S de Registo. Yes Yes
Esperas de consultas Fornece desagregar hierárquica nas estatísticas de espera de consulta por categoria de espera. Yes Yes

Configuração do SQL do Azure Analytics (pré-visualização)

Utilize o processo descrito em Adicionar soluções do Azure Monitor a partir da Galeria de Soluções para adicionar SQL do Azure Analytics (Pré-visualização) à sua área de trabalho do Log Analytics.

Configurar a Base de Dados SQL do Azure para transmitir em fluxo telemetria de diagnóstico

Depois de criar a solução SQL do Azure Analytics na área de trabalho, tem de configurar cada recurso que pretende monitorizar para transmitir em fluxo a telemetria de diagnóstico para o SQL do Azure Analytics. Siga as instruções detalhadas nesta página:

A página acima também fornece instruções sobre como ativar o suporte para monitorizar várias subscrições do Azure a partir de uma única área de trabalho do SQL do Azure Analytics como um único painel de vidro.

Utilizar o SQL do Azure Analytics (pré-visualização)

Navegue para a implementação do SQL Analytics a partir da página Soluções legadas da área de trabalho do Log Analytics.

SQL do Azure Analytics fornece duas vistas separadas: uma para monitorização Base de Dados SQL e outra vista para monitorização SQL Managed Instance.

Ver dados do SQL do Azure Analytics

O dashboard inclui a descrição geral de todas as bases de dados que são monitorizadas através de diferentes perspetivas. Para que diferentes perspetivas funcionem, tem de ativar métricas ou registos adequados nos seus recursos SQL para serem transmitidos em fluxo para a área de trabalho do Log Analytics.

Se algumas métricas ou registos não forem transmitidos para o Azure Monitor, os mosaicos no SQL do Azure Analytics não serão preenchidos com informações de monitorização.

vista Base de Dados SQL

Assim que o mosaico SQL do Azure Analytics da base de dados estiver selecionado, é apresentado o dashboard de monitorização.

Captura de ecrã que mostra o dashboard de monitorização.

Ao selecionar qualquer um dos mosaicos, abre um relatório de desagregação na perspetiva específica. Assim que a perspetiva estiver selecionada, o relatório de desagregação é aberto.

Captura de ecrã que mostra o relatório de desagregação na perspetiva específica.

Cada perspetiva nesta vista fornece resumos nos níveis de subscrição, servidor, conjunto elástico e base de dados. Além disso, cada perspetiva mostra uma perspetiva específica do relatório à direita. A seleção da subscrição, servidor, conjunto ou base de dados da lista continua a desagregação.

vista SQL Managed Instance

Assim que o mosaico SQL do Azure Analytics das bases de dados estiver selecionado, é apresentado o dashboard de monitorização.

Descrição Geral do SQL do Azure Analytics

Ao selecionar qualquer um dos mosaicos, abre um relatório de desagregação na perspetiva específica. Assim que a perspetiva estiver selecionada, o relatório de desagregação é aberto.

Selecionar a vista SQL Managed Instance mostra detalhes sobre a utilização da instância, bases de dados de instâncias e telemetria nas consultas executadas na instância gerida.

Tempos Limite do SQL do Azure Analytics

Relatório do Intelligent Insights

O SQL do Azure Database Intelligent Insights permite-lhe saber o que está a acontecer com o desempenho de todas as bases de dados SQL do Azure. Todas as Informações Inteligentes recolhidas podem ser visualizadas e acedidas através da perspetiva do Insights.

Informações do SQL do Azure Analytics

Conjuntos elásticos e relatórios de bases de dados

Tanto os conjuntos elásticos como as bases de dados têm os seus próprios relatórios específicos que mostram todos os dados recolhidos para o recurso no tempo especificado.

Base de Dados do SQL do Azure Analytics

SQL do Azure conjunto elástico

Consultar relatórios

Através da duração da consulta e das perspetivas de espera de consultas, pode correlacionar o desempenho de qualquer consulta através do relatório de consulta. Este relatório compara o desempenho da consulta em diferentes bases de dados e facilita a identificação de bases de dados que executam bem a consulta selecionada em comparação com as que estão lentas.

Consultas do SQL do Azure Analytics

Permissões

Para utilizar o SQL do Azure Analytics (pré-visualização), é necessário conceder aos utilizadores uma permissão mínima da função Leitor no Azure. No entanto, esta função não permite que os utilizadores vejam o texto da consulta nem efetuem quaisquer ações de Otimização automática. As funções mais permissivas no Azure que permitem utilizar o SQL do Azure Analytics na extensão máxima são Proprietário, Contribuidor, Contribuidor da BD SQL ou Contribuidor SQL Server. Também poderá querer considerar criar uma função personalizada no portal com permissões específicas necessárias apenas para utilizar o SQL do Azure Analytics e sem acesso à gestão de outros recursos.

Criar uma função personalizada no portal

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Reconhecendo que algumas organizações impõem controlos de permissão rigorosos no Azure, encontre o seguinte script do PowerShell que permite a criação de uma função personalizada "Operador de Monitorização da Análise de SQL" no portal do Azure com as permissões mínimas de leitura e escrita necessárias para utilizar o SQL do Azure Analytics na sua extensão máxima.

Substitua "{SubscriptionId}" no script abaixo pelo seu ID de subscrição do Azure e execute o script com sessão iniciada como Proprietário ou Contribuidor 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

Assim que a nova função for criada, atribua esta função a cada utilizador de que precisa para conceder permissões personalizadas para utilizar o SQL do Azure Analytics.

Analisar dados e criar alertas

A análise de dados no SQL do Azure Analytics baseia-se na linguagem do Log Analytics para a sua consulta e relatórios personalizados. Encontre a descrição dos dados disponíveis recolhidos a partir do recurso de base de dados para consultas personalizadas em métricas e registos disponíveis.

Os alertas automatizados no SQL do Azure Analytics baseiam-se na escrita de uma consulta do Log Analytics que aciona um alerta após uma condição cumprida. Veja abaixo vários exemplos de consultas do Log Analytics nas quais os alertas podem ser configurados no SQL do Azure Analytics.

Criar alertas para a Base de Dados do SQL do Azure

Pode criar facilmente alertas com os dados provenientes de recursos da Base de Dados do SQL do Azure. Eis algumas consultas de registo úteis que pode utilizar com um alerta de registo:

CPU elevada

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

Nota

  • O pré-requisito da configuração deste alerta é que as bases de dados monitorizadas transmitem métricas básicas para a área de trabalho do Log Analytics utilizada pelo SQL do Azure Analytics.
  • Substitua o valor cpu_percent MetricName por dtu_consumption_percent para obter resultados de DTU elevados.

CPU elevada em conjuntos 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

Nota

  • O pré-requisito da configuração deste alerta é que as bases de dados monitorizadas transmitem métricas básicas para a área de trabalho do Log Analytics utilizada pelo SQL do Azure Analytics.
  • Substitua o valor cpu_percent MetricName por dtu_consumption_percent para obter resultados de DTU elevados.

Armazenamento em média acima de 95% nas últimas 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

Nota

  • O pré-requisito da configuração deste alerta é que as bases de dados monitorizadas transmitem métricas básicas para a área de trabalho do Log Analytics utilizada pelo SQL do Azure Analytics.
  • Esta consulta requer a configuração de uma regra de alerta para acionar um alerta quando existem resultados (> 0 resultados) da consulta, indicando que a condição existe em algumas bases de dados. O resultado é uma lista de recursos de base de dados que estão acima do storage_threshold dentro do time_range definido.
  • O resultado é uma lista de recursos de base de dados que estão acima do storage_threshold dentro do time_range definido.

Alerta sobre informações inteligentes

Importante

Caso uma base de dados tenha um bom desempenho e não tenha sido gerada nenhuma Informação Inteligente, esta consulta falhará com uma mensagem de erro: Falha ao resolver a expressão escalar com o nome rootCauseAnalysis_s. Este comportamento é esperado para todos os casos em que não existem informações inteligentes para a base 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

Nota

  • O pré-requisito da configuração deste alerta é que as bases de dados monitorizadas transmitem o registo de diagnósticos do SQLInsights para a área de trabalho do Log Analytics utilizada pelo SQL do Azure Analytics.
  • Esta consulta requer que seja configurada uma regra de alerta para ser executada com a mesma frequência alert_run_interval que para evitar resultados duplicados. A regra deve ser configurada para acionar o alerta quando existirem resultados (> 0 resultados) da consulta.
  • Personalize o alert_run_interval para especificar o intervalo de tempo para verificar se a condição ocorreu em bases de dados configuradas para transmitir o registo do SQLInsights para o SQL do Azure Analytics.
  • Personalize o insights_string para capturar a saída do texto de análise da causa raiz do Insights. Este é o mesmo texto apresentado na IU do SQL do Azure Analytics que pode utilizar a partir das informações existentes. Em alternativa, pode utilizar a consulta abaixo para ver o texto de todas as Informações geradas na sua subscrição. Utilize o resultado da consulta para recolher as cadeias distintas para configurar alertas no Insights.
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s

Criar alertas para SQL Managed Instance

O armazenamento está acima dos 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

Nota

  • O pré-requisito da configuração deste alerta é que a instância gerida monitorizada tem a transmissão em fluxo do registo ResourceUsageStats ativada para a área de trabalho do Log Analytics utilizada pelo SQL do Azure Analytics.
  • Esta consulta requer que seja configurada uma regra de alerta para acionar um alerta quando existem resultados (> 0 resultados) da consulta, indicando que a condição existe na instância gerida. O resultado é o consumo da percentagem de armazenamento na instância gerida.

O consumo médio da CPU é superior a 95% nas últimas 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

Nota

  • O pré-requisito da configuração deste alerta é que a instância gerida monitorizada tem a transmissão em fluxo do registo ResourceUsageStats ativada para a área de trabalho do Log Analytics utilizada pelo SQL do Azure Analytics.
  • Esta consulta requer que seja configurada uma regra de alerta para acionar um alerta quando existem resultados (> 0 resultados) da consulta, indicando que a condição existe na instância gerida. O resultado é o consumo médio da percentagem de utilização da CPU no período definido na instância gerida.

Preços

Embora o SQL do Azure Analytics (pré-visualização) seja gratuito, o consumo de telemetria de diagnóstico acima das unidades gratuitas de ingestão de dados alocadas todos os meses aplica-se, veja Preços do Log Analytics. As unidades gratuitas de ingestão de dados fornecidas permitem a monitorização gratuita de várias bases de dados todos os meses. As bases de dados mais ativas com cargas de trabalho mais pesadas ingerem mais dados versus bases de dados inativas. Pode monitorizar facilmente o consumo de ingestão de dados no SQL do Azure Analytics ao selecionar Área de Trabalho do OMS no menu de navegação do SQL do Azure Analytics e, em seguida, selecionar Utilização e Custos Estimados.

Passos seguintes