Azure Cosmos DB for MongoDB で高度な診断クエリを使用して問題をトラブルシューティングする
適用対象: NoSQL
MongoDB
Cassandra
Gremlin
この記事では、Azure Diagnostics (レガシ) テーブルとリソース固有 (プレビュー) テーブルに送信される診断ログを使用して、Azure Cosmos DB アカウントに関する問題のトラブルシューティングに役立つ、より高度なクエリを作成する方法について説明します。
Azure Diagnostics テーブルの場合、すべてのデータが 1 つのテーブルに書き込まれます。 クエリを実行するカテゴリをユーザーが指定します。 要求のフルテキスト クエリを確認したい場合は、「Azure の診断設定を使用して Azure Cosmos DB データを監視する」で、この機能を有効にする方法を参照してください。
リソース固有テーブルの場合、データはリソースのカテゴリごとに個別のテーブルに書き込まれます。 次の理由から、このモードをお勧めします。
- データの扱いがはるかに容易である。
- スキーマが見つけやすい。
- インジェストの待ち時間とクエリ時間の両方でパフォーマンスが向上する。
一般的なクエリ
一般的なクエリは、リソース固有のテーブルと Azure Diagnostics のテーブルに表示されます。
特定の時間枠内に要求またはクエリを使用する上位 N (10) 要求ユニット (RU)
//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
特定の時間枠に調整された要求 (statusCode = 429 または 16500)
CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "429" or ErrorCode == "16500"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated
特定の時間枠にタイムアウトになった要求 (statusCode = 50)
CDBMongoRequests
| where TimeGenerated > ago(24h)
| where ErrorCode == "50"
| project DatabaseName, CollectionName, PIICommandText, OperationName, TimeGenerated
応答の長さが長いクエリ (サーバー応答のペイロード サイズ)
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
物理パーティション別の RU 消費量 (レプリカ セット内のすべてのレプリカ)
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
論理パーティション別の RU 消費量 (レプリカ セット内のすべてのレプリカ)
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
次のステップ
- Azure Cosmos DB の診断設定を作成する方法について詳しくは、診断設定の作成に関するページを参照してください。
- Azure portal、Azure CLI、または PowerShell を使用して診断設定を作成する方法の詳細については、Azure でプラットフォーム ログとメトリックを収集するための診断設定の作成に関するページを参照してください。