Compartilhar via


Solucionar problemas dos Insights de SQL (versão prévia)

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

Importante

O SQL Insights (versão preview) será desativado em 31 de dezembro de 2024. Recomendamos fazer a transição para o observador de banco de dados para SQL do Azure (versão preview) ou outra solução de monitoramento de banco de dados até essa data.

O Observador de banco de dados é a solução de monitoramento recomendada para cenários que exigem baixa latência de coleção de dados, monitoramento no nível de propriedade, dados de monitoramento abrangentes, incluindo detalhes no nível de consulta, e suporte para análise avançada em dados de monitoramento coletados. No momento, o observador de dados é compatível com o Banco de Dados SQL do Azure e a Instância Gerenciada do Azure SQL.

Após 31 de dezembro de 2024, o SQL Insights (versão preview) não receberá mais suporte e não estará disponível no portal do Azure. Você manterá todos os dados de monitoramento existentes coletados pelo SQL Insights em seu workspace do Log Analytics.

Para solucionar problemas de coleta de dados nos Insights de SQL, verifique o status do computador de monitoramento na guia Gerenciar perfil. Os status são:

  • Coletando
  • Não coletando
  • Coletando com erros

Selecione o status para ver os logs e mais detalhes que poderão ajudar a resolver o problema.

Captura de tela que mostra um status da máquina de monitoramento.

Status: Não coletando

O computador de monitoramento terá um status Não coletando se não houver dados em InsightsMetrics para SQL nos últimos dez minutos.

Verifique se você está tentando coletar dados de uma versão com suporte do SQL. Por exemplo, a tentativa de coletar dados com um perfil válido e uma cadeia de conexão, mas de uma versão sem suporte do Banco de Dados SQL do Azure, resultará em um status Não coletando.

O recurso Insights de SQL usa a seguinte consulta para recuperar essas informações:

InsightsMetrics
    | extend Tags = todynamic(Tags) 
    | extend SqlInstance = tostring(Tags.sql_instance) 
    | where TimeGenerated > ago(10m) and isnotempty(SqlInstance) and Namespace == 'sqlserver_server_properties' and Name == 'uptime' 

Verifique se há algum log de Telegraf que ajude a identificar a causa raiz do problema. Se houver entradas de log, você poderá selecionar Não coletando e verificar os logs e as informações de solução de problemas comuns.

Se não houver nenhuma entrada de log, verifique os logs na máquina virtual de monitoramento para os seguintes serviços instalados por duas extensões de máquina virtual:

  • Microsoft.Azure.Monitor.AzureMonitorLinuxAgent
    • Serviço: mdsd
  • Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension
    • Serviço: wli
    • Serviço: telegraf
    • Serviço: fluent-bit
    • Log da extensão para verificar falhas de instalação: /var/log/azure/Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension/wlilogs.log

logs de serviço wli

Logs de serviço: /var/log/wli.log

Para ver logs recentes: tail -n 100 -f /var/log/wli.log

Caso você veja o seguinte log de erros, haverá um problema no serviço mdsd: 2021-01-27T06:09:28Z [Error] Failed to get config data. Error message: dial unix /var/run/mdsd/default_fluent.socket: connect: no such file or directory .

Logs de serviço Telegraf

Logs de serviço: /var/log/telegraf/telegraf.log

Para ver logs recentes: tail -n 100 -f /var/log/ms-telegraf/telegraf.log

Para ver os logs de erros e avisos recentes: tail -n 1000 /var/log/ms-telegraf/telegraf.log | grep "E\!\|W!"

A configuração usada pelo telegraf é gerada pelo serviço wli e colocada em: /etc/ms-telegraf/telegraf.d/wli

Se uma configuração incorreta for gerada, o serviço ms-telegraf poderá falhar ao iniciar. Verifique se o serviço ms-telegraf está em execução usando este comando: service ms-telegraf status

Para ver as mensagens de erro do serviço telegraf, execute-as manualmente usando o seguinte comando:

/usr/bin/ms-telegraf --config /etc/ms-telegraf/telegraf.conf --config-directory /etc/ms-telegraf/telegraf.d/wli --test 

logs de serviço mdsd

Verifique os pré-requisitos do agente do Azure Monitor.

Antes do Agente de Monitoramento do Azure v 1.12, os logs de serviço do MDSD estavam localizados em:

  • /var/log/mdsd.err
  • /var/log/mdsd.warn
  • /var/log/mdsd.info

Da v 1.12 em diante, os logs de serviço estão localizados em:

  • /var/opt/microsoft/azuremonitoragent/log/
  • /etc/opt/microsoft/azuremonitoragent/

Para ver erros recentes: tail -n 100 -f /var/log/mdsd.err

Se for necessário contatar o suporte, colete as informações a seguir:

  • Faz logon /var/log/azure/Microsoft.Azure.Monitor.AzureMonitorLinuxAgent/
  • Logon /var/log/waagent.log
  • Faz logon em /var/log/mdsd* ou em /var/opt/microsoft/azuremonitoragent/log/ e em /etc/opt/microsoft/azuremonitoragent/.
  • Arquivos em /etc/mdsd.d/
  • File /etc/default/mdsd

Configuração inválida de máquina virtual de monitoramento

Uma causa do status Não coletando é uma configuração inválida para a máquina virtual de monitoramento. Esta é a forma mais simples de configuração:

{
    "version": 1,
    "secrets": {
        "telegrafPassword": {
            "keyvault": "https://mykeyvault.vault.azure.net/",
            "name": "sqlPassword"
        }
    },
    "parameters": {
        "sqlAzureConnections": [
            "Server=mysqlserver.database.windows.net;Port=1433;Database=mydatabase;User Id=telegraf;Password=$telegrafPassword;"
        ],
        "sqlVmConnections": [
        ],
        "sqlManagedInstanceConnections": [
        ]
    }
}

Essa configuração especifica os tokens de substituição a serem usados na configuração de perfil na máquina virtual de monitoramento. Ela também permite referenciar segredos do Azure Key Vault, para que não seja preciso manter os valores secretos em nenhuma configuração, o que é altamente recomendável.

Nessa configuração, a cadeia de conexão do banco de dados inclui um token de substituição $telegrafPassword. O SQL Insights substitui esse token pela senha de autenticação do SQL recuperada do Key Vault. O URI do Key Vault é especificado na seção configuração do telegrafPassword em secrets.

Segredos

Os segredos são tokens cujos valores são recuperados no runtime de um Azure Key Vault. Um segredo é definido por um par de valores que inclui o URI do Key Vault e um nome secreto. Essa definição permite que o SQL Insights obtenha o valor do segredo em runtime e use-o na configuração downstream.

Você pode definir quantos segredos forem necessários, incluindo os segredos armazenados em vários cofres de chaves.

   "secrets": {
        "<secret-token-name-1>": {
            "keyvault": "<key-vault-uri>",
            "name": "<key-vault-secret-name>"
        },
        "<secret-token-name-2>": {
            "keyvault": "<key-vault-uri-2>",
            "name": "<key-vault-secret-name-2>"
        }
    }

As permissões para acessar o cofre de chaves são fornecidas a uma identidade gerenciada na máquina virtual de monitoramento. Essa identidade gerenciada deve receber a permissão Get em todos os segredos do Key Vault referenciados na configuração do perfil de monitoramento. Isso pode ser habilitado no portal do Azure, no PowerShell, na CLI do Azure ou em um modelo do Azure Resource Manager.

Parâmetros

Parâmetros são tokens que podem ser referenciados na configuração do perfil por meio de modelos JSON. Parâmetros têm nome e valor. Os valores podem ser qualquer tipo JSON, inclusive objetos e matrizes. Um parâmetro é referenciado na configuração de perfil com o respectivo nome, usando esta convenção: .Parameters.<name>.

Os parâmetros podem referenciar segredos no Key Vault usando a mesma convenção. Por exemplo, sqlAzureConnections faz referência ao segredo telegrafPassword usando a convenção $telegrafPassword.

Em runtime, todos os parâmetros e segredos serão resolvidos e mesclados com a configuração do perfil para construir a configuração real que será usada no computador.

Observação

Os nomes de parâmetro de sqlAzureConnections, sqlVmConnections e sqlManagedInstanceConnections são necessários na configuração, mesmo que você não forneça cadeias de conexão para alguns deles.

Status: Coletando com erros

O computador de monitoramento terá o status Coletando com erros se houver pelo menos um log InsightsMetrics recente, mas também houver erros na tabela Operation.

O SQL Insights usa esta consulta para recuperar essas informações:

InsightsMetrics 
    | extend Tags = todynamic(Tags) 
    | extend SqlInstance = tostring(Tags.sql_instance) 
    | where TimeGenerated > ago(240m) and isnotempty(SqlInstance) and Namespace == 'sqlserver_server_properties' and Name == 'uptime' 
WorkloadDiagnosticLogs
| summarize Errors = countif(Status == 'Error')

Observação

Se você não vir nenhum dado no WorkloadDiagnosticLogs, talvez seja necessário atualizar seu perfil de monitoramento. No SQL Insights no portal do Azure, selecione Gerenciar perfil>Editar perfil>Atualizar perfil de monitoramento.

Para casos comuns, fornecemos dicas de solução de problemas na exibição de logs:

Captura de tela da página Azure Monitor para Solução de problemas de logs de SQL no portal do Azure.

Problemas conhecidos

Durante a versão prévia do SQL Insights, você poderá encontrar os seguintes problemas conhecidos.

  • Erro de 'Falha no logon' ao se conectar ao servidor ou ao banco de dados

    O uso de determinados caracteres especiais em senhas de autenticação do SQL salvas na configuração da VM de monitoramento ou no Key Vault poderá impedir que a VM de monitoramento se conecte a um servidor SQL ou banco de dados. Esse conjunto de caracteres inclui parênteses, colchetes e chaves, sinal de cifrão, barras para frente e para trás e ponto ([ { ( ) } ] $ \ / .).

  • Os espaços nos atributos de cadeia de conexão de banco de dados podem ser substituídos por caracteres especiais, levando a falhas de conexão de banco de dados. Por exemplo, se o espaço no atributo User Id for substituído por um caractere especial, as conexões falharão com o erro Falha no logon do usuário ". Para resolver isso, edite a configuração de perfil de monitoramento e exclua todos os caracteres especiais que aparecem no lugar de um espaço. Alguns caracteres especiais podem parecer indistinguíveis em relação a um espaço e, para resolver isso, exclua todos os caracteres de espaço, digite-os novamente e salve a configuração.

  • A coleta e visualização de dados podem não funcionar se o nome do computador do sistema operacional da VM de monitoramento for diferente do nome da VM de monitoramento.

  • Uma mensagem "A extensão WLI nesta máquina está abaixo da versão recomendada [...]" pode aparecer incorretamente mesmo quando a extensão WLI está atualizada.

  • A coleta e a visualização de dados talvez não funcionem se o nome do computador do sistema operacional da VM onde o SQL Server está instalado não corresponder ao nome do servidor nos metadados do SQL Server. Para obter mais informações, consulte Renomear um computador que hospeda uma instância autônoma do SQL Server.

Práticas recomendadas

  • Assegure o acesso ao Key Vault na VM de monitoramento. Se você usar o Key Vault para armazenar senhas de autenticação do SQL (altamente recomendável), será necessário garantir que a configuração de rede e segurança permita que a VM de monitoramento acesse o 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. Para verificar se a VM de monitoramento consegue acessar o Key Vault, execute os seguintes comandos em uma sessão SSH conectada à VM. Você deve ser capaz de recuperar com êxito o token de acesso e o segredo. Substitua [YOUR-KEY-VAULT-URL], [YOUR-KEY-VAULT-SECRET] e [YOUR-KEY-VAULT-ACCESS-TOKEN] por valores reais.

    # Get an access token for accessing Key Vault secrets
    curl 'http://[YOUR-KEY-VAULT-URL]/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
    
    # Get Key Vault secret
    curl 'https://[YOUR-KEY-VAULT-URL]/secrets/[YOUR-KEY-VAULT-SECRET]?api-version=2016-10-01' -H "Authorization: Bearer [YOUR-KEY-VAULT-ACCESS-TOKEN]"
    
  • Atualize o software na VM de monitoramento. É altamente recomendável atualizar periodicamente o sistema operacional e as extensões na VM de monitoramento. Se uma extensão for compatível com a atualização automática, habilite essa opção.

  • Salve configurações anteriores. Se você quiser fazer alterações no perfil de monitoramento ou na configuração da VM de monitoramento, primeiro é recomendável salvar uma cópia funcional dos dados de configuração. Na página do SQL Insights no portal do Azure, selecione Gerenciar perfil>Editar perfil e copie o texto da Configuração atual do perfil de monitoramento em um arquivo. Da mesma forma, selecione Gerenciar perfil>Configurar para a VM de monitoramento e copie o texto de Configuração atual do perfil de monitoramento em um arquivo. Se ocorrerem erros na coleta de dados após alterações de configuração, você poderá comparar a nova configuração com a configuração funcional conhecida usando uma ferramenta de comparação de texto para ajudá-lo a encontrar as alterações que possam ter afetado a coleta.