Řešení potíží s pokročilými diagnostickými dotazy ve službě Azure Cosmos DB pro MongoDB
PLATÍ PRO: NoSQL MongoDB Cassandra Gremlin
V tomto článku se budeme zabývat tím, jak psát pokročilejší 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 Azure Diagnostics (starší verze) a tabulek specifických pro prostředky (Preview).
U Azure Diagnostics tabulek se všechna data zapisuje do jedné tabulky. Uživatelé určují, na kterou kategorii se mají dotazovat. Pokud chcete zobrazit fulltextový dotaz požadavku, přečtěte si téma Monitorování dat služby Azure Cosmos DB pomocí nastavení diagnostiky v Azure , kde se dozvíte, jak tuto funkci povolit.
U tabulek specifických pro prostředek se data zapisují do jednotlivých tabulek pro každou kategorii zdroje. Tento režim doporučujeme, protože:
- Usnadňuje práci s daty.
- Poskytuje lepší zjistitelnost schémat.
- Zlepšuje výkon v době latence příjmu dat i dotazů.
Běžné dotazy
Běžné dotazy se zobrazují v tabulkách specifických pro prostředek a Azure Diagnostics.
Nejvíce N(10) jednotek žádostí (RU) spotřebovávají požadavky nebo dotazy v určitém časovém rámci
//Enable full-text query to view entire query text
CDBMongoRequests
| where TimeGenerated > ago(24h)
| project PIICommandText, ActivityId, DatabaseName , CollectionName, RequestCharge
| order by RequestCharge desc
| take 10
Omezené požadavky (statusCode = 429 nebo 16500) v určitém časovém intervalu
CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "429" or ErrorCode == "16500"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated
Požadavky na vypršení časového limitu (statusCode = 50) v určitém časovém intervalu
CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "50"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated
Dotazy s velkou délkou odpovědí (datová část odpovědi serveru)
CDBMongoRequests
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
| summarize max(ResponseLength) by PIICommandText, RequestCharge, DurationMs, OperationName, TimeGenerated
| order by max_ResponseLength desc
Spotřeba RU podle fyzického oddílu (napříč všemi replikami v sadě replik)
CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by toint(PartitionKeyRangeId)
| render columnchart
Spotřeba RU podle logického oddílu (napříč všemi replikami v sadě replik)
CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart
Další kroky
- Další informace o tom, jak vytvořit nastavení diagnostiky pro službu Azure Cosmos DB, najdete v tématu Vytvoření nastavení diagnostiky.
- Podrobné informace o tom, jak vytvořit nastavení diagnostiky pomocí Azure Portal, Azure CLI nebo PowerShellu, najdete v tématu Vytvoření nastavení diagnostiky pro shromažďování protokolů a metrik platformy v Azure.