Ativar monitorização de desempenho para Microsoft SQL (pré-visualização)

Este artigo explica como ativar e desativar a monitorização de desempenho nos serviços Microsoft SQL para que os dados de desempenho apareçam na página de Desempenho do Database Hub. Ativar a monitorização de desempenho não implica custos adicionais. Não precisa de implementar ou manter agentes de monitorização, armazenamentos de dados ou outra infraestrutura de monitorização.

Importante

Este recurso está em pré-visualização.

Os passos para ativar a monitorização de desempenho variam consoante o serviço. Depois de ativares a monitorização, todos os serviços enviam dados de desempenho para o mesmo pipeline de telemetria. O Database Hub utiliza estes dados para ajudar a identificar problemas de desempenho e criar painéis de controlo. Também pode consultar a telemetria diretamente com o KQL. Para mais informações, consulte Telemetria de monitorização do desempenho de consultas. Este artigo aborda os seguintes serviços:

Pode visualizar recursos Microsoft SQL no Database Hub a partir do Azure, Fabric e on-premises. Os seguintes tipos de recursos estão incluídos:

  • Base de Dados SQL do Azure
  • Azure SQL Managed Instance
  • SQL Server em VMs do Azure
  • SQL Server ativado pelo Azure Arc
  • Base de Dados SQL do Azure conjuntos elásticos
  • Banco de dados SQL no Fabric

Os seguintes tipos de recursos são visíveis no Database Hub, mas a página Performance ainda não os suporta:

  • Banco de dados SQL no Fabric
  • Base de Dados SQL do Azure conjuntos elásticos
  • Azure SQL Managed Instance
  • A monitorização de desempenho não recolhe dados de bases de dados em pools elásticos do Base de Dados SQL do Azure nem de réplicas secundárias.

Disponibilidade regional e tratamento de dados

Está disponível monitorização de desempenho para recursos Microsoft SQL nas seguintes regiões do Azure. As clouds governamentais, soberanas e desligadas da rede não são suportadas durante a pré-visualização. Para mais informações, consulte disponibilidade das regiões do Fabric.

  • Sul do Brasil
  • Canadá Central
  • Leste do Canadá
  • E.U.A. Central
  • E.U.A. Leste
  • E.U.A. Leste 2
  • E.U.A. Centro-Norte
  • E.U.A. Centro-Sul
  • E.U.A. Centro-Oeste
  • E.U.A. Oeste
  • E.U.A. Oeste 2
  • E.U.A. Oeste 3

A monitorização de desempenho recolhe dados de desempenho a partir de vistas de gestão dinâmica (DMVs) nos seus recursos SQL. A monitorização de desempenho não recolhe dados pessoais nem conteúdo do cliente, e os dados não são armazenados em repouso fora da geografia do recurso SQL monitorizado.

Registe o fornecedor de recursos SQL

Para visualizar dados de monitorização do desempenho, registe o fornecedor de recursos Microsoft.Sql em cada subscrição que contenha os recursos de base de dados que pretende monitorizar. Para mais informações, consulte o registo de prestadores do Arizona.

az provider register --namespace Microsoft.Sql

Para verificar o estado de registo, execute o seguinte comando. O registo está completo quando o comando retorna Registered.

az provider show --namespace Microsoft.Sql --query "registrationState" --output tsv

Ativar a monitorização de desempenho para Base de Dados SQL do Azure

Use um dos seguintes métodos:

  • No Hub de Base de Dados, vá para a página Estate, selecione o recurso e, em seguida, selecione Ativar Monitorização de Desempenho.
  • Execute o seguinte script T-SQL em cada base de dados de utilizador que pretende monitorizar. Não execute o script na master base de dados. Para aplicar o script a vários servidores ao mesmo tempo, considere consultas multiservidor no SQL Server Management Studio (SSMS). Adicione a propriedade estendida MS_EnablePerformanceMonitoringPreview a cada base de dados de utilizadores que pretende monitorizar.
IF EXISTS (
    SELECT 1
    FROM sys.extended_properties
    WHERE class = 0
      AND name = N'MS_EnablePerformanceMonitoringPreview'
)
BEGIN
    EXEC sys.sp_updateextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END
ELSE
BEGIN
    EXEC sys.sp_addextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END;
GO

Como desativar a monitorização de desempenho no Base de Dados SQL do Azure

Para deixar de recolher dados de desempenho para uma base de dados de utilizador, altere @value = N'true' para @value = N'false' em ambas as chamadas de procedimento e, em seguida, execute novamente o script T-SQL nessa base de dados.

Ativar a monitorização de desempenho para SQL Server em VMs do Azure

Para permitir a monitorização de desempenho do SQL Server em VMs do Azure, adicione a DatabaseWatcheronAzureVM feature flag às definições públicas da extensão SQL IaaS Agent. A extensão recolhe então dados de desempenho da instância do SQL Server e utiliza a identidade gerida atribuída ao sistema da VM para os carregar num endpoint regional de telemetria. A monitorização é configurada por VM. Ativar o flag de funcionalidade numa VM não permite a monitorização noutras VMs.

Para verificação, resolução de problemas e a lista completa de conjuntos de dados recolhidos, veja Ativar monitorização de desempenho para SQL Server em VMs Azure.

Pré-requisitos para SQL Server em VMs do Azure

  • A monitorização de desempenho suporta SQL Server 2016, SP1 e versões posteriores em VMs do Azure. Versões do SQL Server anteriores ao SQL Server 2016 SP1 não são suportadas.
  • A monitorização de desempenho recolhe todos os conjuntos de dados para as edições SQL Server Enterprise e Standard. Para as edições SQL Server Developer, Express e Evaluation, a monitorização de desempenho recolhe apenas dados de ligação do cliente.
  • Tem de instalar a 2.0.229.0 versão ou posterior no modo de gestão completa. Tem de ativar a extensão e o respetivo estado de provisionamento tem de ser Succeeded.
  • A VM deve ter uma identidade gerida atribuída pelo sistema ativada.
  • O recurso de instância do SQL Server deve estar disponível através de inventário unificado.
  • Tem de registar o fornecedor de Microsoft.Sql recursos na subscrição.
  • A VM deve permitir conectividade HTTPS de saída na porta 443 para telemetry.<region>.arcdataservices.com, onde <region> é a região do Azure que hospeda a VM.
  • Precisas da versão mais recente da CLI do Azure.
  • Precisa de permissão para visualizar e atualizar extensões na VM, como a adesão ao papel de Contribuidor de Máquina Virtual .

Como ativar a monitorização de desempenho para SQL Server em VMs do Azure

Importante

As definições de extensão do Agente SQL IaaS não são cumulativas. Quando atualizar a extensão, inclua todas as definições públicas existentes para evitar desativar inadvertidamente outra funcionalidade.

Os passos seguintes do PowerShell recuperam as definições públicas atuais, adicionam o flag de funcionalidade de monitorização de desempenho e aplicam as definições combinadas à extensão.

  1. Abra o PowerShell num ambiente onde a CLI do Azure esteja instalada e, em seguida, inicie sessão no Azure.

    az login
    
  2. Define as variáveis para a tua VM do SQL Server.

    $subscriptionId = "<subscription-id>"
    $resourceGroup = "<resource-group>"
    $vmName = "<vm-name>"
    
    az account set --subscription $subscriptionId
    
  3. Recuperar as definições atuais da extensão SQL IaaS Agent.

    $extension = az vm extension show `
      --resource-group $resourceGroup `
      --vm-name $vmName `
      --name SqlIaasExtension `
      --query "{settings:settings,typeHandlerVersion:typeHandlerVersion}" `
      --output json | ConvertFrom-Json
    
    if ($null -eq $extension.settings) {
      $settings = [pscustomobject]@{}
    }
    else {
      $settings = $extension.settings
    }
    
  4. Adicione a DatabaseWatcheronAzureVM flag de funcionalidade, preservando as flags de funcionalidade existentes.

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $true
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  5. Guarda as definições fundidas e aplica-as à extensão SQL IaaS Agent.

    $settingsPath = Join-Path $env:TEMP "sqlvm-performance-monitoring-settings.json"
    
    try {
      $settings |
        ConvertTo-Json -Depth 50 |
        Out-File -FilePath $settingsPath -Encoding utf8
    
      az vm extension set `
        --resource-group $resourceGroup `
        --vm-name $vmName `
        --publisher Microsoft.SqlServer.Management `
        --name SqlIaaSAgent `
        --extension-instance-name SqlIaasExtension `
        --settings "@$settingsPath"
    }
    finally {
      Remove-Item $settingsPath -ErrorAction SilentlyContinue
    }
    
  6. Repita estes passos para cada VM que pretende monitorizar.

A extensão recarrega automaticamente as definições públicas. Não precisas de reiniciar o serviço IaaS Agent do SQL Server ou a VM. A maioria dos dados de desempenho está disponível entre 3 a 5 minutos após a implementação da definição. Alguns dados baseados em inventário podem demorar até 15 minutos.

Para confirmar que a monitorização está a decorrer, verifique o estado da extensão:

az vm extension show `
  --resource-group $resourceGroup `
  --vm-name $vmName `
  --name SqlIaasExtension `
  --instance-view `
  --query "instanceView.statuses[0].message" `
  --output tsv

Quando a monitorização de desempenho está a correr e a carregar dados com sucesso, o estado inclui DatabaseMonitorArcPlugin: {"State":"Running","MetricsUploadStatus":"OK"}. Para confirmar que os dados estão disponíveis, execute a consulta de teste da ligação em telemetria de monitorização do desempenho de consultas.

Desativar a monitorização de desempenho para SQL Server em VMs do Azure

Para deixar de recolher novos dados de desempenho para uma VM, defina a DatabaseWatcheronAzureVM feature flag para false. Juntar a alteração com as definições públicas existentes para que outras funcionalidades de extensão SQL IaaS Agent não sejam afetadas.

  1. Completar os passos 1 a 3 em Ativar a monitorização de desempenho do SQL Server em VMs do Azure para iniciar sessão, definir as variáveis e recuperar as definições atuais.

  2. Defina a flag de funcionalidade DatabaseWatcheronAzureVM como false, mantendo as flags de funcionalidade existentes.

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $false
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  3. Complete o passo 5 em Ativar a monitorização de desempenho do SQL Server em VMs do Azure para aplicar as definições combinadas à extensão.

Espere alguns minutos para que a nova definição entre em vigor e depois verifique novamente o estado da extensão para confirmar a alteração.

Ativar a monitorização de desempenho para o SQL Server ativada pelo Azure Arc

A monitorização de desempenho do SQL Server ativada pelo Azure Arc está ativada por defeito. Quando uma instância cumpre todos os pré-requisitos desta secção, recolhe automaticamente os dados de desempenho, e não precisa de tomar mais nenhuma medida. Para mais informações, consulte Monitor SQL Server ativado pelo Azure Arc.

Pré-requisitos para o SQL Server ativado pelo Azure Arc

  • A Extensão Azure para SQL Server (WindowsAgent.SqlServer) deve ser uma versão 1.1.2504.99 ou versões posteriores.
  • O SQL Server deve correr no Windows. Não há suporte para o SQL Server no Linux. O SQL Server no Windows Server 2012 R2 e versões anteriores não é suportado.
  • O SQL Server deve ser da edição Standard ou Enterprise.
  • O SQL Server deve ser versão 2016 SP1 ou versões posteriores.
  • O servidor deve ter conectividade a *.<region>.arcdataservices.com. Para mais informações, consulte os requisitos de rede.
  • O tipo de licença no SQL Server ativado pelo Azure Arc deve ser Software Assurance ou pay-as-you-go.
  • Precisa de uma função do Azure que inclua a ação Microsoft.AzureArcData/sqlServerInstances/getTelemetry/. O Azure Hybrid Database Administrator - Read Only Service Role incorporado inclui esta ação. Para obter mais informações, consulte Funções predefinidas do Azure.
  • As instâncias de clusters de failover não são atualmente suportadas.

Como ativar a monitorização de desempenho no SQL Server ativada pelo Azure Arc

Os seguintes comandos permitem a recolha de dados de desempenho. Os comandos podem correr com sucesso, mas o sistema recolhe dados de desempenho apenas quando a instância cumpre todos os pré-requisitos desta secção.

Para ativar ou desativar a coleção no portal Azure:

  1. Na página de recursos do SQL Server ativado pelo Azure Arc, selecione Painel de Desempenho (visualização).
  2. No topo do painel Painel de Desempenho, selecione Configurar.
  3. No painel Configurar definições de monitorização , use o botão para ativar a recolha de dados de monitorização.
  4. Selecione Aplicar configurações.

Para permitir a recolha usando a CLI do Azure, execute o seguinte comando. Substitua os espaços reservados para ID de assinatura, grupo de recursos e nome do recurso.

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=true' --api-version 2023-09-01-preview

Como desativar a monitorização de desempenho no SQL Server ativada pelo Azure Arc

Para ativar ou desativar a coleção no portal Azure:

  1. Na página de recursos do SQL Server ativado pelo Azure Arc, selecione Painel de Desempenho (visualização).
  2. No topo do painel Painel de Desempenho, selecione Configurar.
  3. No painel Configurar definições de monitorização , use a opção para desativar a recolha de dados de monitorização.
  4. Selecione Aplicar configurações.

Para desativar a coleção usando a CLI do Azure, execute o seguinte comando. Substitua os espaços reservados para ID de assinatura, grupo de recursos e nome do recurso.

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=false' --api-version 2023-09-01-preview

Passo seguinte