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 | Sì | 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. | Sì | Sì |
Informazioni dettagliate | Fornisce il drill-down gerarchico per Intelligent Insights per le prestazioni. | Sì | Sì |
Errors | Fornisce il drill-down gerarchico per gli errori SQL verificatisi nei database. | Sì | Sì |
Timeout | Fornisce il drill-down gerarchico per i timeout SQL verificatisi nei database. | Sì | No |
Blocchi | Fornisce il drill-down gerarchico per i blocchi SQL verificatisi nei database. | Sì | 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. | Sì | 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. | Sì | Sì |
Attese query | Fornisce il drill-down gerarchico per le statistiche di attesa delle query per categoria di attesa. | Sì | Sì |
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:
- Abilitare Diagnostica di Azure per il database per trasmettere i dati di telemetria di diagnostica a Azure SQL Analytics.
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.
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.
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.
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.
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.
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.
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.
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 condtu_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 condtu_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_threshold
time_range
. - L'output è un elenco di risorse del database sopra definite
storage_threshold
time_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
- Usare le query di log in Monitoraggio di Azure per visualizzare i dati dettagliati Azure SQL.
- Creare dashboard personalizzati che mostrino i dati per Azure SQL.
- Creare avvisi quando si verificano eventi specifici relativi ad Azure SQL.
- Monitorare il database SQL di Azure con Monitoraggio di Azure
- Monitorare Istanza gestita di SQL di Azure con Monitoraggio di Azure