Risolvere i problemi relativi a SQL Insights (anteprima)

Si applica a:Database SQL di AzureIstanza 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
  • La raccolta non viene eseguita
  • 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 di un computer di monitoraggio.

Stato: mancata raccolta

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

Nota

Assicurarsi di provare a raccogliere dati da una versione supportata di SQL. Ad esempio, il tentativo di raccogliere dati con un profilo valido e stringa di connessione, ma da una versione non supportata di database SQL di Azure genererà lo stato La raccolta non viene eseguita.

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' 

Controllare se i log della Guida telegraf identificano la causa radice del problema. Se sono presenti voci di log, è possibile selezionare La raccolta non viene eseguita e controllare i log e le informazioni sulla risoluzione dei problemi per 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 di macchina virtuale:

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

log del servizio di wli

Log del servizio: /var/log/wli.log

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

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

Log del servizio Telegraf

Log del servizio: /var/log/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, l'avvio del servizio ms-telegraf potrebbe non riuscire. Controllare 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 dell'agente di monitoraggio di Azure v1.12, i log del servizio mdsd si trovavano in:

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

Dalla versione 1.12 in poi, i log del servizio 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 seguenti informazioni:

  • 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 macchina virtuale di monitoraggio non valida

Una causa dello stato La raccolta non viene eseguita è 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 da Azure Key Vault, quindi non è necessario mantenere i valori segreti in alcuna configurazione (fortemente consigliato).

In questa configurazione, il database stringa di connessione include un token di sostituzione $telegrafPassword. SQL Insights sostituisce questo token con la password di autenticazione SQL recuperata da Key Vault. L'URI dell'insieme di credenziali delle chiavi viene specificato nella sezione telegrafPassword di configurazione all’interno di secrets.

Segreti

I segreti sono token i cui valori vengono recuperati in fase di esecuzione da un Azure Key Vault. 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 tutti i 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. A questa identità gestita deve essere concessa l'autorizzazione Get per tutti i segreti dell’insieme di credenziali delle chiavi a cui viene fatto riferimento nella configurazione del profilo di monitoraggio. È possibile farlo usando il portale di Azure, l'interfaccia della riga di comando di Azure, Azure PowerShell o 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. È possibile convertire qualsiasi tipo di JSON, inclusi gli oggetti e le matrici. Viene fatto riferimento a un parametro nella configurazione del profilo in base al nome, usando questa convenzione: .Parameters.<name>.

I parametri possono fare riferimento ai segreti nell’insieme di credenziali delle chiavi 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, sqlVmConnections e sqlManagedInstanceConnections sono tutti necessari nella configurazione, anche se per alcuni di essi non viene fornita nessuna stringa di connessione.

Stato: raccolta con errori

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

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. In SQL Insights in portale di Azure selezionare Gestisci profilo>Modifica profilo>Aggiorna profilo di monitoraggi.

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

Screenshot della pagina Monitoraggio di Azure per la risoluzione dei problemi relativi ai log SQL nel portale di Azure.

Problemi noti

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

  • Errore di accesso non riuscito durante la connessione al server o al database

    L'uso di determinati caratteri speciali nelle password di autenticazione SQL salvate nella configurazione della VM di monitoraggio o nell’insieme di credenziali delle chiavi può impedire alla VM di monitoraggio di connettersi a un SQL Server o database. Questo set di caratteri include parentesi quadre, parentesi quadre e curvo, segno di dollaro, barra rovesciata e puntino ([ { ( ) } ] $ \ / .).

  • Gli spazi negli attributi della stringa di connessione al 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 e l'errore Accesso non riuscito per l’utente''. Per risolvere il problema, modificare la configurazione del profilo di monitoraggio ed eliminare ogni carattere speciale visualizzato al posto di uno spazio. Alcuni caratteri speciali potrebbero sembrare indistinguibili da uno spazio, pertanto è possibile eliminare ogni carattere di spazio, digitarlo di nuovo e salvare la configurazione.

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

  • Un messaggio "L'estensione WLI in questo computer è al di sotto della versione consigliata [...]" potrebbe non essere visualizzato correttamente anche quando l'estensione WLI è aggiornata.

  • La raccolta e la visualizzazione dei dati potrebbero non funzionare se il nome computer del sistema operativo della macchina virtuale in cui è installato SQL Server non corrisponde al nome del server nei metadati di SQL Server. Per altre informazioni, vedere Rinominare un computer che ospita un'istanza autonoma di SQL Server.

Procedure consigliate

  • Assicurarsi di accedere all’insieme di credenziali delle chiavi dalla VM di monitoraggio. Se si usa un insieme di credenziali delle chiavi per archiviare le password di autenticazione SQL (fortemente consigliato), è necessario assicurarsi che la configurazione di rete e sicurezza consenta alla macchina virtuale di monitoraggio di accedervi. 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 VM di monitoraggio riesca ad accedere all’insieme di credenziali delle chiavi, è possibile eseguire i comandi seguenti da una sessione SSH connessa alla VM. Dovrebbe essere possibile recuperare correttamente il token di accesso e il segreto. Sostituire [YOUR-KEY-VAULT-URL] e [YOUR-KEY-VAULT-SECRET] e [YOUR-KEY-VAULT-ACCESS-TOKEN] con i 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 VM di monitoraggio. È consigliabile aggiornare periodicamente il sistema operativo e le estensioni nella VM di monitoraggio. Se un'estensione supporta l'aggiornamento automatico, abilitarlo.

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

Passaggi successivi