Sdílet prostřednictvím


Řešení potíží s diagnostickými dotazy

PLATÍ PRO: NoSQL MongoDB Cassandra Skřítek Stůl

V tomto článku se podíváme na to, jak psát jednoduché dotazy, které vám pomůžou řešit problémy s účtem služby Azure Cosmos DB pomocí diagnostických protokolů odesílaných do tabulek AzureDiagnostics (starší verze) a tabulek specifických pro prostředky (Preview ).

V případě tabulek Azure Diagnostics se všechna data zapisují do jedné tabulky a uživatelé musí určit, do které kategorie se mají dotazovat.

U tabulek specifických pro prostředky se data zapisují do jednotlivých tabulek pro každou kategorii prostředku (není k dispozici pro rozhraní API pro tabulky). Tento režim doporučujeme, protože usnadňuje práci s daty, poskytuje lepší zjistitelnost schémat a zlepšuje výkon v době latence příjmu dat i dotazů.

Běžné dotazy

Tady je seznam běžných dotazů pro řešení potíží.

Dotaz na operace, které poběží déle než 3 milisekundy

Vyhledejte operace, které mají dobu trvání delší než 3 milisekundy.

AzureDiagnostics 
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| summarize count() by clientIpAddress_s, TimeGenerated

Dotaz na uživatelské agenty, kteří spouští operace

Vyhledejte uživatelské agenty přidružené k jednotlivým operacím.

AzureDiagnostics 
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| summarize count() by OperationName, userAgent_s

Dotaz na dlouhotrvající operace

Vyhledejte operace, které běžely dlouho, a to spuštěním modulu runtime do pětisekundových intervalů.

AzureDiagnostics 
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| project TimeGenerated , duration_s 
| summarize count() by bin(TimeGenerated, 5s)
| render timechart

Získání statistiky klíče oddílu pro vyhodnocení nerovnoměrné distribuce mezi třemi oddíly pro databázový účet

Změřte nerovnoměrnou distribuci získáním běžných statistik pro fyzické oddíly.

AzureDiagnostics 
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics" 
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId 

Získání poplatků za žádosti za nákladné dotazy

Změřte poplatky za žádosti (v RU) pro největší dotazy.

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

Zjištění, které operace využívají většinu RU/s

Seřaďte operace podle množství RU/s, které používají.

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)

Získání všech dotazů, které využívají více než 100 RU/s

Vyhledejte dotazy, které spotřebovávají více RU/s než základní množství.

Tento dotaz spojí s daty z DataPlaneRequests a 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

Získání poplatků za požadavky a doba trvání provádění dotazu

Získejte statistiky v poplatcích požadavků i době trvání konkrétního dotazu.

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)

Získání distribuce pro různé operace

Seskupte operace podle distribuce prostředků.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h) 
| summarize count = count()  by OperationName, requestResourceType_s, bin(TimeGenerated, 1h) 

Získání maximální propustnosti, kterou oddíl spotřeboval

Získejte maximální propustnost fyzického oddílu.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h) 
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g

Získání informací o spotřebě RU/s klíčů oddílů za sekundu

Měření spotřeby RU/s na klíč oddílu za sekundu

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 

Získání poplatku za žádost pro konkrétní klíč oddílu

Měření poplatku za požadavek na klíč oddílu

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption" 
| where parse_json(partitionKey_s)[0] == "2" 

Získání klíčů horních oddílů s většinou spotřebovaných RU/s v určitém období

Seřaďte klíče oddílů podle spotřeby jednotek žádosti v časovém intervalu.

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

Získání protokolů pro klíče oddílu, jejichž velikost úložiště je větší než 8 GB

Vyhledejte protokoly klíčů oddílů filtrovaných podle velikosti úložiště na klíč oddílu.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000

Získání latencí P99 nebo P50 pro operace, poplatky za požadavky nebo délku odpovědi

Měření výkonu pro; latence operací, využití RU/s a délka odpovědi.

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)

Získání protokolů řídicí roviny

Získat řídicí rovinu dlouho pomocí ControlPlaneRequests.

Tip

Nezapomeňte zapnout příznak popsaný v části Zakázat přístup k zápisu metadat založený na klíčích a provádět operace pomocí Azure PowerShellu, Azure CLI nebo Azure Resource Manageru.

AzureDiagnostics 
| where Category =="ControlPlaneRequests"
| summarize by OperationName 

Další kroky