Problembehandlung mit Diagnoseabfragen
GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle
In diesem Artikel erfahren Sie, wie Sie einfache Abfragen schreiben, um Probleme mit Ihrem Azure Cosmos DB-Konto mithilfe von Diagnoseprotokollen zu beheben, die an AzureDiagnostics-Tabellen (Legacy) und ressourcenspezifische Tabellen (Vorschauversion) gesendet werden.
Bei Azure Diagnostics-Tabellen werden alle Daten in eine einzelne Tabelle geschrieben, und Benutzer*innen müssen angeben, welche Kategorie sie abfragen möchten.
Bei ressourcenspezifischen Tabellen werden Daten in einzelne Tabellen für die jeweilige Kategorie der Ressource geschrieben (nicht verfügbar für die Tabellen-API). Wir empfehlen diesen Modus, da die Bearbeitung der Daten erheblich erleichert wird, eine bessere Erkennbarkeit der Schemas ermöglicht wird und die Leistung in Bezug auf Erfassungslatenz sowie Abfragezeiten verbessert wird.
Allgemeine Abfragen
Im Folgenden finden Sie eine Liste allgemeiner Abfragen zur Problembehandlung.
Abfragen von Vorgängen, deren Ausführung länger als 3 Millisekunden dauert
Ermitteln Sie Vorgänge mit einer Dauer von mehr als 3 Millisekunden.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
Abfragen von Benutzer-Agents, die Vorgänge ausführen
Ermitteln Sie Benutzer-Agents, die den einzelnen Vorgängen zugeordnet sind.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Abfragen von Vorgängen mit langer Ausführungsdauer
Ermitteln Sie Vorgänge mit langer Ausführungsdauer, indem Sie ihre Laufzeit in Fünf-Sekunden-Intervalle unterteilen.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Abrufen der Partitionsschlüsselstatistiken zum Auswerten der Neidung in den drei wichtigsten Partitionen für ein Datenbankkonto
Messen Sie die Neigung, indem Sie allgemeine Statistiken für physische Partitionen abrufen.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Abrufen der Anforderungskosten für teure Abfragen
Messen Sie die Anforderungsgebühr (in RUs) für die größten Abfragen.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 10.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Ermitteln, welche Vorgänge die meisten RU/s in Anspruch nehmen
Sortieren Sie Vorgänge nach der Menge der verwendeten RU/s.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(responseLength_s), max(requestLength_s), max(requestCharge_s), count = count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Abrufen aller Abfragen, die mehr als 100 RU/s verbrauchen
Ermitteln Sie Abfragen, die mehr RU/s verbrauchen als eine Basismenge.
Diese Abfrage wird mit Daten aus DataPlaneRequests
und QueryRunTimeStatistics
verknüpft.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 100.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100
Abrufen der Anforderungsgebühren und der Ausführungsdauer einer Abfrage
Rufen Sie Statistiken sowohl für die Anforderungsgebühr als auch für die Dauer einer bestimmten Abfrage ab.
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "QueryRuntimeStatistics"
| join (
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "DataPlaneRequests"
) on $left.activityId_g == $right.activityId_g
| project databasename_s, collectionname_s, OperationName1 , querytext_s,requestCharge_s1, duration_s1, bin(TimeGenerated, 1min)
Abrufen der Verteilung für verschiedene Vorgänge
Gruppieren Sie Vorgänge nach der Ressourcenverteilung.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
Abrufen des maximalen Durchsatzes, den eine Partition verbraucht hat
Rufen Sie den maximalen Durchsatz für eine physische Partition ab.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Abrufen von Informationen zum RU/s-Verbrauch pro Sekunde der Partitionsschlüssel
Messen Sie den RU/s-Verbrauch pro Sekunde und Partitionsschlüssel.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s, TimeGenerated
| order by TimeGenerated asc
Abrufen der Anforderungskosten für einen bestimmten Partitionsschlüssel
Messen sie die Anforderungsgebühr pro Partitionsschlüssel.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
Abrufen der wichtigsten Partitionsschlüssel mit den meisten verbrauchten RU/s in einem bestimmten Zeitraum
Sortieren Sie Partitionsschlüssel basierend auf dem Anforderungseinheitenverbrauch innerhalb eines Zeitfensters.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where TimeGenerated >= datetime("11/26/2019, 11:20:00.000 PM") and TimeGenerated <= datetime("11/26/2019, 11:30:00.000 PM")
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s
| order by total desc
Abrufen der Protokolle für die Partitionsschlüssel, deren Speichergröße größer als 8 GB ist
Suchen Sie Protokolle für Partitionsschlüssel, die nach der Größe des Speichers pro Partitionsschlüssel gefiltert sind.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
Abrufen der P99- oder P50-Latenzen für Vorgänge, Anforderungsgebühren oder die Länge der Antwort
Messen Sie die Leistung für Vorgangslatenz, RU/s-Nutzung und Antwortlänge.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2d)
| summarize percentile(todouble(responseLength_s), 50), percentile(todouble(responseLength_s), 99), max(responseLength_s), percentile(todouble(requestCharge_s), 50), percentile(todouble(requestCharge_s), 99), max(requestCharge_s), percentile(todouble(duration_s), 50), percentile(todouble(duration_s), 99), max(duration_s), count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)
Abrufen von Protokollen der Steuerungsebene
Rufen Sie Protokolle der Steuerungsebene mithilfe von ControlPlaneRequests
ab.
Tipp
Denken Sie daran, das Flag zu aktivieren, wie unter Deaktivieren des schlüsselbasierten Metadatenschreibzugriffs beschrieben, und führen Sie die Vorgänge mithilfe von Azure PowerShell, der Azure CLI oder Azure Resource Manager aus.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Nächste Schritte
- Weitere Informationen zum Erstellen von Diagnoseeinstellungen für Azure Cosmos DB finden Sie unter Erstellen von Diagnoseeinstellungen.
- Ausführliche Informationen zum Erstellen einer Diagnoseeinstellung über das Microsoft Azure-Portal, die Befehlszeilenschnittstelle oder PowerShell finden Sie unter Erstellen einer Diagnoseeinstellung zum Sammeln von Plattformprotokollen und Metriken in Azure.