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

Simbolo di Analisi SQL di Azure

Azure SQL Analytics è una soluzione di monitoraggio cloud avanzata per il monitoraggio delle prestazioni di tutti i database di 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'intelligence incorporata per la risoluzione dei problemi relativi alle prestazioni.

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

Per una panoramica pratica sull'uso della soluzione Analisi SQL di Azure e per scenari di uso tipici, vedere il video incorporato:

Origini connesse

Azure SQL Analytics è una soluzione di monitoraggio solo cloud che supporta lo streaming dei dati di telemetria di diagnostica per tutti i database SQL Azure. 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 Monitoraggio di Azure log 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 non vengono usati da Azure SQL Analytics.
Agenti Linux No Gli agenti Linux diretti 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 Analisi SQL Azure

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

Opzione Azure SQL Analytics Descrizione database SQL supporto 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

Usare la procedura descritta in Aggiungere Monitoraggio di Azure soluzioni dal raccolta di soluzioni per aggiungere Azure SQL Analytics (anteprima) all'area di lavoro Log Analytics.

Configurare le database SQL di Azure per lo streaming dei dati di telemetria di diagnostica

Dopo aver creato la soluzione Azure SQL Analytics nell'area di lavoro, è necessario configurare ogni risorsa da monitorare per trasmettere i dati di telemetria di diagnostica ad 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.

Uso di Azure SQL Analytics

Quando si aggiunge Azure SQL Analytics all'area di lavoro, il riquadro Azure SQL Analytics viene aggiunto all'area di lavoro e viene visualizzato in Panoramica. Selezionare il collegamento Visualizza riepilogo per caricare il contenuto del riquadro.

Riquadro di riepilogo di SQL Analytics di Azure

Dopo il caricamento, il riquadro mostra il numero di database e pool elastici in database SQL e le istanze e i database di istanza in SQL Istanza gestita da cui Azure SQL Analytics riceve dati di telemetria diagnostica.

Riquadro Azure SQL Analytics

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

Per visualizzare il dashboard di monitoraggio di Azure SQL Analytics per database SQL, fare clic sulla parte superiore del riquadro. Per visualizzare il dashboard di monitoraggio di SQL Analytics di Azure SQL Istanza gestita, fare clic sulla parte inferiore del riquadro.

Visualizzazione dei dati di Analisi SQL di Azure

Il dashboard include la panoramica di tutti i database monitorati tramite prospettive diverse. Per il corretto funzionamento di prospettive diverse, è necessario abilitare le metriche o i log adeguati nelle 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.

database SQL predefinita

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 drill-down nella prospettiva specifica.

Ogni prospettiva in questa vista 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.

SQL Istanza gestita dati

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 SQL Istanza gestita, vengono visualizzati i dettagli sull'utilizzo dell'istanza, i database dell'istanza e i 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 nel tempo specificato.

Database di Analisi SQL di Azure

Pool elastico SQL di Azure

Report delle query

Tramite le prospettive relative alla durata della query e alle attese 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 Analisi SQL di Azure, agli utenti devono essere concesse almeno le autorizzazioni del ruolo di Lettore in Azure. Questo ruolo non consente però di visualizzare il testo della query o di eseguire una qualsiasi azione di ottimizzazione automatica. I ruoli più permissivi in Azure che consentono l'uso completo di Azure SQL Analytics sono Proprietario, Collaboratore, Collaboratore SQL Database 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.

Creazione di un ruolo personalizzato nel portale

Nota

Questo articolo usa il modulo Azure Az PowerShell, che è il modulo di PowerShell consigliato per l'interazione con Azure. Per iniziare a usare il modulo Az PowerShell, 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.

Alcune organizzazioni applicano controlli severi sulle autorizzazioni in Azure. Lo script di PowerShell seguente consente di creare un ruolo personalizzato "Operatore di monitoraggio Analisi SQL" nel portale di Azure con le autorizzazioni minime di lettura e scrittura per usare Analisi SQL di Azure nella sua completezza.

Sostituire "{SubscriptionId}" nello script seguente con l'ID della sottoscrizione di Azure ed eseguire lo script dopo aver eseguito l'accesso ad Azure con il ruolo di Proprietario o di Collaboratore.

 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.

Gli avvisi automatizzati in Azure SQL Analytics si basano sulla scrittura di una query di Log Analytics che attiva un avviso in caso di condizione soddisfatta. Di seguito sono riportati alcuni esempi di query di Log Analytics su cui è possibile configurare gli avvisi in Azure SQL Analytics.

Creazione di avvisi per il database SQL di Azure

È 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 per la configurazione di questo avviso è che i database monitorati trasfedano le metriche di base ad Azure SQL Analytics.
  • Sostituire il valore cpu_percent di MetricName con dtu_consumption_percent per ottenere risultati di DTU elevati.

Utilizzo elevato della CPU 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 per la configurazione di questo avviso è che i database monitorati trasfedano le metriche di base ad Azure SQL Analytics.
  • Sostituire il valore cpu_percent di MetricName con dtu_consumption_percent per ottenere risultati di DTU elevati.

Archiviazione in media superiore al 95% nelle ultime 1 ora

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 per la configurazione di questo avviso è che i database monitorati trasfedano le metriche di base ad Azure SQL Analytics.
  • Questa query richiede una regola di avviso da impostare in modo da attivare un avviso quando vengono restituiti risultati (> 0 risultati) dalla query, a indicare che la condizione è presente in alcuni database. L'output è un elenco di risorse del database superiore alla soglia di archiviazione all'interno dell'intervallo di tempo definito.
  • L'output è un elenco di risorse del database superiore alla soglia di archiviazione all'interno dell'intervallo di tempo definito.

Avvisi in Intelligent Insights

Importante

Nel caso in cui un database funzioni correttamente e che non sia stato generato alcun Insights intelligente, la 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 per la configurazione di questo avviso è che i database monitorati trasfedano il log di diagnostica di SQLInsights ad Azure SQL Analytics.
  • Questa query richiede una regola di avviso da configurare per l'esecuzione con la stessa frequenza di alert_run_interval, per evitare risultati duplicati. La regola deve essere impostata in modo da attivare l'avviso quando vengono restituiti risultati (> 0 risultati) dalla query.
  • Personalizzare il alert_run_interval per specificare l'intervallo di tempo in cui verificare se la condizione si è verificata nei database configurati per trasmettere il log di SQLInsights ad Azure SQL Analytics.
  • Personalizzare il valore di insights_string per acquisire l'output del testo di analisi della causa radice di Insights. Si tratta dello 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

Creazione di avvisi per SQL Istanza gestita

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 per la configurazione di questo avviso è che per l'istanza gestita monitorata sia abilitato lo streaming del log ResourceUsageStats in Azure SQL Analytics.
  • Questa query richiede la configurazione di una regola di avviso per l'avvio di un avviso quando sono presenti risultati (risultati > 0) dalla query, indicando 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% nelle ultime 1 ora

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 per la configurazione di questo avviso è che per l'istanza gestita monitorata sia abilitato lo streaming del log ResourceUsageStats in Azure SQL Analytics.
  • Questa query richiede la configurazione di una regola di avviso per l'avvio di un avviso quando sono presenti risultati (risultati > 0) dalla query, indicando che la condizione esiste nell'istanza gestita. L'output è il consumo percentuale di utilizzo medio della CPU nel periodo definito nell'istanza gestita.

Prezzi

Anche se Azure SQL Analytics è gratuito da usare, si applica l'utilizzo dei dati di telemetria di diagnostica al di sopra delle unità gratuite di inserimento dati allocate ogni mese, vedere Prezzi di Log Analytics. Le unità gratuite di inserimento dati fornite consentono di monitorare gratuitamente più database ogni mese. I database più attivi con carichi di lavoro più pesanti inseriscono più dati rispetto ai database inattivi. È possibile monitorare facilmente il consumo di inserimento dati in Azure SQL Analytics selezionando Area di lavoro OMS nel menu di spostamento di Azure SQL Analytics e quindi scegliendo Utilizzo e costi stimati.

Passaggi successivi