Habilitar os Insights de SQL (versão prévia)

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Este artigo descreve como habilitar os Insights de SQL (versão prévia) para monitorar as implantações do SQL. O monitoramento é o processo realizado de uma máquina virtual do Azure que faz uma conexão com suas implantações SQL e usa DMVs (exibições de gerenciamento dinâmico) para coletar dados de monitoramento. Você pode controlar quais conjuntos de dados são coletados e a frequência da coleta usando um perfil de monitoramento.

Observação

Para habilitar os Insights de SQL (versão prévia) criando o perfil de monitoramento e a máquina virtual usando um modelo do Resource Manager, confira Exemplos de modelo do Resource Manager para Insights de SQL (versão prévia).

Para saber como habilitar os Insights de SQL, veja também este episódio da série Data Exposed.

Criar espaço de trabalho do Log Analytics

Os Insights de SQL armazenam os dados em um ou mais workspaces do Log Analytics. Antes de habilitar os insights SQL, você precisa criar um workspace ou selecionar um existente. Um único espaço de trabalho pode ser usado com modo de classificação com múltiplos perfis de monitoramento, mas o espaço de trabalho e os perfis devem estar localizados na mesma região do Azure. Para habilitar e acessar os recursos nos insights SQL, você precisa ter a função de colaborador do Log Analytics no workspace.

Criar usuário de monitoramento

Você precisa de um usuário (logon) nas implantações SQL que deseja monitorar. Siga os procedimentos abaixo para os diferentes tipos de implantações do SQL.

As instruções a seguir abrangem o processo por tipo de SQL que você pode monitorar. Para fazer isso com um script em vários recursos SQL ao mesmo tempo, confira o arquivo LEIAME e o script de exemplo a seguir.

Banco de Dados SQL do Azure

Observação

Os Insights de SQL não são compatíveis com os seguintes cenários do Banco de Dados SQL do Azure:

  • Pools elásticos: não é possível coletar métricas para pools elásticos. Não é possível coletar métricas para bancos de dados em pools elásticos.
  • Camadas de serviço inferiores: métricas não podem ser coletadas para bancos de dados em objetivos de serviço Básico, S0 e S1

Os Insights de SQL são parcialmente compatíveis com os seguintes cenários do Banco de Dados SQL do Azure:

  • Camada sem servidor: as métricas podem ser coletadas para bancos dados usando a camada de computação sem servidor. No entanto, o processo de coleta de métricas redefinirá o timer de atraso de pausa automática, impedindo que o banco de dados entre em um estado de pausa automática.

Conecte-se a um banco de dados SQL do Azure com o SQL Server Management Studio, Editor de Consultas (versão prévia) no portal do Azure ou qualquer outra ferramenta do cliente SQL.

Execute o seguinte script para criar um usuário com as permissões necessárias. Substitua User por um nome de usuário e mystrongpassword por uma senha forte.

CREATE USER [user] WITH PASSWORD = N'mystrongpassword'; 
GO 
GRANT VIEW DATABASE STATE TO [user]; 
GO 

Screenshot of the Query Editor with a create telegraf user script.

Verifique se o usuário foi criado.

Screenshot of the Query Editor query window verifying the telegraf user script.

select name as username,
       create_date,
       modify_date,
       type_desc as type,
       authentication_type_desc as authentication_type
from sys.database_principals
where type not in ('A', 'G', 'R', 'X')
       and sid is not null
order by username

Instância Gerenciada do SQL do Azure

Conecte-se à sua Instância Gerenciada de SQL do Azure usando o SQL Server Management Studio ou uma ferramenta semelhante e execute o script a seguir para criar o usuário de monitoramento com as permissões necessárias. Substitua User por um nome de usuário e mystrongpassword por uma senha forte.

USE master; 
GO 
CREATE LOGIN [user] WITH PASSWORD = N'mystrongpassword'; 
GO 
GRANT VIEW SERVER STATE TO [user]; 
GO 
GRANT VIEW ANY DEFINITION TO [user]; 
GO 

SQL Server

Conecte-se ao SQL Server na sua máquina virtual do Azure e use o SQL Server Management Studio ou ferramenta semelhante para executar o script a seguir para criar o usuário de monitoramento com as permissões necessárias. Substitua User por um nome de usuário e mystrongpassword por uma senha forte.

USE master; 
GO 
CREATE LOGIN [user] WITH PASSWORD = N'mystrongpassword'; 
GO 
GRANT VIEW SERVER STATE TO [user]; 
GO 
GRANT VIEW ANY DEFINITION TO [user]; 
GO

Verifique se o usuário foi criado.

select name as username,
       create_date,
       modify_date,
       type_desc as type
from sys.server_principals
where type not in ('A', 'G', 'R', 'X')
       and sid is not null
order by username

Criar uma Máquina Virtual do Azure

Será preciso criar uma ou mais máquinas virtuais do Azure que serão usadas para coletar dados para monitorar o SQL.

Observação

Osperfis de monitoramentoespecificam quais dados serão coletados a partir dos diferentes tipos de SQL que você deseja monitorar. Cada máquina virtual de monitoramento pode ter apenas um perfil de monitoramento associado a ela. Se você precisar de vários perfis de monitoramento, será necessário criar uma máquina virtual para cada um.

Requisitos de máquina virtual do Azure

A máquina virtual do Azure têm os seguintes requisitos:

  • Sistema operacional: Ubuntu 18.04 usando a imagem do Azure Marketplace. Não há suporte para imagens personalizadas. Para obter a Manutenção de Segurança Estendida (ESM) para essa versão do Ubuntu, recomendamos usar a imagem de marketplace do Ubuntu Pro 18.04 LTS. Para obter mais informações, confira Suporte para Linux e tecnologia de software livre no Azure.
  • Tamanhos mínimos recomendados para máquina virtual do Azure: Standard_B2s (2 CPUs, 4 GiB de memória)
  • Implantado em qualquer região do Azure compatível com o agente do Azure Monitor e que atenda a todos os pré-requisitos do agente do Azure Monitor.

Observação

O tamanho da máquina virtual Padrão_B2s (2 CPUs, 4GiB de Memória) dará suporte até 100 cadeias de conexão. Você não deve alocar mais de 100 conexões a uma única máquina virtual.

Dependendo das configurações de rede dos seus recursos SQL, as máquinas virtuais talvez precisem ser colocadas na mesma rede virtual conforme os recursos do SQL para que possam fazer conexões de rede para coletar os dados de monitoramento.

Definir as configurações de rede

Cada tipo de SQL oferece métodos para sua máquina virtual de monitoramento para acessar o SQL com segurança. As seções a seguir abordam as opções baseadas no tipo de implantação SQL.

Banco de Dados SQL do Azure

Os insights SQL dá suporte ao acesso ao Banco de Dados SQL do Azure por meio de seu ponto de extremidade público, bem como da rede virtual.

Visto que o acesso por meio do ponto de extremidade público, você adicionaria uma regra na páginaConfigurações do firewalle na seção Configurações doFirewall de IP. Para especificar o acesso de uma rede virtual, você pode configurarregras de firewall da rede virtuale configurar asmarcas de serviço exigidas pelo agente de Azure Monitor. Este artigodescreve as diferenças entre estes dois tipos de regras de firewall.

Screenshot of an Azure SQL Database page in the Azure portal. The Set server firewall button is highlighted.

Screenshot of an Azure SQL Database Firewall settings page in the Azure portal. Firewall settings.

Instância Gerenciada do SQL do Azure

Se sua máquina virtual de monitoramento estiver na mesma VNet conforme seus recursos de Instância Gerenciada do SQL, consulteConectar dentro da mesma Vnet. Se sua máquina virtual de monitoramento estiver em uma VNet diferente de seus recursos de Instância Gerenciada do SQL, consulteConectar dentro de uma VNet diferente.

SQL Server

Se sua máquina virtual de monitoramento estiver na mesma VNet conforme seus recursos de máquina virtual do SQL, consulteConectar-se ao SQL Server dentro de uma rede virtual. Se sua máquina virtual de monitoramento estiver em uma VNet diferente conforme seus recursos de máquina virtual do SQL, consulte Conectar-se ao SQL Server pela Internet.

Armazenar a senha de monitoramento no Azure Key Vault

Como prática recomendada de segurança, é altamente recomendável armazenar suas senhas de SQL usuário (logon) em um Key Vault, em vez de inseri-las diretamente nas cadeias de conexão do perfil de monitoramento.

Ao configurar seu perfil para o monitoramento do SQL, você precisará de uma das seguintes permissões no recurso do cofre de chaves que pretende usar:

  • Microsoft.Authorization/roleAssignments/write
  • Microsoft.Authorization/roleAssignments/delete

Se você tiver essas permissões, uma política de acesso do Key Vault será criada automaticamente como parte da criação do seu perfil de SQL Monitoring que usa o Key Vault especificado.

Importante

A configuração de rede e segurança deve permitir que a VM de monitoramento acesse Key Vault. Para obter mais informações, confira Acessar o Azure Key Vault atrás de um firewall e Definir configurações de rede do Azure Key Vault.

Crie o perfil de monitoramento do SQL

Abra os Insights de SQL selecionando SQL (versão prévia) na seção Insights do menu Azure Monitor no portal do Azure. Selecione Criar novo perfil.

Screenshot of the Azure Monitor page in Azure portal. The create new profile button is highlighted.

O perfil armazenará as informações que você deseja coletar dos sistemas SQL. Ele tem as configurações específicas para:

  • Banco de Dados SQL do Azure
  • Instância Gerenciada do Azure SQL
  • Execução do SQL Server em máquinas virtuais

Por exemplo, você pode criar um perfil chamado deAmbiente de Produção do SQLe outro chamado depreparo do SQLcom configurações diferentes para frequência de coleta de dados, quais dados coletar e em qual espaço de trabalho os dados devem ser enviados.

O perfil é armazenado como um recurso deregra de coleta de dadosna assinatura e no grupo de recursos que você selecionar. Para cada perfil precisa do seguinte:

  • Nome. Não pode ser editado assim que criado.
  • Local. Essa é uma região do Azure.
  • Selecione um espaço de trabalho do Log Analytics para armazenar os dados de monitoramento.
  • As configurações de coleta para a frequência e o tipo de dados de monitoramento do SQL a serem coletados.

Observação

A localização do perfil deve estar no mesmo local que o espaço de trabalho do Log Analytics para o qual você planeja enviar os dados de monitoramento.

A screenshot of the Create new profile details page in the Azure portal.

Clique em Criar perfil de monitoramento logo que inserir os detalhes do perfil de monitoramento. Pode demorar até um minuto para que o perfil seja implantado. Se o novo perfil não estiver listado na caixa de combinação Perfil de monitoramento, clique no botão Atualizar e ele deverá aparecer assim que a implantação for concluída. Logo que selecionar o novo perfil, selecione a guiaGerenciar perfil para adicionar um computador de monitoramento que será associado ao perfil.

Adicionar computador de monitoramento

Selecione Adicionar computador de monitoramento para abrir um painel de contexto Add monitoring virtual machine e escolher a máquina virtual a ser configurada para monitorar as instâncias SQL e fornecer as cadeias de conexão.

Selecione a assinatura e o nome do seu monitoramento da máquina virtual. Se você estiver usando o cofre de chaves para armazenar senhas para os logons de monitoramento (altamente recomendado), selecione a assinatura desse cofre de chaves em Key vault subscriptions e, em seguida, selecione o cofre de chaves que armazena segredos em KeyVault. No campo Connection strings, insira o URI do cofre e o nome do segredo de cada senha a ser usada nas cadeias de conexão.

Por exemplo, se o URI do cofre de chaves for https://mykeyvault.vault.azure.net/, e os nomes do segredo forem sqlPassword1 e sqlPassword2, o JSON no campo Connection strings conterá o seguinte:

{
   "secrets": {
      "telegrafPassword1": {
         "keyvault": "https://mykeyvault.vault.azure.net/",
         "name": "sqlPassword1"
      },
      "telegrafPassword2": {
         "keyvault": "https://mykeyvault.vault.azure.net/",
         "name": "sqlPassword2"
      }
   }
}

Agora você pode fazer referência a esses segredos mais detalhadamente no campo Connection strings. No exemplo a seguir, as duas cadeias de conexão fazem referência aos segredos telegrafPassword1 e telegrafPassword2 definidos anteriormente.

{
   "sqlAzureConnections": [
      "Server=mysqlserver.database.windows.net;Port=1433;Database=mydatabase;User Id=telegraf;Password=$telegrafPassword1;"
   ],
   "sqlVmConnections": [
      "Server=mysqlserver1;Port=1433;Database=master;User Id=telegraf;Password=$telegrafPassword2;"
   ]
}

A screenshot of the Azure portal Add monitoring virtual machine page. Choose the VM, specify the KV url (if used) and the secret name. Enter connection strings for each system to monitor. Choose the KV where you created the secret used in the connection strings.

Consulte a próxima seção para obter detalhes de como identificar a cadeia de conexão para diferentes implantações do SQL.

Adicione as cadeias de conexão

A cadeia de conexão especifica o nome de logon que o recurso Insights de SQL (versão prévia) deve usar ao fazer logon no SQL para coletar dados de monitoramento. Se você estiver usando um Key Vault para armazenar a senha para o usuário de monitoramento, forneça o URI do Key Vault e o nome do segredo que contém a senha.

A cadeia de conexão variará para cada tipo de recurso SQL:

Banco de Dados SQL do Azure

As conexões TCP do computador de monitoramento para o endereço IP e a porta usada pelo banco de dados devem ser permitidas por quaisquer firewalls ou NSGs (grupos de segurança de rede) que possam existir no caminho de rede. Para obter detalhes sobre endereços IP e portas, consulte Banco de Dados SQL do Azure arquitetura de conectividade.

Insira a cadeia de conexão no formulário:

"sqlAzureConnections": [
   "Server=mysqlserver1.database.windows.net;Port=1433;Database=mydatabase;User Id=$username;Password=$password;",
   "Server=mysqlserver2.database.windows.net;Port=1433;Database=mydatabase;User Id=$username;Password=$password;"
]

Obtenha os detalhes da página Cadeias de conexão e o ponto de extremidade do ADO.NET apropriado para o banco de dados.

Para monitorar um secundário legível, acrescente ;ApplicationIntent=ReadOnly à cadeia de conexão. O SQL Insights dá suporte ao monitoramento de um único secundário. Os dados coletados serão marcados para refletir o primário ou secundário.

Instância Gerenciada do Azure SQL

As conexões TCP do computador de monitoramento para o endereço IP e a porta usada pela instância gerenciada devem ser permitidas por quaisquer firewalls ou NSGs (grupos de segurança de rede) que possam existir no caminho de rede. Para obter detalhes sobre endereços IP e portas, consulte tipos de conexão de Instância Gerenciada de SQL do Azure.

Insira a cadeia de conexão no formulário:

"sqlManagedInstanceConnections": [
   "Server= mysqlserver1.<dns_zone>.database.windows.net;Port=1433;User Id=$username;Password=$password;",
   "Server= mysqlserver2.<dns_zone>.database.windows.net;Port=1433;User Id=$username;Password=$password;" 
] 

Obtenha os detalhes da página Cadeias de conexão e o ponto de extremidade do ADO.NET apropriado para a instância gerenciada. Se estiver usando o ponto de extremidade público da instância gerenciada, substitua a porta 1433 por 3342.

Para monitorar um secundário legível, acrescente ;ApplicationIntent=ReadOnly à cadeia de conexão. O recurso Insights SQL dá suporte ao monitoramento de uma só réplica secundária de HA (alta disponibilidade) para um determinado banco de dados primário. Os dados coletados serão marcados para refletir o primário ou secundário.

SQL Server

O protocolo TCP/IP deve estar habilitado para a instância do SQL Server que você deseja monitorar. As conexões TCP do computador de monitoramento para o endereço IP e a porta usada pela instância do SQL Server devem ser permitidas por quaisquer firewalls ou NSGs (grupos de segurança de rede) que possam existir no caminho de rede.

Se você quiser monitorar o SQL Server configurado para alta disponibilidade (usando grupos de disponibilidade ou instâncias de cluster de failover), é recomendável monitorar cada instância do SQL Server no cluster individualmente, em vez de conectar-se por meio de um ouvinte de grupo de disponibilidade ou um nome de cluster de failover. Isso garante que os dados de monitoramento sejam coletados independentemente da função de instância atual (primária ou secundária).

Insira a cadeia de conexão no formulário:

"sqlVmConnections": [
   "Server=SQLServerInstanceIPAddress1;Port=1433;User Id=$username;Password=$password;",
   "Server=SQLServerInstanceIPAddress2;Port=1433;User Id=$username;Password=$password;"
] 

Use o endereço IP que a instância do SQL Server escuta.

Se sua instância do SQL Server estiver configurada para escutar em uma porta não padrão, substitua 1433 pelo número da porta na cadeia de conexão. Se você estiver usando o SQL Server na máquina virtual do Azure, veja qual porta deverá usar na página Segurança do recurso.

A screenshot of the SQL virtual machine Security page in the Azure portal. The SQL virtual machine security page has a Security & networking section with a Port field.

Para qualquer instância do SQL Server, é possível determinar todos os endereços IP e as portas que estão escutando conectando-se à instância e executando a seguinte consulta T-SQL, desde que haja pelo menos uma conexão TCP com a instância:

SELECT DISTINCT local_net_address, local_tcp_port
FROM sys.dm_exec_connections
WHERE net_transport = 'TCP'
      AND
      protocol_type = 'TSQL';

Monitoramento de perfil criado

SelecioneAdicionar monitoramento da máquina virtual para configurar a máquina virtual para coletar os dados de seus recursos do SQL. Não retorne à guiaVisão geral. Em alguns minutos, a coluna de status deve ser alterada para ler "Recolhendo", você deve ver os dados dos recursos do SQL que você escolheu monitorar.

Se os dados não aparecerem, confira Solucionar problemas de Insights de SQL para identificar o problema.

A screenshot of the Azure portal page for Azure Monitor for SQL. In the Insights menu, SQL is selected. A profile is shown to have been created.

Observação

Se precisar atualizar o perfil de monitoramento ou as cadeias de conexão nas VMs de monitoramento, use a guia Gerenciar perfil do recurso Insights de SQL. Assim que as atualizações forem salvas, as alterações serão aplicadas em cerca de cinco minutos.

Próximas etapas