Memecahkan masalah dengan kueri diagnostik tingkat lanjut dengan Azure Cosmos DB for NoSQL
BERLAKU UNTUK: NoSQL
Dalam artikel ini, kami akan membahas cara menulis kueri lanjutan untuk membantu memecahkan masalah dengan akun Azure Cosmos DB Anda menggunakan log diagnostik yang dikirim ke tabel Azure Diagnostics (warisan) dan khusus sumber daya (pratinjau).
Untuk tabel Azure Diagnostics, semua data ditulis ke dalam satu tabel tunggal. Pengguna menentukan kategori mana yang ingin mereka kueri. Jika Anda ingin melihat kueri teks lengkap dari permintaan Anda, lihat Memantau data Azure Cosmos DB menggunakan pengaturan diagnostik di Azure untuk mempelajari cara mengaktifkan fitur ini.
Untuk tabel khusus sumber daya, data ditulis ke dalam tabel individual untuk setiap kategori sumber daya. Kami merekomendasikan mode ini karena:
- Membuatnya lebih mudah untuk bekerja dengan data.
- Memberikan penemuan skema yang lebih baik.
- Meningkatkan performa di latensi penyerapan dan waktu kueri.
Kueri umum
Kueri umum ditampilkan dalam tabel khusus sumber daya dan Azure Diagnostics.
Kueri N(10) teratas yang diurutkan berdasarkan konsumsi Unit Permintaan (RU) dalam jangka waktu tertentu
let topRequestsByRUcharge = CDBDataPlaneRequests
| where TimeGenerated > ago(24h)
| project RequestCharge , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner topRequestsByRUcharge on ActivityId
| project DatabaseName , CollectionName , QueryText , RequestCharge, TimeGenerated
| order by RequestCharge desc
| take 10
Permintaan dibatasi (statusCode = 429) dalam jangka waktu tertentu
let throttledRequests = CDBDataPlaneRequests
| where StatusCode == "429"
| project OperationName , TimeGenerated, ActivityId;
CDBQueryRuntimeStatistics
| project QueryText, ActivityId, DatabaseName , CollectionName
| join kind=inner throttledRequests on ActivityId
| project DatabaseName , CollectionName , QueryText , OperationName, TimeGenerated
Kueri dengan panjang respons terbesar (ukuran payload respons server)
let operationsbyUserAgent = CDBDataPlaneRequests
| project OperationName, DurationMs, RequestCharge, ResponseLength, ActivityId;
CDBQueryRuntimeStatistics
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
| join kind=inner operationsbyUserAgent on ActivityId
| summarize max(ResponseLength) by QueryText
| order by max_ResponseLength desc
Konsumsi RU berdasarkan partisi fisik (di semua replika dalam set replika)
CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by toint(PartitionKeyRangeId)
| render columnchart
Konsumsi RU berdasarkan partisi logis (di semua replika dalam set replika)
CDBPartitionKeyRUConsumption
| where TimeGenerated >= now(-1d)
//specify collection and database
//| where DatabaseName == "DBNAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart
Langkah berikutnya
- Untuk informasi selengkapnya tentang cara membuat pengaturan diagnostik untuk Azure Cosmos DB, lihat Membuat pengaturan diagnostik.
- Untuk informasi mendetail tentang cara membuat pengaturan diagnostik dengan menggunakan portal Azure, Azure CLI, atau PowerShell, lihat Membuat pengaturan diagnostik untuk mengumpulkan log dan metrik platform di Azure.