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