Einrichten der Diagnoseprotokollierung

Die Überwachung der Leistung Ihrer Server ist ein wesentlicher Bestandteil jeder Analysis Services-Lösung. Azure Analysis Services ist in Azure Monitor integriert. Mit Azure Monitor-Ressourcenprotokollen können Sie Protokolle überwachen und an Azure Storage senden, diese in Azure Event Hubs streamen und in Azure Monitor-Protokolle exportieren.

Ressourcenprotokollierung für Storage, Event Hubs oder Azure Monitor-Protokolle

Hinweis

Dieser Artikel wurde mit der Verwendung des Azure Az PowerShell-Moduls aktualisiert. Das Azure Az PowerShell-Modul wird für die Interaktion mit Azure empfohlen. Informationen zu den ersten Schritten mit dem Az PowerShell-Modul finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Protokollierte Daten

Sie können die Kategorien Modul, Dienst und Metriken auswählen.

Engine

Bei Auswahl von Modul werden alle xEvents protokolliert. Einzelne Ereignisse können nicht ausgewählt werden.

xEvent-Kategorien Ereignisname
Sicherheitsüberwachung Audit Login
Sicherheitsüberwachung Audit Logout
Sicherheitsüberwachung Audit Server Starts And Stops
Statusberichte Progress Report Begin
Statusberichte Progress Report End
Statusberichte Progress Report Current
Abfragen Query Begin
Abfragen Query End
Befehle Command Begin
Befehle Command End
Fehler und Warnungen Fehler
Entdecken Discover End
Benachrichtigung Benachrichtigung
Sitzung Session Initialize
Locks Deadlock
Abfrageverarbeitung VertiPaq SE Query Begin
Abfrageverarbeitung VertiPaq SE Query End
Abfrageverarbeitung VertiPaq SE Query Cache Match
Abfrageverarbeitung Direct Query Begin
Abfrageverarbeitung Direct Query End

Dienst

Vorgangsname Auftreten bei folgendem Vorgang
ResumeServer Fortsetzen eines Servers
SuspendServer Anhalten eines Servers
DeleteServer Löschen eines Servers
RestartServer Benutzer startet einen Server über SSMS oder PowerShell neu.
GetServerLogFiles Benutzer exportiert Serverprotokoll über PowerShell.
ExportModel Benutzer exportiert ein Modell im Portal mithilfe von „Öffnen“ in Visual Studio.

Alle Metriken

Die Kategorie „Metriken“ protokolliert dieselben Servermetriken in der AzureMetrics-Tabelle. Wenn Sie die Abfrage horizontal skalieren und Metriken für jedes Lesereplikat trennen müssen, verwenden Sie stattdessen die AzureDiagnostics-Tabelle, wobei OperationName gleich LogMetric ist.

Einrichten der Diagnoseprotokollierung

Azure-Portal

  1. Klicken Sie im Azure-Portal > „Server“ im linken Navigationsbereich auf Diagnoseeinstellungen und dann auf Diagnose aktivieren.

    Aktivieren der Ressourcenprotokollierung für Azure Cosmos DB im Azure-Portal

  2. Geben Sie in Diagnoseeinstellungen die folgenden Optionen an:

    • Name: Geben Sie einen Namen für die zu erstellenden Protokolle ein.

    • In einem Speicherkonto archivieren. Sie benötigen ein vorhandenes Speicherkonto, mit dem eine Verbindung hergestellt werden kann, um diese Option verwenden zu können. Siehe Erstellen Sie ein Speicherkonto. Befolgen Sie die Anweisungen zum Erstellen eines allgemeinen Resource Manager-Kontos, und wählen Sie dann Ihr Speicherkonto aus, indem Sie zu dieser Seite im Portal zurückwechseln. Es dauert möglicherweise einige Minuten, bis neu erstellte Speicherkonten im Dropdownmenü angezeigt werden.

    • An einen Event Hub streamen. Sie benötigen einen vorhandenen Event Hub-Namespace und einen Event Hub. mit dem eine Verbindung hergestellt werden kann, um diese Option verwenden zu können. Weitere Informationen finden Sie unter Erstellen eines Event Hubs-Namespace und eines Event Hubs mithilfe des Azure-Portals. Kehren Sie anschließend auf diese Seite im Portal zurück, um den Event Hub-Namespace und den Richtliniennamen auszuwählen.

    • An Azure Monitor senden (Log Analytics-Arbeitsbereich) . Für diese Option können Sie entweder einen vorhandenen Arbeitsbereich verwenden oder im Portal eine neue Arbeitsbereichsressource erstellen. Weitere Informationen zum Anzeigen Ihrer Protokolle finden Sie unter Anzeigen von Protokollen im Log Analytics-Arbeitsbereich in diesem Artikel.

    • Modul: Wählen Sie diese Option aus, um xEvents zu protokollieren. Wenn die Archivierung in einem Speicherkonto erfolgt, können Sie die Beibehaltungsdauer für die Ressourcenprotokolle auswählen. Protokolle werden nach Ablauf des Aufbewahrungszeitraums automatisch gelöscht.

    • Dienst. Wählen Sie diese Option aus, um Ereignisse auf Dienstebene zu protokollieren. Wenn Sie auf einem Speicherkonto archivieren, können Sie die Beibehaltungsdauer für die Ressourcenprotokolle auswählen. Protokolle werden nach Ablauf des Aufbewahrungszeitraums automatisch gelöscht.

    • Metriken: Wählen Sie diese Option aus, um ausführliche Daten in Metriken zu speichern. Wenn Sie auf einem Speicherkonto archivieren, können Sie die Beibehaltungsdauer für die Ressourcenprotokolle auswählen. Protokolle werden nach Ablauf des Aufbewahrungszeitraums automatisch gelöscht.

  3. Klicken Sie auf Speichern.

    Möglicherweise wird eine solche Fehlermeldung angezeigt: „Fehler beim Aktualisieren der Diagnose für <workspace name>. Das Abonnement „<subscription id>“ ist nicht für die Verwendung von microsoft.insights registriert.“ Befolgen Sie die Anweisungen zur Problembehandlung bei der Azure-Diagnose, um das Konto zu registrieren, und wiederholen Sie dann dieses Verfahren.

    Wenn Sie ändern möchten, wie die Ressourcenprotokolle zu einem zukünftigen Zeitpunkt gespeichert werden, können Sie zum Ändern der Einstellungen zu dieser Seite zurückkehren.

PowerShell

Hier sind die grundlegenden Befehle zum Einstieg aufgeführt. Detaillierte Hilfe zum Einrichten der Protokollierung in einem Speicherkonto mithilfe von PowerShell finden Sie im Tutorial weiter unten in diesem Artikel.

Verwenden Sie die folgenden Befehle, um die Metrik- und Ressourcenprotokollierung mit PowerShell zu aktivieren:

  • Verwenden Sie den folgenden Befehl, um das Speichern von Ressourcenprotokollen in einem Speicherkonto zu aktivieren:

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

    Die Speicherkonto-ID ist die Ressourcen-ID für das Speicherkonto, an das die Protokolle gesendet werden sollen.

  • Verwenden Sie den folgenden Befehl, um das Streamen von Ressourcenprotokollen an einen Event Hub zu aktivieren:

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

    Die Azure Service Bus-Regel-ID ist eine Zeichenfolge mit dem folgenden Format:

    {service bus resource ID}/authorizationrules/{key name}
    
  • Verwenden Sie den folgenden Befehl, um das Senden von Ressourcenprotokollen an einen Log Analytics-Arbeitsbereich zu aktivieren:

    Set-AzDiagnosticSetting -ResourceId [your resource id] -WorkspaceId [resource id of the log analytics workspace] -Enabled $true
    
  • Sie können die Ressourcen-ID mit dem folgenden Befehl aus Ihrem Log Analytics-Arbeitsbereich abrufen:

    (Get-AzOperationalInsightsWorkspace).ResourceId
    

Sie können diese Parameter kombinieren, um mehrere Ausgabeoptionen zu aktivieren.

REST-API

Erfahren Sie, wie die Diagnoseeinstellungen mithilfe der Azure Monitor-REST-API geändert werden können.

Resource Manager-Vorlage

Informieren Sie sich darüber, wie Sie Diagnoseeinstellungen beim Erstellen von Ressourcen mithilfe einer Resource Manager-Vorlage aktivieren.

Verwalten Ihrer Protokolle

Die Protokolle stehen in der Regel einige Stunden nach dem Einrichten der Protokollierung zur Verfügung. Die Verwaltung der Protokolle im Speicherkonto ist Ihre Aufgabe:

  • Verwenden Sie zum Schutz Ihrer Protokolle standardmäßige Azure-Zugriffssteuerungsmethoden, indem Sie den Zugriff auf diese auf bestimmte Benutzer beschränken.
  • Löschen Sie Protokolle, die im Speicherkonto nicht mehr aufbewahrt werden sollen.
  • Legen Sie eine Beibehaltungsdauer fest, sodass ältere Protokolle aus dem Speicherkonto gelöscht werden.

Anzeigen von Protokollen im Log Analytics-Arbeitsbereich

Metriken und Serverereignisse werden in Ihren Log Analytics-Arbeitsbereich in xEvents integriert, sodass eine parallele Analyse erfolgt. Der Log Analytics-Arbeitsbereich kann zudem so konfiguriert werden, dass Ereignisse von anderen Azure-Diensten empfangen werden, sodass die Diagnoseprotokollierungsdaten Ihrer Architektur ganzheitlich angezeigt werden.

Öffnen Sie zum Anzeigen Ihrer Diagnosedaten im Log Analytics-Arbeitsbereich im linken Menü Protokolle.

Protokollsuchoptionen im Azure-Portal

Erweitern Sie im Abfrage-Generator LogManagement > AzureDiagnostics. AzureDiagnostics umfasst Modul- und Dienstereignisse. Beachten Sie, dass direkt eine Abfrage erstellt wird. Das Feld EventClass_s enthält xEvent-Namen, die Ihnen vertraut vorkommen können, wenn Sie xEvents für die lokale Protokollierung verwendet haben. Wenn Sie auf EventClass_s oder einen der Ereignisnamen klicken, wird im Log Analytics-Arbeitsbereich eine Abfrage erstellt. Speichern Sie die Abfragen, um sie zu einem späteren Zeitpunkt wiederverwenden zu können.

Beispielabfragen

Beispiel 1

Die folgende Abfrage gibt Werte für die Dauer für jedes Abfrageende-/Aktualisierungsendeereignis für eine Modelldatenbank und einen Server zurück. Beim horizontalen Hochskalieren werden die Ergebnisse nach Replikat aufgeteilt, da die Replikatnummer in „ServerName_s“ enthalten ist. Die Gruppierung nach RootActivityId_g verringert die aus der REST-API der Azure-Diagnose abgerufene Zeilenanzahl und hilft, die unter Log Analytics-Ratengrenzwerte beschriebenen Grenzwerte einzuhalten.

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

Beispiel 2

Die folgende Abfrage gibt Arbeitsspeicher- und CPU-Verbrauch für einen Server zurück. Beim horizontalen Hochskalieren werden die Ergebnisse nach Replikat aufgeteilt, da die Replikatnummer in „ServerName_s“ enthalten ist.

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 

Beispiel 3

Die folgende Abfrage gibt die Leistungsindikatoren der pro Sekunde gelesenen Zeilen der Analysis Services-Engine für einen Server zurück.

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 

Ihnen stehen Hunderte von Abfragen zur Verwendung zur Verfügung. Weitere Informationen zu Abfragen finden Sie unter Erste Schritte mit Azure Monitor-Protokollabfragen.

Aktivieren der Protokollierung mit PowerShell

In diesem kurzen Tutorial erstellen Sie ein Speicherkonto im gleichen Abonnement und der gleichen Ressourcengruppe, in denen sich Ihr Analysis Services-Server befindet. Anschließend verwenden Sie „Set-AzDiagnosticSetting“, um die Diagnoseprotokollierung zu aktivieren, damit Ausgaben an das neue Speicherkonto gesendet werden.

Voraussetzungen

Für dieses Tutorial benötigen Sie die folgenden Ressourcen:

Herstellen von Verbindungen mit Ihren Abonnements

Starten Sie eine Azure PowerShell-Sitzung, und melden Sie sich mit dem folgenden Befehl bei Ihrem Azure-Konto an:

Connect-AzAccount

Geben Sie im Popup-Browserfenster den Benutzernamen und das Kennwort Ihres Azure-Kontos ein. Azure PowerShell ruft alle Abonnements ab, die diesem Konto zugeordnet sind, und verwendet standardmäßig das erste Abonnement.

Wenn Sie über mehrere Abonnements verfügen, müssen Sie unter Umständen ein bestimmtes Abonnement angeben, das zum Erstellen der Azure Key Vault-Instanz verwendet wurde. Geben Sie Folgendes ein, um die Abonnements für Ihr Konto anzuzeigen:

Get-AzSubscription

Geben Sie anschließend Folgendes ein, um das Abonnement anzugeben, das dem protokollierten Azure Analysis Services-Konto zugeordnet ist:

Set-AzContext -SubscriptionId <subscription ID>

Hinweis

Wenn Ihrem Konto mehrere Abonnements zugeordnet sind, müssen Sie unbedingt das Abonnement angeben.

Erstellen eines neuen Speicherkontos für Ihre Protokolle

Sie können ein vorhandenes Speicherkonto für Ihre Protokolle verwenden, sofern es sich im gleichen Abonnement wie der Server befindet. Für dieses Tutorial erstellen Sie ein neues Speicherkonto für Analysis Services-Protokolle. Der Einfachheit halber speichern Sie die Details zum Speicherkonto in einer Variable mit dem Namen sa.

Zudem verwenden Sie dieselbe Ressourcengruppe, in der auch der Analysis Services-Server enthalten ist. Ersetzen Sie die Werte für awsales_resgroup, awsaleslogs und West Central US durch Ihre eigenen Werte:

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

Identifizieren des Serverkontos für Ihre Protokolle

Legen Sie den Kontonamen auf die Variable account fest, wobei ResourceName der Name des Kontos ist.

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

Aktivieren der Protokollierung

Verwenden Sie zum Aktivieren der Protokollierung das Cmdlet „Set-AzDiagnosticSetting“ zusammen mit den Variablen für das neue Speicherkonto, das Serverkonto und die Kategorie. Führen Sie den folgenden Befehl aus, und legen Sie das Flag -Enabled auf $true fest:

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

Die Ausgabe sollte in etwa wie das folgende Beispiel aussehen:

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                        :

Diese Ausgabe bestätigt, dass die Protokollierung für den Server jetzt aktiviert ist und Informationen im Speicherkonto gespeichert werden.

Sie können außerdem eine Aufbewahrungsrichtlinie für Ihre Protokolle festlegen, sodass ältere Protokolle automatisch gelöscht werden. Richten Sie beispielsweise eine Aufbewahrungsrichtlinie ein, bei der das Flag -RetentionEnabled auf $true und der Parameter -RetentionInDays auf 90 festgelegt sind. Protokolle, die älter als 90 Tage sind, werden dann automatisch gelöscht.

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

Nächste Schritte

Erfahren Sie mehr über die Azure Monitor-Ressourcenprotokollierung.

Weitere Informationen finden Sie in der PowerShell-Hilfe unter Set-AzDiagnosticSetting.