Monitorare il database di Azure SQL usando Azure SQL Analytics (anteprima)

SI APPLICA A: database Azure SQL, Istanza gestita di SQL di Azure

Attenzione

Azure SQL Analytics (anteprima) è un'integrazione con Monitoraggio di Azure, in cui molte soluzioni di monitoraggio non sono più in fase di sviluppo attivo. Per altre opzioni di monitoraggio, vedere Monitoraggio e ottimizzazione delle prestazioni in Azure SQL Database e Istanza gestita di SQL di Azure.

Azure SQL Analytics (anteprima) è una soluzione di monitoraggio cloud avanzata per il monitoraggio delle prestazioni di tutti i database Azure SQL su larga scala e tra più sottoscrizioni in un'unica visualizzazione. Azure SQL Analytics raccoglie e visualizza le metriche delle prestazioni chiave con l'intelligenza integrata per la risoluzione dei problemi delle prestazioni.

Usando queste metriche raccolte, è possibile creare regole e avvisi di monitoraggio personalizzati. Azure SQL Analytics consente di identificare i problemi a ogni livello dello stack di applicazioni. Azure SQL Analytics usa metriche Diagnostica di Azure insieme alle viste di Monitoraggio di Azure per presentare dati su tutti i database Azure SQL in una singola area di lavoro Log Analytics. Monitoraggio di Azure consente di raccogliere, correlare e visualizzare dati strutturati e non strutturati.

Origini connesse

Azure SQL Analytics è una soluzione di monitoraggio solo cloud che supporta lo streaming di dati di telemetria di diagnostica per tutti i database Azure SQL. Poiché Azure SQL Analytics non usa agenti per connettersi a Monitoraggio di Azure, non supporta il monitoraggio di SQL Server ospitati in locale o in macchine virtuali.

Origine connessa Supportato Descrizione
Impostazioni di diagnostica I dati delle metriche e dei log di Azure vengono inviati ai log di Monitoraggio di Azure direttamente da Azure.
Account di archiviazione di Azure No Monitoraggio di Azure non legge i dati da un account di archiviazione.
Agenti di Windows No Gli agenti Windows diretti non vengono usati da Azure SQL Analytics.
Agenti Linux No Gli agenti Direct Linux non vengono usati da Azure SQL Analytics.
Gruppo di gestione di System Center Operations Manager No Una connessione diretta dall'agente Operations Manager a Monitoraggio di Azure non viene usata da Azure SQL Analytics.

opzioni di Azure SQL Analytics

La tabella seguente illustra le opzioni supportate per due versioni del dashboard di Azure SQL Analytics, una per Azure SQL Database e l'altra per i database Istanza gestita di SQL di Azure.

opzione Azure SQL Analytics Descrizione supporto di database SQL Supporto per Istanza gestita di SQL
Risorsa per tipo Prospettiva che conta tutte le risorse monitorate.
Informazioni dettagliate Fornisce il drill-down gerarchico per Intelligent Insights per le prestazioni.
Errors Fornisce il drill-down gerarchico per gli errori SQL verificatisi nei database.
Timeout Fornisce il drill-down gerarchico per i timeout SQL verificatisi nei database. No
Blocchi Fornisce il drill-down gerarchico per i blocchi SQL verificatisi nei database. No
Attese del database Fornisce il drill-down gerarchico per le statistiche di attesa SQL a livello di database. Include il riepilogo del tempo di attesa totale e del tempo di attesa per tipo di attesa. No
Durata delle query Fornisce il drill-down gerarchico per le statistiche di esecuzione delle query, ad esempio la durata della query, l'utilizzo della CPU, l'utilizzo dei dati di I/O e l'utilizzo dei log di I/O.
Attese query Fornisce il drill-down gerarchico per le statistiche di attesa delle query per categoria di attesa.

Configurazione di Azure SQL Analytics (anteprima)

Usare il processo descritto in Aggiungere soluzioni di Monitoraggio di Azure dalla Raccolta soluzioni per aggiungere Azure SQL Analytics (anteprima) all'area di lavoro Log Analytics.

Configurare Azure SQL Database per trasmettere i dati di telemetria di diagnostica

Dopo aver creato Azure SQL soluzione Analytics nell'area di lavoro, è necessario configurare ogni risorsa da monitorare per trasmettere i dati di telemetria di diagnostica a Azure SQL Analytics. Seguire le istruzioni dettagliate in questa pagina:

La pagina sopra indicata include anche le istruzioni per abilitare il supporto per il monitoraggio di più sottoscrizioni di Azure da una singola area di lavoro di Analisi SQL di Azure come singola finestra.

Usare Azure SQL Analytics (anteprima)

Passare alla distribuzione di Analisi SQL dalla pagina Soluzioni legacy dell'area di lavoro Log Analytics.

Azure SQL Analytics offre due visualizzazioni separate: una per il monitoraggio database SQL e l'altra per il monitoraggio Istanza gestita di SQL.

Visualizzazione dei dati di Analisi SQL di Azure

Il dashboard include la panoramica di tutti i database monitorati tramite prospettive diverse. Per consentire il funzionamento di prospettive diverse, è necessario abilitare le metriche o i log appropriati per le risorse SQL da trasmettere all'area di lavoro Log Analytics.

Se alcune metriche o log non vengono trasmessi in Monitoraggio di Azure, i riquadri in Azure SQL Analytics non vengono popolati con le informazioni di monitoraggio.

visualizzazione database SQL

Una volta selezionato il riquadro di Analisi SQL di Azure per il database, viene visualizzato il dashboard di monitoraggio.

Screenshot che mostra il dashboard di monitoraggio.

La selezione di uno dei riquadri consente di visualizzare un report drill-down nella prospettiva specifica. Dopo che la prospettiva è stata selezionata, viene aperto il report drilldown.

Screenshot che mostra il report di drill-down nella prospettiva specifica.

Ogni prospettiva in questa visualizzazione fornisce riepiloghi a livello di sottoscrizione, server, pool elastico e database. Inoltre ogni prospettiva mostra una prospettiva specifica del report a destra. Selezionando una sottoscrizione, un server, un pool o un database nell'elenco, il drilldown continua.

visualizzazione Istanza gestita di SQL

Una volta selezionato il riquadro di Analisi SQL di Azure per i database, viene visualizzato il dashboard di monitoraggio.

Panoramica di Analisi SQL di Azure

La selezione di uno dei riquadri consente di visualizzare un report drill-down nella prospettiva specifica. Dopo che la prospettiva è stata selezionata, viene aperto il report drilldown.

Selezionando la visualizzazione Istanza gestita di SQL, vengono visualizzati i dettagli sull'utilizzo dell'istanza, sui database dell'istanza e sui dati di telemetria sulle query eseguite nell'istanza gestita.

Timeout di Analisi SQL di Azure

Report di Intelligent Insights

Intelligent Insights per il database SQL di Azure assicura un maggior controllo sulle prestazioni di tutti i database SQL di Azure. È possibile visualizzare e accedere a tutti i dati di Intelligent Insights raccolti tramite la prospettiva di Intelligent Insights.

Informazioni dettagliate di Analisi SQL di Azure

Pool elastici e report di database

Sia i pool elastici che i database hanno report specifici che mostrano tutti i dati raccolti per la risorsa nell'ora specificata.

Database di Analisi SQL di Azure

Pool elastico SQL di Azure

Report delle query

Attraverso la durata della query e le prospettive di attesa delle query, è possibile correlare le prestazioni di qualsiasi query tramite il report di query. Questo report confronta le prestazioni della query in database diversi e semplifica l'individuazione dei database che eseguono la query selezionata in modo ottimale, rispetto ai database lenti.

Query di Analisi SQL di Azure

Autorizzazioni

Per usare Azure SQL Analytics (anteprima), gli utenti devono concedere un'autorizzazione minima del ruolo Lettore in Azure. Questo ruolo non consente però di visualizzare il testo della query o di eseguire una qualsiasi azione di ottimizzazione automatica. Altri ruoli permissivi in Azure che consentono l'uso di analisi Azure SQL al massimo sono Proprietario, Collaboratore, Collaboratore del database SQL o Collaboratore SQL Server. È possibile anche creare nel portale un ruolo personalizzato dotato di autorizzazioni specifiche necessarie solo per usare Analisi SQL di Azure e senza accesso per gestire altre risorse.

Creare un ruolo personalizzato nel portale

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Riconoscere che alcune organizzazioni applicano controlli di autorizzazione rigorosi in Azure, trovare lo script di PowerShell seguente che abilita la creazione di un ruolo personalizzato "Operatore di monitoraggio di ANALISI SQL" in portale di Azure con le autorizzazioni di lettura e scrittura minime necessarie per l'uso di Azure SQL Analytics al suo livello più completo.

Sostituire "{SubscriptionId}" nello script seguente con l'ID sottoscrizione di Azure ed eseguire lo script connesso come proprietario o ruolo collaboratore in Azure.

 Connect-AzAccount
 Select-AzSubscription {SubscriptionId}
 $role = Get-AzRoleDefinition -Name Reader
 $role.Name = "SQL Analytics Monitoring Operator"
 $role.Description = "Lets you monitor database performance with Azure SQL Analytics as a reader. Does not allow change of resources."
 $role.IsCustom = $true
 $role.Actions.Add("Microsoft.SQL/servers/databases/read");
 $role.Actions.Add("Microsoft.SQL/servers/databases/topQueries/queryText/*");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/write");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/write");
 $role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/read");
 $role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/write");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/read");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/write");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/read");
 $role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/write");
 $role.Actions.Add("Microsoft.Resources/deployments/write");
 $role.AssignableScopes = "/subscriptions/{SubscriptionId}"
 New-AzRoleDefinition $role

Dopo aver creato il nuovo ruolo, assegnarlo a ogni utente a cui è necessario concedere autorizzazioni personalizzate per l'utilizzo di Analisi SQL di Azure.

Analizzare i dati e creare avvisi

L'analisi dei dati in Analisi SQL di Azure è basata sul linguaggio di Log Analytics per la creazione di report e di query personalizzati. Per una descrizione dei dati disponibili raccolti dalla risorsa del database per la creazione di query personalizzate, vedere Le metriche e i log disponibili.

L'avviso automatizzato in Azure SQL Analytics si basa sulla scrittura di una query di Log Analytics che attiva un avviso in seguito a una condizione soddisfatta. Di seguito sono riportati diversi esempi di query di Log Analytics su cui è possibile configurare avvisi in Azure SQL Analytics.

Creare avvisi per Azure SQL database

È possibile creare avvisi facilmente con i dati provenienti dalle risorse del database SQL di Azure. Di seguito sono riportate alcune utili query su log che è possibile usare con un avviso log:

CPU elevata

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/DATABASES/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Nota

  • Il requisito preliminare della configurazione di questo avviso è che i database monitorati trasmettere le metriche di base all'area di lavoro Log Analytics usata da Azure SQL Analytics.
  • Sostituire il valore cpu_percent MetricName con dtu_consumption_percent per ottenere risultati DTU elevati.

CPU elevata nei pool elastici

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/ELASTICPOOLS/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Nota

  • Il requisito preliminare della configurazione di questo avviso è che i database monitorati eseguono il flusso delle metriche di base nell'area di lavoro Log Analytics usata da Azure SQL Analytics.
  • Sostituire il valore cpu_percent MetricName con dtu_consumption_percent per ottenere risultati DTU elevati.

Archiviazione in media superiore al 95% negli ultimi 1 ore

let time_range = 1h;
let storage_threshold = 95;
AzureMetrics
| where ResourceId contains "/DATABASES/"
| where MetricName == "storage_percent"
| summarize max_storage = max(Average) by ResourceId, bin(TimeGenerated, time_range)
| where max_storage > storage_threshold
| distinct ResourceId

Nota

  • Il requisito preliminare della configurazione di questo avviso è che i database monitorati trasmettere le metriche di base all'area di lavoro Log Analytics usata da Azure SQL Analytics.
  • Questa query richiede che venga configurata una regola di avviso per attivare un avviso quando esistono risultati (> 0 risultati) dalla query, denotando che la condizione esiste in alcuni database. L'output è un elenco di risorse del database sopra definite storage_thresholdtime_range .
  • L'output è un elenco di risorse del database sopra definite storage_thresholdtime_range .

Avvisi in Intelligent Insights

Importante

Nel caso in cui un database funzioni correttamente e che non siano state generate informazioni dettagliate intelligenti, questa query avrà esito negativo con un messaggio di errore: Impossibile risolvere l'espressione scalare denominata rootCauseAnalysis_s. Questo comportamento è previsto per tutti i casi in cui non esistono informazioni dettagliate intelligenti per il database.

let alert_run_interval = 1h;
let insights_string = "hitting its CPU limits";
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| where TimeGenerated > ago(alert_run_interval)
| where rootCauseAnalysis_s contains insights_string
| distinct ResourceId

Nota

  • Il requisito preliminare della configurazione di questo avviso è che i database monitorati inseguono il log di diagnostica SQLInsights nell'area di lavoro Log Analytics usata da Azure SQL Analytics.
  • Questa query richiede che venga configurata una regola di avviso per l'esecuzione con la stessa frequenza di alert_run_interval per evitare risultati duplicati. La regola deve essere configurata per attivare l'avviso quando esistono risultati (> 0 risultati) dalla query.
  • Personalizzare l'oggetto alert_run_interval per specificare l'intervallo di tempo per verificare se la condizione si è verificata nei database configurati per trasmettere il log SQLInsights a Azure SQL Analytics.
  • Personalizzare il valore di insights_string per acquisire l'output del testo di analisi della causa radice di Insights. Questo è lo stesso testo visualizzato nell'interfaccia utente di Azure SQL Analytics che è possibile usare dalle informazioni dettagliate esistenti. In alternativa, è possibile usare la query seguente per visualizzare il testo di tutte le istanze di Insights generate nella sottoscrizione. Usare l'output della query per raccogliere le varie stringhe per configurare gli avvisi in Insights.
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s

Creare avvisi per Istanza gestita di SQL

L'archiviazione è superiore al 90%

let storage_percentage_threshold = 90;
AzureDiagnostics
| where Category =="ResourceUsageStats"
| summarize (TimeGenerated, calculated_storage_percentage) = arg_max(TimeGenerated, todouble(storage_space_used_mb_s) *100 / todouble (reserved_storage_mb_s))
   by ResourceId
| where calculated_storage_percentage > storage_percentage_threshold

Nota

  • Il requisito preliminare della configurazione di questo avviso è che l'istanza gestita monitorata ha lo streaming del log ResourceUsageStats abilitato all'area di lavoro Log Analytics usata da Azure SQL Analytics.
  • Questa query richiede che venga configurata una regola di avviso per attivare un avviso quando esistono risultati (> 0 risultati) dalla query, denotando che la condizione esiste nell'istanza gestita. L'output è il consumo percentuale di archiviazione nell'istanza gestita.

Il consumo medio della CPU è superiore al 95% negli ultimi 1 ore

let cpu_percentage_threshold = 95;
let time_threshold = ago(1h);
AzureDiagnostics
| where Category == "ResourceUsageStats" and TimeGenerated > time_threshold
| summarize avg_cpu = max(todouble(avg_cpu_percent_s)) by ResourceId
| where avg_cpu > cpu_percentage_threshold

Nota

  • Il requisito preliminare della configurazione di questo avviso è che l'istanza gestita monitorata ha lo streaming del log ResourceUsageStats abilitato all'area di lavoro Log Analytics usata da Azure SQL Analytics.
  • Questa query richiede che venga configurata una regola di avviso per attivare un avviso quando esistono risultati (> 0 risultati) dalla query, denotando che la condizione esiste nell'istanza gestita. L'output è la percentuale di utilizzo medio della CPU in un periodo definito nell'istanza gestita.

Prezzi

Sebbene Azure SQL Analytics (anteprima) sia gratuito, l'utilizzo dei dati di telemetria di diagnostica sopra le unità gratuite di inserimento dei dati allocati ogni mese, vedere Prezzi di Log Analytics. Le unità gratuite di inserimento dati fornite consentono di monitorare gratuitamente più database ogni mese. Più database attivi con carichi di lavoro più pesanti inseriscono più dati rispetto ai database inattive. È possibile monitorare facilmente l'utilizzo dei dati in Azure SQL Analytics selezionando Area di lavoro OMS nel menu di spostamento di Azure SQL Analytics e quindi selezionando Utilizzo e costi stimati.

Passaggi successivi