Configurare la registrazione diagnostica

Un aspetto importante di qualsiasi soluzione di Analysis Services è costituito dal monitoraggio delle prestazioni dei server. Azure Analysis Services è integrato con Monitoraggio di Azure. I log delle risorse di Monitoraggio di Azure consentono di monitorare e inviare log ad Archiviazione di Azure, trasmetterli a Hub eventi di Azure ed esportarli in log di Monitoraggio di Azure.

Resource logging to Storage, Event Hubs, or Azure Monitor logs

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.

Informazioni registrate

È possibile selezionare le categorie Engine (Motore), Service (Servizio) e Metrics (Metriche).

Motore

Se si seleziona la categoria Engine (Motore) vengono registrati nel log tutti gli eventi estesi (XEvent). Non è possibile selezionare eventi singoli.

Categorie di eventi estesi Nome evento
Controllo di sicurezza Connessione di controllo
Controllo di sicurezza Disconnessione di controllo
Controllo di sicurezza Inizi e arresti server di controllo
Report di stato Inizio report di stato
Report di stato Fine report di stato
Report di stato Report di stato corrente
Query Inizio query
Query Fine query
Comandi Inizio comando
Comandi Fine comando
Errori e avvisi Error
Rilevazione Fine individuazione
Notifica Notifica
Sessione Inizializzazione sessione
Locks Deadlock
Elaborazione delle query Inizio query SE VertiPaq
Elaborazione delle query Fine query SE VertiPaq
Elaborazione delle query Corrispondenza cache query SE VertiPaq
Elaborazione delle query Inizio query diretta
Elaborazione delle query Fine query diretta

Servizio

Nome operazione Ambito
ResumeServer Ripresa di un server
SuspendServer Sospensione di un server
DeleteServer Eliminare un server
RestartServer Riavvio di un server tramite SQL Server Management Studio o PowerShell
GetServerLogFiles Esportazione di un log del server tramite PowerShell
ExportModel Esportazione di un modello nel portale tramite Apri in Visual Studio

Tutte le metriche

La categoria Metriche registra le stesse metriche del server nella tabella AzureMetrics. Se si usa lo scale-out delle query ed è necessario separare le metriche per ogni replica di lettura, usare invece la tabella AzureDiagnostics, in cui OperationName è uguale a LogMetric.

Configurare la registrazione diagnostica

Azure portal

  1. Nel server del portale di Azure> fare clic su Impostazioni di diagnostica nel riquadro di spostamento sinistro e quindi fare clic su Attiva diagnostica.

    Screenshot showing Turn on diagnostics in the Azure portal.

  2. In Impostazioni di diagnostica specificare le opzioni seguenti:

    • Nome. Immettere un nome per i log da creare.

    • Archivia in un account di archiviazione. Per usare questa opzione, è necessario un account di archiviazione esistente a cui connettersi. Vedere Creare un account di archiviazione. Seguire le istruzioni per creare un account di Resource Manager di uso generale, quindi selezionare l'account di archiviazione ritornando in questa pagina del portale. Potrebbero essere necessari alcuni minuti per visualizzare gli account di archiviazione appena creati nel menu a discesa.

    • Streaming in un hub eventi. Per usare questa opzione, sono necessari uno spazio dei nomi esistente e un hub eventi a cui connettersi. Per altre informazioni, vedere Creare uno spazio dei nomi di Hub eventi e un hub eventi usando il Portale di Azure. Tornare a questa pagina del portale per selezionare lo spazio dei nomi dell'hub eventi e il nome dei criteri.

    • Send to Azure Monitor (Log Analytics workspace) (Invia a Monitoraggio di Azure - area di lavoro Log Analytics). Per usare questa opzione, usare un'area di lavoro esistente o creare una nuova area di lavoro nel portale. Per altre informazioni sulla visualizzazione dei log, vedere Visualizzare i log nell'area di lavoro Log Analytics in questo articolo.

    • Engine (Motore). Selezionare questa opzione per registrare gli eventi estesi. Se si esegue l'archiviazione in un account di archiviazione, è possibile selezionare il periodo di mantenimento dati per i log delle risorse. Alla scadenza del periodo, i log verranno automaticamente eliminati.

    • Servizi. Selezionare questa opzione per registrare gli eventi a livello di servizio. Se si esegue l'archiviazione in un account di archiviazione, è possibile selezionare il periodo di conservazione dei dati per i log delle risorse. Alla scadenza del periodo, i log verranno automaticamente eliminati.

    • Metrics (Metriche). Selezionare questa opzione per archiviare informazioni dettagliate in Metrics (Metriche). Se si esegue l'archiviazione in un account di archiviazione, è possibile selezionare il periodo di conservazione dei dati per i log delle risorse. Alla scadenza del periodo, i log verranno automaticamente eliminati.

  3. Fare clic su Salva.

    Se si riceve il messaggio di errore "Impossibile aggiornare la diagnostica per <nome area di lavoro>. La sottoscrizione <ID sottoscrizione> non è registrata per l'uso di microsoft.insights", seguire le istruzioni riportate in Risolvere i problemi relativi a Diagnostica di Azure per registrare l'account, quindi ripetere questa procedura.

    Se in seguito si vuole modificare la modalità di salvataggio dei log delle risorse, è possibile tornare in questa pagina e modificare le impostazioni.

PowerShell

Ecco i comandi di base per iniziare. Se si desiderano istruzioni dettagliate su come configurare la registrazione per un account di archiviazione usando PowerShell, vedere l'esercitazione più avanti in questo articolo.

Per abilitare le metriche e la registrazione delle risorse con PowerShell, usare i comandi seguenti:

  • Per abilitare la memorizzazione dei log delle risorse in un account di archiviazione, usare il comando seguente:

    Set-AzDiagnosticSetting -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 lo streaming dei log delle risorse a un Hub eventi, usare questo comando:

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

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

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

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

    (Get-AzOperationalInsightsWorkspace).ResourceId
    

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

REST API

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

Modello di Resource Manager

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

Gestire i log

I log sono in genere disponibili entro due ore dall'impostazione della registrazione. La gestione dei log nell'account di archiviazione è compito dell'utente:

  • Usare i metodi di controllo di accesso standard di Azure per proteggere i log limitando l'accesso agli utenti specificati.
  • Eliminare i log che non è più necessario mantenere nell'account di archiviazione.
  • Assicurarsi di impostare un periodo di conservazione dopo il quale i log obsoleti vengono eliminati dall'account di archiviazione.

Visualizzare i log nell'area di lavoro Log Analytics

Le metriche e gli eventi del server sono integrati con gli eventi estesi nell'area personale di Log Analytics per consentirne l'analisi affiancata. L'area di lavoro Log Analytics può anche essere configurata in modo da ricevere gli eventi da altri servizi di Azure e offrire una vista olistica dei dati della registrazione diagnostica in tutta l'architettura.

Per visualizzare i dati di diagnostica, nell'area di lavoro Log Analytics aprire Log nel menu a sinistra.

Screenshot showing log Search options in the Azure portal.

Nel generatore di query espandere LogManagement>AzureDiagnostics. AzureDiagnostics include eventi del motore e del servizio. Viene immediatamente creata una query. Il campo EventClass_s contiene nomi xEvent, che potrebbero risultare familiari se sono stati usati xEvents per la registrazione locale. Fare clic su EventClass_s o su uno dei nomi degli eventi e l'area di lavoro Log Analytics continua a generare una query. Assicurarsi di salvare le query per un successivo riutilizzo.

Query di esempio

Esempio 1

Questa query restituisce le durate per ogni evento di fine query/fine aggiornamento per un database modello e un server. Se si aumentano le istanze del sistema, i risultati vengono suddivisi per replica perché il numero di replica è incluso in ServerName_s. Il raggruppamento per RootActivityId_g riduce il conteggio delle righe recuperato dall'API REST di Diagnostica di Azure e aiuta a rimanere entro i limiti descritti in Limiti di velocità di Log Analytics.

let window = AzureDiagnostics
   | where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName" and DatabaseName_s =~ "MyDatabaseName" ;
window
| where OperationName has "QueryEnd" or (OperationName has "CommandEnd" and EventSubclass_s == 38)
| where extract(@"([^,]*)", 1,Duration_s, typeof(long)) > 0
| extend DurationMs=extract(@"([^,]*)", 1,Duration_s, typeof(long))
| project  StartTime_t,EndTime_t,ServerName_s,OperationName,RootActivityId_g,TextData_s,DatabaseName_s,ApplicationName_s,Duration_s,EffectiveUsername_s,User_s,EventSubclass_s,DurationMs
| order by StartTime_t asc

Esempio 2

La query seguente restituisce la memoria e il consumo di QPU per un server. Se si aumentano le istanze del sistema, i risultati vengono suddivisi per replica perché il numero di replica è incluso in ServerName_s.

let window = AzureDiagnostics
   | where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName";
window
| where OperationName == "LogMetric" 
| where name_s == "memory_metric" or name_s == "qpu_metric"
| project ServerName_s, TimeGenerated, name_s, value_s
| summarize avg(todecimal(value_s)) by ServerName_s, name_s, bin(TimeGenerated, 1m)
| order by TimeGenerated asc 

Esempio 3

La query seguente restituisce i contatori delle prestazioni del motore Analysis Services di righe lette al secondo per un server.

let window =  AzureDiagnostics
   | where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName";
window
| where OperationName == "LogMetric" 
| where parse_json(tostring(parse_json(perfobject_s).counters))[0].name == "Rows read/sec" 
| extend Value = tostring(parse_json(tostring(parse_json(perfobject_s).counters))[0].value) 
| project ServerName_s, TimeGenerated, Value
| summarize avg(todecimal(Value)) by ServerName_s, bin(TimeGenerated, 1m)
| order by TimeGenerated asc 

Sono disponibili centinaia di query. Per altre informazioni sulle query, vedere Introduzione alle query di log in Monitoraggio di Azure.

Abilitare la registrazione tramite PowerShell

In questa esercitazione rapida vengono creati un account di archiviazione nella stessa sottoscrizione e un gruppo di risorse come server di Analysis Services. Si usa quindi il cmdlet Set-AzDiagnosticSetting per attivare la registrazione della diagnostica e inviare i risultati al nuovo account di archiviazione.

Prerequisiti

Per completare l'esercitazione, sono necessarie le risorse seguenti:

Connettersi alle sottoscrizioni

Avviare una sessione di Azure PowerShell e accedere all'account Azure con il comando seguente:

Connect-AzAccount

Nella finestra del browser a comparsa, immettere il nome utente e la password dell'account Azure. Azure PowerShell recupera tutte le sottoscrizioni associate a questo account e, per impostazione predefinita, usa la prima.

Se sono disponibili più sottoscrizioni, potrebbe essere necessario indicarne una specifica usata per creare l'insieme di credenziali delle chiavi di Azure. Digitare il comando seguente per visualizzare le sottoscrizioni relative all'account:

Get-AzSubscription

Per specificare quindi la sottoscrizione associata all'account di Azure Analysis Services per la registrazione, digitare:

Set-AzContext -SubscriptionId <subscription ID>

Nota

Se più sottoscrizioni sono associate all'account, è importante specificarne una.

Creare un nuovo account di archiviazione per i log

È possibile usare un account di archiviazione esistente per i log, purché sia nella stessa sottoscrizione del server. Per questa esercitazione si crea un nuovo account di archiviazione dedicato ai log di Analysis Services. Per praticità, i dettagli dell'account di archiviazione vengono memorizzati in una variabile denominata sa.

Viene usato anche lo stesso gruppo di risorse che contiene il server Analysis Services. Sostituire i valori di awsales_resgroup, awsaleslogs e West Central US con valori di propria scelta:

$sa = New-AzStorageAccount -ResourceGroupName awsales_resgroup `
-Name awsaleslogs -Type Standard_LRS -Location 'West Central US'

Identificare l'account del server per i log

Impostare il nome dell'account su una variabile denominata account, dove ResourceName è il nome dell'account.

$account = Get-AzResource -ResourceGroupName awsales_resgroup `
-ResourceName awsales -ResourceType "Microsoft.AnalysisServices/servers"

Abilitazione della registrazione

Per abilitare la registrazione, usare il cmdlet Set-AzDiagnosticSetting con le variabili create per il nuovo account di archiviazione, l'account del server e la categoria. Eseguire questo comando, impostando il flag -Enabled su $true:

Set-AzDiagnosticSetting  -ResourceId $account.ResourceId -StorageAccountId $sa.Id -Enabled $true -Categories Engine

L'output dovrebbe essere simile all'esempio seguente:

StorageAccountId            : 
/subscriptions/a23279b5-xxxx-xxxx-xxxx-47b7c6d423ea/resourceGroups/awsales_resgroup/providers/Microsoft.Storage/storageAccounts/awsaleslogs
ServiceBusRuleId            :
EventHubAuthorizationRuleId :
Metrics                    
    TimeGrain       : PT1M
    Enabled         : False
    RetentionPolicy
    Enabled : False
    Days    : 0


Logs                       
    Category        : Engine
    Enabled         : True
    RetentionPolicy
    Enabled : False
    Days    : 0


    Category        : Service
    Enabled         : False
    RetentionPolicy
    Enabled : False
    Days    : 0


WorkspaceId                 :
Id                          : /subscriptions/a23279b5-xxxx-xxxx-xxxx-47b7c6d423ea/resourcegroups/awsales_resgroup/providers/microsoft.analysisservic
es/servers/awsales/providers/microsoft.insights/diagnosticSettings/service
Name                        : service
Type                        :
Location                    :
Tags                        :

Questo output conferma che la registrazione è abilitata per il server. Le informazioni vengono salvate nell'account di archiviazione.

È possibile anche impostare criteri di conservazione per i log, in modo che i log meno recenti vengano eliminati automaticamente. È, ad esempio, possibile impostare i criteri di conservazione usando il flag -RetentionEnabled impostato su $true e impostare il parametro -RetentionInDays su 90. I log antecedenti a 90 giorni vengono eliminati automaticamente.

Set-AzDiagnosticSetting -ResourceId $account.ResourceId`
 -StorageAccountId $sa.Id -Enabled $true -Categories Engine`
  -RetentionEnabled $true -RetentionInDays 90

Passaggi successivi

Per altre informazioni, vedere Registrazione delle risorse di Monitoraggio di Azure.

Vedere Set-AzDiagnosticSetting nella Guida di PowerShell.