Abfrageprotokolle

Abgeschlossen

Azure-Ressourcen erzeugen Azure-Diagnoseprotokolle, die detaillierte Betriebsdaten für die jeweilige Ressource bereitstellen. Diagnoseeinstellungen werden verwendet, um diese Ressourcenprotokolle zu erfassen.

Während einige Protokolle wie Aktivitäts- und Plattformmetriken automatisch erfasst werden, müssen Diagnoseeinstellungen erstellt werden, um Ressourcenprotokolle zu erfassen. Diese Protokolle können außerhalb von Azure Monitor weitergeleitet werden. Durch das Aktivieren von Diagnoseeinstellungen in Azure Cosmos DB-Konten können die Daten an Log Analytics-Arbeitsbereiche, Event Hubs und Speicherkonten weitergeleitet werden.

Beim Weiterleiten von Daten an Log Analytics-Arbeitsbereiche werden die Protokolle in Tabellen geschrieben, die mithilfe der Kusto-Abfragesprache (KQL) abgefragt werden können. Um also die in diesen Tabellen gespeicherten Diagnosedaten verwenden zu können, sind Kenntnisse zum Lesen und Schreiben von Kusto-Abfragen unabdingbar. Bei diesen Tabellen kann es sich um generische Legacytabellen namens Azure-Diagnose oder um die empfohlenen ressourcenspezifischen Tabellen handeln.

Erstellen von Azure Cosmos DB-Diagnoseeinstellungen

Es gibt mehrere Möglichkeiten zum Erstellen der Diagnoseeinstellungen: das Azure-Portal, die REST-API, PowerShell oder die Azure CLI.

Navigieren Sie zum Erstellen der Diagnoseeinstellungen im Azure-Portal zum Azure Cosmos DB-Konto, und wählen Sie im Monitoring-Abschnitt Diagnoseeinstellungen aus. Bearbeiten Sie entweder eine vorhandene Diagnoseeinstellung, oder wählen Sie + Diagnoseeinstellung hinzufügen aus, und wählen Sie dann die Protokolle, die Sie erfassen möchten, sowie die Ziele aus, an die diese Protokolle weitergeleitet werden.

Diagram that shows the diagnostic settings options for Azure Cosmos DB.

Die NoSQL-API-Protokolltabellen sind:

  • DataPlaneRequests: In dieser Tabelle werden Back-End-Anforderungen für Vorgänge protokolliert, die Daten erstellen, aktualisieren, löschen oder abrufen.
  • QueryRuntimeStatistics: In dieser Tabelle werden Abfragevorgänge für das NoSQL-API-Konto protokolliert.
  • PartitionKeyStatistics: In dieser Tabelle werden Statistiken zu logischen Partitionsschlüsseln protokolliert (Schätzwerte in KB). Diese ist hilfreich bei der Problembehandlung, wenn der Speicher Datenabweichungen enthält.
  • PartitionKeyRUConsumption: In dieser Tabelle wird jede Sekunde der aggregierte RU/s-Verbrauch von Partitionsschlüsseln protokolliert. Diese ist hilfreich bei der Problembehandlung für Partitionen mit übermäßig hoher Last.
  • ControlPlaneRequests: In dieser Tabelle werden Azure Cosmos DB-Kontosteuerungsdaten protokolliert, z. B. das Hinzufügen oder Entfernen von Regionen in den Replikationseinstellungen.

Problembehandlung mit Diagnoseabfragen

Beim Senden von Azure Cosmos DB-Diagnosedaten an Log Analytics werden die Daten entweder an die AzureDiagnostics-Tabelle oder an ressourcenspezifische Tabellen gesendet. Die Daten sollten vorzugsweise an ressourcenspezifische Tabellen gesendet werden. Daher verfügt jedes Protokoll, das in den Diagnoseeinstellungsoptionen ausgewählt wird, über eine eigene Tabelle. Die Auswahl dieses Modus erleichtert die Arbeit mit den sowie die Suche des verwendeten Schemas und verbessert die Leistung in Bezug auf Latenz und Abfragezeiten.

AzureDiagnostics-Abfragen

Bei Auswahl des Legacymodus werden die Diagnosedaten in der AzureDiagnostics-Tabelle gespeichert, sodass diese Tabelle für alle kusto-Abfragen verwendet wird. Da diese Tabelle Daten von mehreren Azure-Ressourcen enthalten kann, sollten Sie den Filter ResourceProvider=="MICROSOFT.DOCUMENTDB" in die where-Klausel einfügen, damit nur Azure Cosmos DB-Einträge zurückgegeben werden. Sie sollten außerdem einen Filter für die Category-Spalte hinzufügen, um zwischen den verschiedenen Protokollen unterscheiden zu können, die Sie unter Diagnoseeinstellungen ausgewählt haben. Wenn Sie beispielsweise Dokumente für das Protokoll QueryRuntimeStatistics zurückgeben möchten, fügen Sie die where-Klausel | where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="QueryRuntimeStatistics" ein. Bei Kusto wird Groß-/Kleinschreibung beachtet. Achten Sie daher darauf, dass die Spaltennamen die richtige Groß-/Kleinschreibung aufweisen. Im Folgenden sehen Sie einige Kusto-Abfragebeispiele, in denen die AzureDiagnostics-Tabelle verwendet wird.

  • Abfrage, die die Anzahl und die Gesamtanzahl der in Rechnung gestellten Anforderungen der verschiedenen Azure Cosmos DB-Vorgangstypen in der letzten Stunde zurückgibt.
AzureDiagnostics 
| where TimeGenerated >= ago(1h)
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| summarize OperationCount = count(), TotalRequestCharged=sum(todouble(requestCharge_s)) by OperationName
| order by TotalRequestCharged desc 
  • Die folgende Abfrage erstellt ein Zeitdiagramm für alle erfolgreichen Anforderungen (Status 200) und alle Anforderungen mit Ratenbegrenzung (Status 429) in der letzten Stunde. Die Anforderungen werden alle 10 Minuten aggregiert.
AzureDiagnostics 
| where TimeGenerated >= ago(1h)
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| summarize requestcount=count() by statusCode_s, bin(TimeGenerated, 10m)
| render timechart 

Ressourcenspezifische Abfragen

Im Gegensatz zu den AzureDiagnostic-Abfragen werden bei den ressourcenspezifischen Abfragen die verschiedenen Tabellen verwendet, die für die jeweilige Protokollkategorie erstellt wurden, die im Dialogfeld für die Diagnoseeinstellungen ausgewählt wurde. Wenn Sie diese Tabellen verwenden möchten, müssen Sie die Zeichenfolge CDB als Präfix vor dem Tabellennamen hinzufügen. Im Folgenden finden Sie einige Beispiele.

  • Abfrage, die die Anzahl und die Gesamtanzahl der in Rechnung gestellten Anforderungen der verschiedenen Azure Cosmos DB-Vorgangstypen in der letzten Stunde zurückgibt.
CDBDataPlaneRequests
| where TimeGenerated >= ago(1h)
| summarize OperationCount = count(), TotalRequestCharged=sum(todouble(RequestCharge)) by OperationName
| order by TotalRequestCharged desc 
  • Die folgende Abfrage erstellt ein Zeitdiagramm für alle erfolgreichen (Status 200) und alle Anforderungen mit Ratenbegrenzung (Status 429) in der letzten Stunde.
CDBDataPlaneRequests 
| where TimeGenerated >= ago(2h)
| summarize requestcount=count() by StatusCode, bin(TimeGenerated, 10m)
| render timechart