Risolvere i problemi relativi a SQL Insights (anteprima)

Si applica a: Database SQL di Azure Istanza gestita di SQL di Azure

Per risolvere i problemi di raccolta dati in SQL Insights (anteprima), controllare lo stato del computer di monitoraggio nella scheda Gestisci profilo . Gli stati sono:

  • Raccolta
  • Non raccoglie
  • Raccolta con errori

Selezionare lo stato per visualizzare i log e altri dettagli che potrebbero aiutare a risolvere il problema.

Screenshot che mostra lo stato del computer di monitoraggio.

Stato: Non raccolta

Il computer di monitoraggio ha uno stato di non raccolta se non sono presenti dati in InsightsMetrics per SQL negli ultimi 10 minuti.

Nota

Assicurarsi di provare a raccogliere dati da una versione supportata di SQL. Ad esempio, il tentativo di raccogliere dati con un profilo e una stringa di connessione validi, ma da una versione non supportata di Azure SQL Database genererà uno stato di raccolta non valido.

SQL Insights (anteprima) usa la query seguente per recuperare queste informazioni:

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' 

Verificare se tutti i log della Guida telegraf identificano la causa radice del problema. Se sono presenti voci di log, è possibile selezionare Non raccogliere e controllare i log e risolvere i problemi comuni.

Se non sono presenti voci di log, controllare i log nella macchina virtuale di monitoraggio per i servizi seguenti installati da due estensioni della macchina virtuale:

  • Microsoft.Azure.Monitor.AzureMonitorLinuxAgent
    • Servizio: mdsd
  • Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension
    • Servizio: wli
    • Servizio: ms-telegraf
    • Servizio: td-agent-bit-wli
    • Log dell'estensione per verificare gli errori di installazione: /var/log/azure/Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension/wlilogs.log

log del servizio wli

Log dei servizi: /var/log/wli.log

Per visualizzare i log recenti: tail -n 100 -f /var/log/wli.log

Se viene visualizzato il log degli errori seguente, si verifica un problema con il mdsd servizio: 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 .

Log del servizio Telegraf

Log dei servizi: /var/log/ms-telegraf/telegraf.log

Per visualizzare i log recenti: tail -n 100 -f /var/log/ms-telegraf/telegraf.log

Per visualizzare i log degli errori e degli avvisi recenti: tail -n 1000 /var/log/ms-telegraf/telegraf.log | grep "E\!\|W!"

La configurazione usata da telegraf viene generata dal servizio wli e inserita in: /etc/ms-telegraf/telegraf.d/wli

Se viene generata una configurazione non valida, il servizio ms-telegraf potrebbe non riuscire. Verificare se il servizio ms-telegraf è in esecuzione usando questo comando: service ms-telegraf status

Per visualizzare i messaggi di errore dal servizio telegraf, eseguirlo manualmente usando il comando seguente:

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

Log del servizio mdsd

Controllare i prerequisiti per l'agente di Monitoraggio di Azure.

Prima di Azure Monitoring Agent v1.12, i log del servizio mdsd si trovano in:

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

Da v1.12 in poi, i log dei servizi si trovano in:

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

Per visualizzare gli errori recenti: tail -n 100 -f /var/log/mdsd.err

Se è necessario contattare il supporto tecnico, raccogliere le informazioni seguenti:

  • Log in /var/log/azure/Microsoft.Azure.Monitor.AzureMonitorLinuxAgent/
  • Registrare in /var/log/waagent.log
  • Log in /var/log/mdsd*o log in /var/opt/microsoft/azuremonitoragent/log/ e /etc/opt/microsoft/azuremonitoragent/.
  • File in /etc/mdsd.d/
  • File /etc/default/mdsd

Configurazione della macchina virtuale di monitoraggio non valida

Una causa dello stato Di raccolta non è una configurazione non valida per la macchina virtuale di monitoraggio. Ecco la forma più semplice di configurazione:

{
    "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": [
        ]
    }
}

Questa configurazione specifica i token di sostituzione da usare nella configurazione del profilo nella macchina virtuale di monitoraggio. Consente anche di fare riferimento ai segreti di Azure Key Vault, quindi non è necessario mantenere i valori segreti in alcuna configurazione (che è consigliabile).

In questa configurazione la stringa di connessione del database include un $telegrafPassword token sostitutivo. SQL Insights sostituisce questo token con la password di autenticazione SQL recuperata da Key Vault. L'URI di Key Vault viene specificato nella sezione di configurazione in telegrafPasswordsecrets.

Segreti

I segreti sono token i cui valori vengono recuperati in fase di esecuzione da un insieme di credenziali delle chiavi di Azure. Un segreto è definito da una coppia di valori che include l'URI dell'insieme di credenziali delle chiavi e un nome segreto. Questa definizione consente a SQL Insights di ottenere il valore del segreto in fase di esecuzione e usarlo nella configurazione downstream.

È possibile definire il numero di segreti necessari, inclusi i segreti archiviati in più insiemi di credenziali delle chiavi.

   "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>"
        }
    }

L'autorizzazione per accedere all'insieme di credenziali delle chiavi viene fornita a un'identità gestita nella macchina virtuale di monitoraggio. Questa identità gestita deve essere concessa all'autorizzazione Get per tutti i segreti di Key Vault a cui si fa riferimento nella configurazione del profilo di monitoraggio. Questa operazione può essere eseguita dalla portale di Azure, PowerShell, dall'interfaccia della riga di comando di Azure o da un modello di Azure Resource Manager.

Parametri

I parametri sono token a cui è possibile fare riferimento nella configurazione del profilo tramite modelli JSON. I parametri hanno un nome e un valore. I valori possono essere qualsiasi tipo JSON, inclusi oggetti e matrici. Un parametro viene fatto riferimento nella configurazione del profilo in base al nome usando questa convenzione: .Parameters.<name>.

I parametri possono fare riferimento ai segreti in Key Vault usando la stessa convenzione. Ad esempio, sqlAzureConnections fa riferimento al segreto telegrafPassword usando la convenzione $telegrafPassword.

In fase di esecuzione, tutti i parametri e i segreti verranno risolti e uniti alla configurazione del profilo per costruire la configurazione effettiva da usare nel computer.

Nota

I nomi dei parametri di sqlAzureConnections, sqlVmConnectionse sqlManagedInstanceConnections sono tutti necessari nella configurazione, anche se non vengono fornite stringhe di connessione per alcuni di essi.

Stato: Raccolta con errori

Il computer di monitoraggio avrà lo stato Raccolta con errori se è presente almeno un log InsightsMetrics recente, ma sono presenti anche errori nella Operation tabella.

SQL Insights usa le query seguenti per recuperare queste informazioni:

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')

Nota

Se non vengono visualizzati dati in WorkloadDiagnosticLogs, potrebbe essere necessario aggiornare il profilo di monitoraggio. Dall'interno di SQL Insights in portale di Azure selezionare Gestisci profiloModifica profilo>>Profilo Monitoraggio aggiornamenti profilo.

Per i casi comuni, vengono forniti suggerimenti per la risoluzione dei problemi nella visualizzazione log:

Screenshot della pagina Monitoraggio di Azure per risolvere i problemi dei log SQL nella portale di Azure.

Problemi noti

Durante l'anteprima di SQL Insights, è possibile che si verifichino i problemi noti seguenti.

  • Errore "Accesso non riuscito" che si connette al server o al database

    L'uso di determinati caratteri speciali nelle password di autenticazione SQL salvate nella configurazione della macchina virtuale di monitoraggio o in Key Vault può impedire alla macchina virtuale di monitoraggio di connettersi a un server SQL o a un database. Questo set di caratteri include parentesi quadre, quadre e parentesi graffe, segno di dollaro, barra rovesciata e punto ([ { ( ) } ] $ \ / .).

  • Gli spazi negli attributi della stringa di connessione del database possono essere sostituiti con caratteri speciali, causando errori di connessione al database. Ad esempio, se lo spazio nell'attributo User Id viene sostituito con un carattere speciale, le connessioni avranno esito negativo con l'errore Login non riuscito per l'utente ''. Per risolvere, modificare la configurazione del profilo di monitoraggio ed eliminare ogni carattere speciale visualizzato al posto di uno spazio. Alcuni caratteri speciali possono sembrare indistinguishable da uno spazio, pertanto è possibile eliminare ogni carattere di spazio, digitarlo di nuovo e salvare la configurazione.

  • La raccolta dati e la visualizzazione potrebbero non funzionare se il nome del computer del sistema operativo della macchina virtuale di monitoraggio è diverso dal nome della macchina virtuale di monitoraggio.

Procedure consigliate

  • Assicurarsi di accedere alle Key Vault dalla macchina virtuale di monitoraggio. Se si usa Key Vault per archiviare le password di autenticazione SQL (fortemente consigliate), è necessario assicurarsi che la configurazione di rete e sicurezza consenta alla macchina virtuale di monitoraggio di accedere a Key Vault. Per altre informazioni, vedere Accedere ad Azure Key Vault dietro un firewall e configurare le impostazioni di rete di Azure Key Vault. Per verificare che la macchina virtuale di monitoraggio possa accedere Key Vault, è possibile eseguire i comandi seguenti da una sessione SSH connessa alla macchina virtuale. È consigliabile recuperare correttamente il token di accesso e il segreto. Sostituire [YOUR-KEY-VAULT-URL], [YOUR-KEY-VAULT-SECRET]e [YOUR-KEY-VAULT-ACCESS-TOKEN] con valori effettivi.

    # 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]"
    
  • Aggiornare il software nella macchina virtuale di monitoraggio. È consigliabile aggiornare periodicamente il sistema operativo e le estensioni nella macchina virtuale di monitoraggio. Se un'estensione supporta l'aggiornamento automatico, abilitare questa opzione.

  • Salvare le configurazioni precedenti. Se si desidera apportare modifiche al profilo di monitoraggio o al monitoraggio della configurazione della macchina virtuale, è consigliabile salvare prima una copia funzionante dei dati di configurazione. Nella pagina sql Insights in portale di Azure selezionare Gestisci profilo>di modifica profilo e copiare il testo da Configurazione profilo di monitoraggio corrente in un file. Analogamente, selezionare Gestisci profilo>Configura per la macchina virtuale di monitoraggio e copiare il testo dalla configurazione di monitoraggio corrente in un file. Se si verificano errori di raccolta dati dopo le modifiche alla configurazione, è possibile confrontare la nuova configurazione alla configurazione di lavoro nota usando uno strumento diff di testo per individuare eventuali modifiche che potrebbero avere effetto sulla raccolta.

Passaggi successivi