مشاركة عبر


اكتشاف الأخطاء وإصلاحها في استعلامات التشخيص

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

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

بالنسبة لجداول تشخيص Azure، تتم كتابة جميع البيانات في جدول واحد ويحتاج المستخدمون إلى تحديد الفئة التي يرغبون في الاستعلام عنها.

بالنسبة للجداول الخاصة بالموارد، تُكتب البيانات في جداول فردية لكل فئة من فئات المورد (غير متوفرة لواجهة برمجة تطبيقات الجدول). نوصي بهذا الوضع لأنه يجعل العمل مع البيانات أكثر سهولة، ويوفر إمكانية اكتشاف أفضل للمخططات، كما يحسن الأداء عبر زمن الوصول والاستعلام.

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

فيما يلي قائمة باستعلامات استكشاف الأخطاء وإصلاحها الشائعة.

الاستعلام عن العمليات التي تستغرق أكثر من 3 مللي ثانية للتشغيل

ابحث عن العمليات التي لها مدة أكبر من 3 مللي ثانية.

AzureDiagnostics 
| where toint(duration_s) > 3 and ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| summarize count() by clientIpAddress_s, TimeGenerated

الاستعلام عن وكلاء المستخدمين الذين يقومون بتشغيل العمليات

ابحث عن وكلاء المستخدمين المقترنين بكل عملية.

AzureDiagnostics 
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| summarize count() by OperationName, userAgent_s

الاستعلام عن العمليات طويلة الأمد

ابحث عن العمليات التي تم تشغيلها لفترة طويلة عن طريق ربط وقت التشغيل الخاص بها بفواصل زمنية مدتها خمس ثوان.

AzureDiagnostics 
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" 
| project TimeGenerated , duration_s 
| summarize count() by bin(TimeGenerated, 5s)
| render timechart

الحصول على إحصائيات مفتاح القسم لتقييم الانحراف عبر أهم ثلاثة أقسام لحساب قاعدة بيانات

قياس الانحراف عن طريق الحصول على إحصائيات شائعة للأقسام المادية.

AzureDiagnostics 
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics" 
| project SubscriptionId, regionName_s, databaseName_s, collectionName_s, partitionKey_s, sizeKb_d, ResourceId 

الحصول على رسوم الطلب للاستعلامات باهظة الثمن

قياس رسوم الطلب (في وحدات الطلب) لأكبر الاستعلامات.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 10.0
| project activityId_g, requestCharge_s
| join kind= inner (
AzureDiagnostics
| where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
| project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100

العثور على العمليات التي تأخذ معظم وحدات الطلب/ الثانية

فرز العمليات حسب مقدار وحدات الطلب/ الثانية التي تستخدمها.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h) 
| summarize max(responseLength_s), max(requestLength_s), max(requestCharge_s), count = count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)

الحصول على جميع الاستعلامات التي تستهلك أكثر من 100 RU/s

ابحث عن الاستعلامات التي تستهلك وحدات الطلب/ الثانية أكثر من مقدار الأساس.

ينضم هذا الاستعلام مع البيانات من DataPlaneRequests و QueryRunTimeStatistics.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests" and todouble(requestCharge_s) > 100.0
| project activityId_g, requestCharge_s
| join kind= inner (
        AzureDiagnostics
        | where ResourceProvider =="MICROSOFT.DOCUMENTDB" and Category == "QueryRuntimeStatistics"
        | project activityId_g, querytext_s
) on $left.activityId_g == $right.activityId_g
| order by requestCharge_s desc
| limit 100

الحصول على رسوم الطلب ومدة تنفيذ استعلام

احصل على إحصائيات في كل من رسوم الطلب والمدة لاستعلام معين.

AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "QueryRuntimeStatistics"
| join (
AzureDiagnostics
| where TimeGenerated >= ago(24hr)
| where Category == "DataPlaneRequests"
) on $left.activityId_g == $right.activityId_g
| project databasename_s, collectionname_s, OperationName1 , querytext_s,requestCharge_s1, duration_s1, bin(TimeGenerated, 1min)

الحصول على التوزيع لعمليات مختلفة

تجميع العمليات حسب توزيع الموارد.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h) 
| summarize count = count()  by OperationName, requestResourceType_s, bin(TimeGenerated, 1h) 

الحصول على الحد الأقصى لمعدل النقل الذي استهلكه القسم

احصل على الحد الأقصى لمعدل النقل لقسم فعلي.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2h) 
| summarize max(requestCharge_s) by bin(TimeGenerated, 1h), partitionId_g

الحصول على معلومات حول استهلاك RU/s لمفاتيح الأقسام في الثانية

قياس استهلاك RU/s على أساس كل ثانية لكل مفتاح قسم.

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption" 
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s, TimeGenerated 
| order by TimeGenerated asc 

الحصول على رسوم الطلب لمفتاح قسم معين

قياس رسوم الطلب لكل مفتاح قسم.

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption" 
| where parse_json(partitionKey_s)[0] == "2" 

الحصول على مفاتيح الأقسام العلوية مع استهلاك معظم وحدات الطلب/ الثانية في فترة معينة

فرز مفاتيح الأقسام استنادا إلى استهلاك وحدة الطلب ضمن إطار زمني.

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption" 
| where TimeGenerated >= datetime("11/26/2019, 11:20:00.000 PM") and TimeGenerated <= datetime("11/26/2019, 11:30:00.000 PM") 
| summarize total = sum(todouble(requestCharge_s)) by databaseName_s, collectionName_s, partitionKey_s 
| order by total desc

الحصول على سجلات لمفاتيح الأقسام التي يزيد حجم تخزينها عن 8 غيغابايت

ابحث عن سجلات لمفاتيح الأقسام التي تمت تصفيتها حسب حجم التخزين لكل مفتاح قسم.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="PartitionKeyStatistics"
| where todouble(sizeKb_d) > 800000

الحصول على زمن انتقال P99 أو P50 للعمليات أو رسوم الطلب أو طول الاستجابة

قياس الأداء من أجل؛ زمن انتقال العملية واستخدام RU/s وطول الاستجابة.

AzureDiagnostics
| where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="DataPlaneRequests"
| where TimeGenerated >= ago(2d)
| summarize percentile(todouble(responseLength_s), 50), percentile(todouble(responseLength_s), 99), max(responseLength_s), percentile(todouble(requestCharge_s), 50), percentile(todouble(requestCharge_s), 99), max(requestCharge_s), percentile(todouble(duration_s), 50), percentile(todouble(duration_s), 99), max(duration_s), count() by OperationName, requestResourceType_s, userAgent_s, collectionRid_s, bin(TimeGenerated, 1h)

الحصول على سجلات وحدة التحكم

احصل على مستوى التحكم لفترة طويلة باستخدام ControlPlaneRequests.

تلميح

تذكر تشغيل العلامة الموضحة في تعطيل الوصول إلى كتابة بيانات التعريف المستندة إلى المفتاح، وتنفيذ العمليات باستخدام Azure PowerShell أو Azure CLI أو Azure Resource Manager.

AzureDiagnostics 
| where Category =="ControlPlaneRequests"
| summarize by OperationName 

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