Memecahkan masalah dengan kueri diagnostik tingkat lanjut dengan Azure Cosmos DB untuk Apache Gremlin

BERLAKU UNTUK: Nosql MongoDB Cassandra Gremlin

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.

N(10) Permintaan Unit (RU) teratas yang menggunakan permintaan atau pertanyaan dalam jangka waktu tertentu

CDBGremlinRequests
| project PIICommandText, ActivityId, DatabaseName , CollectionName
| join kind=inner topRequestsByRUcharge on ActivityId
| project DatabaseName , CollectionName , PIICommandText , RequestCharge, TimeGenerated
| order by RequestCharge desc
| take 10

Permintaan dibatasi (statusCode = 429) dalam jangka waktu tertentu

CDBGremlinRequests
| project PIICommandText, ActivityId, DatabaseName , CollectionName
| join kind=inner throttledRequests on ActivityId
| project DatabaseName , CollectionName , PIICommandText , OperationName, TimeGenerated

Kueri dengan panjang respons besar (ukuran payload respons server)

CDBGremlinRequests
//specify collection and database
 //| where DatabaseName == "DB NAME" and CollectionName == "COLLECTIONNAME"
| join kind=inner operationsbyUserAgent on ActivityId
| summarize max(ResponseLength) by PIICommandText
| 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 == "DB NAME" 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 == "DB NAME" and CollectionName == "COLLECTIONNAME"
// filter by operation type
//| where operationType_s == 'Create'
| summarize sum(todouble(RequestCharge)) by PartitionKey, PartitionKeyRangeId
| render columnchart  

Langkah berikutnya