Felsöka problem med diagnostikfrågor
GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin Bord
I den här artikeln går vi igenom hur du skriver enkla frågor för att felsöka problem med ditt Azure Cosmos DB-konto med hjälp av diagnostikloggar som skickas till azurediagnostiktabeller (äldre) och resursspecifika tabeller (förhandsversion ).
För Azure Diagnostics-tabeller skrivs alla data till en enda tabell och användarna måste ange vilken kategori de vill fråga efter.
För resursspecifika tabeller skrivs data till enskilda tabeller för varje kategori av resursen (inte tillgängligt för tabell-API). Vi rekommenderar det här läget eftersom det gör det mycket enklare att arbeta med data, ger bättre identifiering av scheman och förbättrar prestanda för både svarstid för inmatning och frågetider.
Vanliga frågor
Här är en lista över vanliga felsökningsfrågor.
Fråga efter åtgärder som tar längre än 3 millisekunder att köra
Hitta åtgärder som har en varaktighet som är större än 3 millisekunder.
AzureDiagnostics
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by clientIpAddress_s, TimeGenerated
Fråga efter användaragenter som kör åtgärder
Hitta användaragenter som är associerade med varje åtgärd.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| summarize count() by OperationName, userAgent_s
Fråga efter långvariga åtgärder
Hitta åtgärder som kördes under lång tid genom att gruppera deras körning i fem sekunders intervall.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| project TimeGenerated , duration_s
| summarize count() by bin(TimeGenerated, 5s)
| render timechart
Hämta statistik för partitionsnyckel för att utvärdera skevhet över de tre översta partitionerna för ett databaskonto
Mät skevhet genom att hämta vanlig statistik för fysiska partitioner.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId
Hämta begärandeavgifterna för dyra frågor
Mät begärandeavgiften (i RU:er) för de största frågorna.
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
Ta reda på vilka åtgärder som tar mest RU/s
Sortera åtgärder efter mängden RU/s som de använder.
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)
Hämta alla frågor som förbrukar mer än 100 RU/s
Hitta frågor som förbrukar mer RU/s än en baslinjemängd.
Den här frågan kopplas till data från DataPlaneRequests
och QueryRunTimeStatistics
.
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
Hämta avgifterna för begäran och körningstiden för en fråga
Hämta statistik i både begärandeavgiften och varaktigheten för en specifik fråga.
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)
Hämta fördelningen för olika åtgärder
Gruppera åtgärder efter resursdistributionen.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize count = count() by OperationName, requestResourceType_s, bin(TimeGenerated, 1h)
Hämta det maximala dataflöde som en partition har förbrukat
Hämta maximalt dataflöde för en fysisk partition.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h)
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g
Hämta information om ru/s-förbrukningen för partitionsnycklar per sekund
Mät RU/s-förbrukning per sekund per partitionsnyckel.
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
Hämta begärandeavgift för en specifik partitionsnyckel
Mät kostnaden för begäranden per partitionsnyckel.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
| where parse_json(partitionKey_s)[0] == "2"
Hämta de översta partitionsnycklarna med de flesta RU/s som förbrukas under en viss period
Sortera partitionsnycklar baserat på förbrukning av begärandeenhet inom ett tidsfönster.
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
Hämta loggar för de partitionsnycklar vars lagringsstorlek är större än 8 GB
Hitta loggar för partitionsnycklar filtrerade efter storleken på lagringen per partitionsnyckel.
AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000
Hämta P99- eller P50-svarstider för åtgärder, avgift för begäran eller längden på svaret
Mät prestanda för; åtgärdsfördröjning, RU/s-användning och svarslängd.
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)
Hämta kontrollplansloggar
Få kontrollplanet långt med hjälp av ControlPlaneRequests
.
Dricks
Kom ihåg att växla till flaggan som beskrivs i Inaktivera skrivbehörighet för nyckelbaserade metadata och köra åtgärderna med hjälp av Azure PowerShell, Azure CLI eller Azure Resource Manager.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| summarize by OperationName
Nästa steg
- Mer information om hur du skapar diagnostikinställningar för Azure Cosmos DB finns i Skapa diagnostikinställningar.
- Detaljerad information om hur du skapar en diagnostikinställning med hjälp av Azure-portalen, CLI eller PowerShell finns i Skapa diagnostikinställning för att samla in plattformsloggar och mått i Azure.