Ř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
- Další informace o tom, jak vytvořit nastavení diagnostiky pro službu Azure Cosmos DB, najdete v tématu Vytváření nastavení diagnostiky.
- Podrobné informace o tom, jak vytvořit nastavení diagnostiky pomocí webu Azure Portal, rozhraní příkazového řádku nebo PowerShellu, najdete v tématu Vytvoření nastavení diagnostiky pro shromažďování protokolů platformy a metrik v Azure.