مشاركة عبر


استكشاف المشكلات المتعلقة باستعلامات التشخيص المتقدمة وإصلاحها باستخدام Azure Cosmos DB ل Apache Gremlin

ينطبق على: NoSQL MongoDB كاساندرا العفريت

في هذه المقالة، سنغطي كيفية كتابة المزيد من الاستعلامات المتقدمة للمساعدة في استكشاف مشاكل حساب Azure Cosmos DB وإصلاحها باستخدام سجلات التشخيص المرسلة إلىAzure Diagnostics (legacy) والخاصة بالموارد (إصدار أولي ) من الجداول.

بالنسبة لجداول Azure Diagnostics، تتم كتابة جميع البيانات في جدول واحد. يحدد المستخدمون الفئة التي يريدون الاستعلام عنها. إذا كنت تريد عرض استعلام النص الكامل لطلبك، فراجع مراقبة بيانات Azure Cosmos DB باستخدام إعدادات التشخيص في Azure لمعرفة كيفية تمكين هذه الميزة.

بالنسبة إلىالجداول الخاصة بالموارد، تتم كتابة البيانات في جداول فردية لكل فئة من فئات المورد. نوصي بهذا الوضع لأنه:

  • يجعل العمل مع البيانات أسهل بكثير.
  • يوفر قابلية اكتشاف أفضل للمخططات.
  • يحسِّن الأداء عبر كلٍّ من زمن انتقال الاستيعاب وأوقات الاستعلام.

الاستعلامات الشائعة

يتم عرض الاستعلامات الشائعة في جداول Azure Diagnostics الخاصة بالمورد.

أعلى N (10) طلب وحدة (RU) تستهلك الطلبات أو الاستعلامات في إطار زمني محدد

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

الطلبات المقيدة (statusCode = 429) في نافذة زمنية محددة

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

استعلامات ذات أطوال رد كبير(حجم حمولة رد الخادم)

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

استهلاك 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  

الخطوات التالية