Metriche del database SQL di Azure e registrazione diagnostica

Il database SQL di Azure può generare metriche e log di diagnostica per facilitare il monitoraggio. È possibile configurare il database SQL di Azure per archiviare l'utilizzo delle risorse, i ruoli di lavoro e sessioni e la connettività in una delle risorse di Azure seguenti:

  • Archiviazione di Azure: per l'archiviazione di enormi quantità di dati di telemetria a un costo conveniente
  • Hub eventi di Azure: per l'integrazione dei dati di telemetria del database SQL di Azure con soluzioni di monitoraggio personalizzate o pipeline attive
  • Log Analytics di Azure: per usare una soluzione di monitoraggio già pronta con funzionalità di reporting, avviso e mitigazione

    architettura

Abilitazione della registrazione

Le metriche e la registrazione diagnostica non sono abilitate per impostazione predefinita. È possibile abilitare e gestire le metriche e la gestione diagnostica usando uno dei metodi seguenti:

  • Portale di Azure
  • PowerShell
  • Interfaccia della riga di comando di Azure
  • API REST
  • Modello di Resource Manager

Quando si abilitano le metriche e la registrazione diagnostica, è necessario specificare la risorsa di Azure in cui vengono raccolti i dati selezionati. Opzioni disponibili:

  • Log Analytics
  • Hub eventi
  • Archiviazione di Azure

È possibile eseguire il provisioning di una nuova risorsa di Azure o selezionare una risorsa esistente. Dopo aver selezionato la risorsa di archiviazione, è necessario specificare quali dati raccogliere. Le opzioni disponibili includono:

  • Metriche 1 minuto: contiene percentuale DTU, limite DTU, percentuale CPU, percentuale lettura dati fisici, percentuale scrittura log, riuscito/non riuscito/bloccato dalle connessioni firewall, percentuale sessioni, percentuale ruoli di lavoro, risorsa di archiviazione, percentuale di archiviazione, percentuale di archiviazione XTP
  • QueryStoreRuntimeStatistics - contiene le informazioni sulle statistiche di runtime delle query, ad esempio l'utilizzo della CPU, durata delle query e così via.
  • QueryStoreWaitStatistics -contiene le informazioni sulle statistiche di attesa delle query che indicano cosa hanno atteso le query, ad esempio la CPU, il LOG, il BLOCCO...
  • Errors - contiene le informazioni sugli errori SQL che si sono verificati in questo database.
  • DatabaseWaitStatistics - contiene le informazioni su quanto tempo un database ha atteso nei diversi tipi di attesa.
  • Timeouts - contiene le informazioni su quanto tempo un database ha atteso nei diversi tipi di attesa.
  • Blockings - contiene le informazioni su eventi di blocco verificatisi in un database.
  • SQLInsights - contiene Intelligent Insights. Altre informazioni su Intelligent Insights

Se si specifica l'hub eventi o un account di archiviazione di Azure, è possibile indicare un criterio di conservazione per specificare che vengano eliminati i dati che superano un periodo di tempo selezionato. Se si specifica Log Analytics, i criteri di conservazione dipendono dal piano tariffario selezionato. Per altre informazioni, vedere Prezzi di Log Analytics.

È consigliabile leggere fino in fondo gli articoli Panoramica delle metriche in Microsoft Azure e Panoramica dei log di diagnostica di Azure per comprendere non solo come abilitare la registrazione, ma anche le metriche e le categorie di log supportate dai vari servizi di Azure.

Portale di Azure

Per abilitare le metriche e la raccolta di log di diagnostica nel portale di Azure, passare alla pagina del pool elastico o del database SQL di Azure e fare clic su Impostazioni di diagnostica.

Abilitazione nel portale di Azure

Creare delle nuove impostazioni o modificare le impostazioni di diagnostica esistenti selezionando la destinazione e la telemetria.

Configurate le impostazioni di diagnostica

PowerShell

Per abilitare le metriche e la registrazione diagnostica tramite PowerShell, usare i comandi seguenti:

  • Per abilitare la memorizzazione dei log di diagnostica in un account di archiviazione, usare questo comando:

    Set-AzureRmDiagnosticSetting -ResourceId [your resource id] -StorageAccountId [your storage account id] -Enabled $true
    

    L'ID account di archiviazione è l'ID risorsa per l'account di archiviazione a cui devono essere inviati i log.

  • Per abilitare la trasmissione dei log di diagnostica a un hub eventi, usare questo comando:

    Set-AzureRmDiagnosticSetting -ResourceId [your resource id] -ServiceBusRuleId [your service bus rule id] -Enabled $true
    

    L'ID regola del bus di servizio è una stringa nel formato seguente:

    {service bus resource ID}/authorizationrules/{key name}
    
  • Per consentire l'invio dei log di diagnostica all'area di lavoro di Log Analytics , usare questo comando:

    Set-AzureRmDiagnosticSetting -ResourceId [your resource id] -WorkspaceId [resource id of the log analytics workspace] -Enabled $true
    
  • È possibile ottenere l'ID risorsa dell'area di lavoro di Log Analytics usando il comando seguente:

    (Get-AzureRmOperationalInsightsWorkspace).ResourceId
    

È possibile combinare questi parametri per abilitare più opzioni di output.

Interfaccia della riga di comando di Azure

Per abilitare le metriche e la registrazione diagnostica tramite l'interfaccia della riga di comando di Azure, usare i comandi seguenti:

  • Per abilitare la memorizzazione dei log di diagnostica in un account di archiviazione, usare questo comando:

    azure insights diagnostic set --resourceId <resourceId> --storageId <storageAccountId> --enabled true
    

    L'ID account di archiviazione è l'ID risorsa per l'account di archiviazione a cui devono essere inviati i log.

  • Per abilitare la trasmissione dei log di diagnostica a un hub eventi, usare questo comando:

    azure insights diagnostic set --resourceId <resourceId> --serviceBusRuleId <serviceBusRuleId> --enabled true
    

    L'ID regola del bus di servizio è una stringa nel formato seguente:

    {service bus resource ID}/authorizationrules/{key name}
    
  • Per consentire l'invio dei log di diagnostica all'area di lavoro di Log Analytics , usare questo comando:

    azure insights diagnostic set --resourceId <resourceId> --workspaceId <resource id of the log analytics workspace> --enabled true
    

È possibile combinare questi parametri per abilitare più opzioni di output.

API REST

Informazioni su come modificare le impostazioni di diagnostica usando l'API REST di Monitoraggio di Azure.

Modello di Resource Manager

Informazioni su come abilitare automaticamente le impostazioni di diagnostica durante la creazione di risorse con un modello di Resource Manager.

Eseguire lo streaming in Log Analytics

Le metriche del database SQL Azure e i log di diagnostica possono essere trasmessi in Log Analytics usando l'opzione "Invia a Log Analytics" presente nel portale oppure abilitando Log Analytics in un'impostazione di diagnostica tramite cmdlet di PowerShell di Azure, l'interfaccia della riga di comando di Azure o l'API REST di Monitoraggio di Azure.

Panoramica dell'installazione

Monitorare la flotta del database SQL di Azure è semplice con Log Analytics. Sono necessari tre passaggi:

  1. Creare la risorsa Log Analytics
  2. Configurare i database per registrare le metriche e i log di diagnostica nella risorsa Log Analytics creata
  3. Installare la soluzione Analisi SQL di Azure dalla raccolta in Log Analytics

Creare la risorsa Log Analytics

  1. Fare clic su Nuovo nel menu a sinistra.
  2. Fare clic su Monitoraggio e gestione
  3. Fare clic su Log Analytics
  4. Compilare il modulo Log Analytics con le informazioni aggiuntive necessarie: nome dell'area di lavoro, sottoscrizione, gruppo di risorse, posizione e livello di prezzo.

    log analytics

Configurare i database per registrare le metriche e i log di diagnostica

Il modo più semplice per configurare la posizione in cui i database registrano le metriche è tramite il portale di Azure. Nel portale di Azure passare alla risorsa database SQL di Azure e fare clic su Impostazioni di diagnostica.

  1. Quando la risorsa Log Analytics è stata creata e i dati vengono trasmessi a essa, installare una soluzione Analisi SQL di Azure. Questa operazione può essere eseguita tramite la raccolta soluzioni disponibile nella home page di OMS e nel menu laterale. Nella raccolta, trovare e fare clic sulla soluzione Analisi SQL di Azure e fare clic su Aggiungi.

    soluzione di monitoraggio

  2. Nella home page di OMS viene visualizzato un nuovo riquadro chiamato Analisi SQL di Azure. Se si seleziona questo riquadro viene aperto il dashboard di Analisi SQL di Azure.

Uso della soluzione Analisi SQL di Azure

Analisi SQL di Azure è un dashboard gerarchico che consente di spostarsi nella gerarchia di risorse del database SQL di Azure. Fare clic qui per informazioni su come usare la soluzione Analisi SQL di Azure.

Eseguire lo streaming nell'hub eventi di Azure

Le metriche del database SQL Azure e i log di diagnostica possono essere trasmessi nell'hub eventi usando l'opzione "Stream to an event hub" (Esegui streaming in un Hub eventi) presente nel portale oppure abilitando l'ID regola del bus di servizio in un'impostazione di diagnostica tramite cmdlet di PowerShell di Azure, l'interfaccia della riga di comando di Azure o l'API REST di Monitoraggio di Azure.

Cosa fare con le metriche e i log di diagnostica nell'hub eventi?

Una volta eseguito lo streaming dei dati selezionati nell'hub eventi, si è un passo più vicini all'abilitazione di scenari di monitoraggio avanzati. Hub eventi funge da "porta principale" per una pipeline di eventi. Dopo aver raccolto i dati in un hub eventi, è possibile trasformarli e archiviarli tramite qualsiasi provider di analisi in tempo reale o adattatore di invio in batch/archiviazione. Gli hub di eventi separano la produzione di un flusso di eventi dal consumo di questi eventi, in modo che i consumer di eventi può accedere agli eventi in base a una pianificazione. Per altre informazioni sull'hub eventi, vedere:

Ecco alcuni esempi di come è possibile usare la funzionalità di trasmissione:

  • Visualizzare lo stato di integrità del servizio mediante la trasmissione di dati sul "percorso critico" a Power BI: hub eventi, analisi di flusso e Power BI permettono di trasformare facilmente i dati di metriche e diagnostica in informazioni quasi in tempo reale sui servizi di Azure. Per una panoramica della configurazione dell'hub eventi, dell'elaborazione dei dati con analisi di flusso e dell'uso di Power BI come output, vedere Analisi di flusso e Power BI.
  • Eseguire lo streaming dei log in stream di registrazione e telemetria di terze parti: usando lo streaming degli hub eventi è possibile trasmettere le metriche e i log di diagnostica a diverse soluzioni di monitoraggio e analisi di log di terze parti.
  • Compilare una piattaforma di registrazione e telemetria personalizzata: se è disponibile una piattaforma di telemetria personalizzata o si intende crearne una, le caratteristiche di pubblicazione-sottoscrizione altamente scalabili dell'hub eventi offrono grande flessibilità per l'inserimento dei log di diagnostica. Vedere la guida all'uso dell'hub eventi in una piattaforma di telemetria su scala globale di Dan Rosanova.

Eseguire lo streaming in Archiviazione di Azure

Le metriche del database SQL Azure e i log di diagnostica possono essere archiviati in Archiviazione di Azure usando l'opzione "Archive to a storage account" (Archivia in un account di archiviazione) presente nel portale di Azure oppure abilitando Archiviazione di Azure in un'impostazione di diagnostica tramite cmdlet di PowerShell di Azure, l'interfaccia della riga di comando di Azure o l'API REST di Monitoraggio di Azure.

Schema delle metriche e dei log di diagnostica nell'account di archiviazione

Dopo aver configurato la raccolta delle metriche e dei log di diagnostica, viene creato un contenitore di archiviazione nell'account di archiviazione selezionato quando sono disponibili le prime righe di dati. La struttura di questi BLOB è:

insights-{metrics|logs}-{category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/ RESOURCEGROUPS/{resource group name}/PROVIDERS/Microsoft.SQL/servers/{resource_server}/ databases/{database_name}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

O, più semplicemente:

insights-{metrics|logs}-{category name}/resourceId=/{resource Id}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

Ad esempio, un nome del BLOB per la metrica 1 minuto potrebbe essere:

insights-metrics-minute/resourceId=/SUBSCRIPTIONS/s1id1234-5679-0123-4567-890123456789/RESOURCEGROUPS/TESTRESOURCEGROUP/PROVIDERS/MICROSOFT.SQL/ servers/Server1/databases/database1/y=2016/m=08/d=22/h=18/m=00/PT1H.json

Se si vuole registrare i dati dal pool elastico, il nome del BLOB è leggermente diverso:

insights-{metrics|logs}-{category name}/resourceId=/SUBSCRIPTIONS/{subscription ID}/ RESOURCEGROUPS/{resource group name}/PROVIDERS/Microsoft.SQL/servers/{resource_server}/ elasticPools/{elastic_pool_name}/y={four-digit numeric year}/m={two-digit numeric month}/d={two-digit numeric day}/h={two-digit 24-hour clock hour}/m=00/PT1H.json

Scaricare le metriche e i log da Archiviazione di Azure

Vedere Scaricare le metriche e i log di diagnostica da Archiviazione di Azure

Le metriche e i log disponibili

metriche 1 minuto

Risorsa Metriche
Database Percentuale DTU, DTU utilizzata, limite DTU, percentuale CPU, percentuale lettura dati fisici, percentuale scrittura log, riuscito/non riuscito/bloccato dalle connessioni firewall, percentuale sessioni, percentuale ruoli di lavoro, risorsa di archiviazione, percentuale di archiviazione, percentuale di archiviazione XTP, deadlock
Pool elastico Percentuale eDTU, eDTU utilizzata, limite eDTU, percentuale CPU, percentuale lettura dati fisici, percentuale scrittura log, percentuale sessioni, percentuale ruoli di lavoro, risorsa di archiviazione, percentuale di archiviazione, limite di archiviazione, percentuale di archiviazione XTP

Statistiche di runtime di Query Store

Proprietà Descrizione
TenantId L'ID del tenant.
SourceSystem Always: Azure
TimeGenerated [UTC] Timestamp di quando è stato registrato il log.
Tipo Always: AzureDiagnostics
ResourceProvider Nome del provider di risorse. Always: MICROSOFT.SQL
Categoria Nome della categoria. Always: QueryStoreRuntimeStatistics
OperationName Nome dell'operazione. Always: QueryStoreRuntimeStatisticsEvent
Risorsa Nome della risorsa
ResourceType Nome del tipo di risorsa. Always: SERVERS/DATABASES
SubscriptionId GUID della sottoscrizione a cui appartiene il database.
ResourceGroup Nome del gruppo di risorse al quale appartiene il database.
LogicalServerName_s Nome del server al quale appartiene il database.
ElasticPoolName_s Nome del pool di database elastico al quale appartiene il database, se esistente.
DatabaseName_s Nome del database
ResourceId URI della risorsa
query_hash_s Hash di query
query_plan_hash_s Hash del piano di query
statement_sql_handle_s Punto di controllo dell'istruzione SQL
interval_start_time_d Datetimeoffset iniziale dell'intervallo in numero di tick da 1900-1-1.
interval_end_time_d Datetimeoffset finale dell'intervallo in numero di tick da 1900-1-1.
logical_io_writes_d Numero totale di scritture di I/O logiche.
max_logical_io_writes_d Numero massimo di scritture di I/O logiche per esecuzione.
physical_io_reads_d Numero totale di letture di I/O fisiche.
max_physical_io_reads_d Numero massimo letture di I/O logiche per esecuzione.
logical_io_reads_d Numero totale di letture di I/O logiche.
max_logical_io_reads_d Numero massimo letture di I/O logiche per esecuzione.
execution_type_d Tipo di esecuzione
count_executions_d Numero di esecuzioni della query.
cpu_time_d Tempo totale della CPU usato dalla query in microsecondi.
max_cpu_time_d Consumer massimo del tempo di CPU di una singola esecuzione in microsecondi.
dop_d Somma dei gradi di parallelismo.
max_dop_d Massimo grado parallelismo usato per una singola esecuzione.
rowcount_d Numero di righe totali restituite.
max_rowcount_d Numero massimo di righe restituite in una singola esecuzione.
query_max_used_memory_d Quantità totale di memoria usata in KB.
max_query_max_used_memory_d Quantità massima di memoria usata da una singola esecuzione in KB.
duration_d Tempo di esecuzione totale in microsecondi.
max_duration_d Tempo massimo di esecuzione di una singola esecuzione.
num_physical_io_reads_d Numero totale di letture fisiche.
max_num_physical_io_reads_d Numero massimo di scritture fisiche per esecuzione.
log_bytes_used_d Quantità totale di byte di log usati.
max_log_bytes_used_d Quantità massima di byte di log usati per esecuzione.
query_id_d ID della query in Query Store
plan_id_d ID del piano in Query Store

Ulteriori informazioni sui dati delle statistiche di runtime di Query Store.

Statistiche relative alle attese di Query Store

Proprietà Descrizione
TenantId L'ID del tenant.
SourceSystem Always: Azure
TimeGenerated [UTC] Timestamp di quando è stato registrato il log.
Tipo Always: AzureDiagnostics
ResourceProvider Nome del provider di risorse. Always: MICROSOFT.SQL
Categoria Nome della categoria. Always: QueryStoreRuntimeStatistics
OperationName Nome dell'operazione. Always: QueryStoreRuntimeStatisticsEvent
Risorsa Nome della risorsa
ResourceType Nome del tipo di risorsa. Always: SERVERS/DATABASES
SubscriptionId GUID della sottoscrizione a cui appartiene il database.
ResourceGroup Nome del gruppo di risorse al quale appartiene il database.
LogicalServerName_s Nome del server al quale appartiene il database.
ElasticPoolName_s Nome del pool di database elastico al quale appartiene il database, se esistente.
DatabaseName_s Nome del database
ResourceId URI della risorsa
wait_category_s Categoria dell'attesa.
is_parameterizable_s La query è parametrizzabile.
statement_type_s Tipo di istruzione.
statement_key_hash_s Hash della chiave di istruzione.
exec_type_d Tipo di esecuzione
total_query_wait_time_ms_d Tempo di attesa totale della query nella categoria di attesa specifica.
max_query_wait_time_ms_d Tempo di attesa massimo della query nella singola esecuzione nella categoria di attesa specifica
query_param_type_d 0
query_hash_s Hash di query in Query Store.
query_plan_hash_s Hash del piano di query in Query Store
statement_sql_handle_s Handle di istruzione in Query Store
interval_start_time_d Datetimeoffset iniziale dell'intervallo in numero di tick da 1900-1-1.
interval_end_time_d Datetimeoffset finale dell'intervallo in numero di tick da 1900-1-1.
count_executions_d Numero di esecuzioni della query
query_id_d ID della query in Query Store
plan_id_d ID del piano in Query Store

Fare clic qui per ulteriori informazioni sui dati delle statistiche di attesa di Query Store.

Set di dati di errori

Proprietà Descrizione
TenantId L'ID del tenant.
SourceSystem Always: Azure
TimeGenerated [UTC] Timestamp di quando è stato registrato il log.
Tipo Always: AzureDiagnostics
ResourceProvider Nome del provider di risorse. Always: MICROSOFT.SQL
Categoria Nome della categoria. Always: QueryStoreRuntimeStatistics
OperationName Nome dell'operazione. Always: QueryStoreRuntimeStatisticsEvent
Risorsa Nome della risorsa
ResourceType Nome del tipo di risorsa. Always: SERVERS/DATABASES
SubscriptionId GUID della sottoscrizione a cui appartiene il database.
ResourceGroup Nome del gruppo di risorse al quale appartiene il database.
LogicalServerName_s Nome del server al quale appartiene il database.
ElasticPoolName_s Nome del pool di database elastico al quale appartiene il database, se esistente.
DatabaseName_s Nome del database
ResourceId URI della risorsa
Message Messaggio di errore in testo normale
user_defined_b È il bit di errore definito dall'utente
error_number_d Codice di errore
Severity Gravità dell'errore
state_d Stato dell'errore
query_hash_s Hash di query della query non riuscita, se disponibile
query_plan_hash_s Hash del piano di query della query non riuscita, se disponibile

Messaggi di errore di SQL Server

Set di dati delle attese del database

Proprietà Descrizione
TenantId L'ID del tenant.
SourceSystem Always: Azure
TimeGenerated [UTC] Timestamp di quando è stato registrato il log.
Tipo Always: AzureDiagnostics
ResourceProvider Nome del provider di risorse. Always: MICROSOFT.SQL
Categoria Nome della categoria. Always: QueryStoreRuntimeStatistics
OperationName Nome dell'operazione. Always: QueryStoreRuntimeStatisticsEvent
Risorsa Nome della risorsa
ResourceType Nome del tipo di risorsa. Always: SERVERS/DATABASES
SubscriptionId GUID della sottoscrizione a cui appartiene il database.
ResourceGroup Nome del gruppo di risorse al quale appartiene il database.
LogicalServerName_s Nome del server al quale appartiene il database.
ElasticPoolName_s Nome del pool di database elastico al quale appartiene il database, se esistente.
DatabaseName_s Nome del database
ResourceId URI della risorsa
wait_type_s Nome del tipo di attesa
start_utc_date_t [UTC] Ora di inizio del periodo misurato.
end_utc_date_t [UTC] Ora di fine del periodo misurato.
delta_max_wait_time_ms_d Tempo massimo tempo di attesa per esecuzione
delta_signal_wait_time_ms_d Tempo di attesa totale del segnale
delta_wait_time_ms_d Tempo di attesa totale nel periodo
delta_waiting_tasks_count_d Numero di attività in attesa

Fare clic qui per ulteriori informazioni sui dati delle statistiche di attesa del database.

Set di dati dei timeout

Proprietà Descrizione
TenantId L'ID del tenant.
SourceSystem Always: Azure
TimeGenerated [UTC] Timestamp di quando è stato registrato il log.
Tipo Always: AzureDiagnostics
ResourceProvider Nome del provider di risorse. Always: MICROSOFT.SQL
Categoria Nome della categoria. Always: QueryStoreRuntimeStatistics
OperationName Nome dell'operazione. Always: QueryStoreRuntimeStatisticsEvent
Risorsa Nome della risorsa
ResourceType Nome del tipo di risorsa. Always: SERVERS/DATABASES
SubscriptionId GUID della sottoscrizione a cui appartiene il database.
ResourceGroup Nome del gruppo di risorse al quale appartiene il database.
LogicalServerName_s Nome del server al quale appartiene il database.
ElasticPoolName_s Nome del pool di database elastico al quale appartiene il database, se esistente.
DatabaseName_s Nome del database
ResourceId URI della risorsa
error_state_d Codice di stato dell'errore
query_hash_s Hash di query, se disponibile
query_plan_hash_s Hash del piano di query, se disponibile

Set di dati dei blocchi

Proprietà Descrizione
TenantId L'ID del tenant.
SourceSystem Always: Azure
TimeGenerated [UTC] Timestamp di quando è stato registrato il log.
Tipo Always: AzureDiagnostics
ResourceProvider Nome del provider di risorse. Always: MICROSOFT.SQL
Categoria Nome della categoria. Always: QueryStoreRuntimeStatistics
OperationName Nome dell'operazione. Always: QueryStoreRuntimeStatisticsEvent
Risorsa Nome della risorsa
ResourceType Nome del tipo di risorsa. Always: SERVERS/DATABASES
SubscriptionId GUID della sottoscrizione a cui appartiene il database.
ResourceGroup Nome del gruppo di risorse al quale appartiene il database.
LogicalServerName_s Nome del server al quale appartiene il database.
ElasticPoolName_s Nome del pool di database elastico al quale appartiene il database, se esistente.
DatabaseName_s Nome del database
ResourceId URI della risorsa
lock_mode_s Modalità di blocco usata dalla query
resource_owner_type_s Proprietario del blocco.
blocked_process_filtered_s Report XML del processo bloccato.
duration_d Durata del blocco in millisecondi.

Set di dati di Intelligent Insights

Fare clic qui per ulteriori informazioni sul formato di log di Intelligent Insights

Passaggi successivi