سجلات المكالمات للاستعلام

نظرة عامة والوصول

قبل أن تتمكن من الاستفادة من Log Analytics لسجلات خدمات الاتصالات، يجب أولا اتباع الخطوات الموضحة في تمكين التسجيل في إعدادات التشخيص. بمجرد تمكين سجلاتك ومساحة عمل Log Analytics، سيكون لديك حق الوصول إلى العديد من حزم الاستعلام الافتراضية المفيدة التي ستساعدك على تصور وفهم البيانات المتوفرة في سجلاتك، الموضحة أدناه. من خلال Log Analytics، يمكنك أيضا الوصول إلى المزيد من رؤى خدمات الاتصالات عبر مصنفات Azure Monitor، والقدرة على إنشاء استعلاماتنا ومصنفاتنا، ونظرة عامة على واجهات برمجة تطبيقات Log Analytics لأي استعلام.

Access

يمكنك الوصول إلى الاستعلامات عن طريق البدء في صفحة مورد خدمات الاتصالات، ثم النقر فوق "السجلات" في التنقل الأيمن داخل قسم Monitor:

التنقل في Log Analytics

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

استعلامات تحليلات السجل مشروطة

إذا أغلقت الشاشة المشروطة، فلا يزال بإمكانك الانتقال إلى حزم الاستعلام المختلفة، والوصول مباشرة إلى البيانات في شكل جداول استنادا إلى مخطط السجلات والمقاييس التي قمت بتمكينها في إعداد التشخيص. هنا، يمكنك إنشاء استعلاماتك الخاصة من البيانات باستخدام KQL (Kusto). تعرف على المزيد حول استخدام الاستعلامات وتحريرها وإنشاءها من خلال قراءة المزيد حول: استعلامات Log Analytics

استعلامات Log Analytics في المورد

جداول Log Analytics في المورد

حزم الاستعلام الافتراضية لملخص المكالمات وسجلات تشخيص المكالمات

فيما يلي أوصاف لكل استعلام في حزمة الاستعلام الافتراضية، لسجلات ملخص المكالمات وتشخيص المكالمات بما في ذلك نماذج التعليمات البرمجية ونماذج المخرجات لكل استعلام متوفر:

استعلامات نظرة عامة على المكالمات

عدد المشاركين في كل مكالمة

// Count number of calls and participants,
// and print average participants per call
ACSCallSummary
| distinct CorrelationId, ParticipantId, EndpointId
| summarize num_participants=count(), num_calls=dcount(CorrelationId)
| extend avg_participants = todecimal(num_participants) / todecimal(num_calls)

عينة الإخراج:

استعلام نظرة عامة على المكالمات

عدد المشاركين لكل مكالمة جماعية

// Count number of participants per group call
ACSCallSummary
| where CallType == 'Group'
| distinct CorrelationId, ParticipantId
| summarize num_participants=count() by CorrelationId
| summarize participant_counts=count() by num_participants
| order by num_participants asc 
| render columnchart with  (xcolumn = num_participants, title="Number of participants per group call")

عينة الإخراج:

المشاركون في كل استعلام مكالمة جماعية

نسبة أنواع المكالمات

// Ratio of call types
ACSCallSummary
| summarize call_types=dcount(CorrelationId) by CallType
| render piechart title="Call Type Ratio"

عينة الإخراج:

نسبة استعلام نوع المكالمة

توزيع مدة المكالمة

// Call duration histogram
ACSCallSummary
| distinct CorrelationId, CallDuration
|summarize duration_counts=count() by CallDuration
| order by CallDuration asc
| render columnchart with (xcolumn = CallDuration, title="Call duration histogram")

عينة الإخراج:

استعلام مدة الاتصال

النسب المئوية لمدة المكالمة

// Call duration percentiles
ACSCallSummary
| distinct CorrelationId, CallDuration
| summarize avg(CallDuration), percentiles(CallDuration, 50, 90, 99)

عينة الإخراج:

استعلام مدة الاستدعاء المئوية

استعلامات معلومات نقطة النهاية

عدد نقاط النهاية لكل مكالمة

// Count number of calls and endpoints,
// and print average endpoints per call
ACSCallSummary
| distinct CorrelationId, EndpointId
| summarize num_endpoints=count(), num_calls=dcount(CorrelationId)
| extend avg_endpoints = todecimal(num_endpoints) / todecimal(num_calls)

عينة الإخراج:

نقاط النهاية لكل استعلام مكالمة

نسبة إصدارات SDK

// Ratio of SDK Versions
ACSCallSummary
| distinct CorrelationId, ParticipantId, EndpointId, SdkVersion
| summarize sdk_counts=count() by SdkVersion
| order by SdkVersion asc
| render piechart title="SDK Version Ratio"

عينة الإخراج:

مخطط دائري يعرض نسبة إصدارات SDK.جدول يعرض إصدارات SDK

نسبة إصدارات نظام التشغيل (اسم نظام التشغيل المبسط)

// Ratio of OS Versions (simplified OS name)
ACSCallSummary
| distinct CorrelationId, ParticipantId, EndpointId, OsVersion
| extend simple_os = case(  indexof(OsVersion, "Android") != -1, tostring(split(OsVersion, ";")[0]),
                            indexof(OsVersion, "Darwin") != -1, tostring(split(OsVersion, ":")[0]),
                            indexof(OsVersion, "Windows") != -1, tostring(split(OsVersion, ".")[0]),
                            OsVersion
                        )
| summarize os_counts=count() by simple_os
| order by simple_os asc
| render piechart title="OS Version Ratio"

عينة الإخراج:

مخطط دائري يعرض نسب نظام التشغيلجدول يعرض إصدارات نظام التشغيل

استعلامات دفق الوسائط

التدفقات لكل مكالمة

// Count number of calls and streams,
// and print average streams per call
ACSCallDiagnostics
| summarize num_streams=count(), num_calls=dcount(CorrelationId)
| extend avg_streams = todecimal(num_streams) / todecimal(num_calls)

عينة الإخراج:

تدفقات لكل استعلام مكالمة

التدفقات لكل مدرج تكراري للمكالمة

// Distribution of streams per call
ACSCallDiagnostics
| summarize streams_per_call=count() by CorrelationId
| summarize stream_counts=count() by streams_per_call
| order by streams_per_call asc
| render columnchart title="Streams per call histogram"

تدفقات لكل مدرج تكراري للمكالمة

نسبة أنواع الوسائط

// Ratio of media types by call
ACSCallDiagnostics
| summarize media_types=count() by MediaType
| render piechart title="Media Type Ratio"

مخطط دائري يعرض نسب نوع الوسائط

استعلامات مقاييس الجودة

متوسط قيم بيانات تتبع الاستخدام

// Average telemetry values over all streams
ACSCallDiagnostics
| summarize Avg_JitterAvg=avg(JitterAvg),
            Avg_JitterMax=avg(JitterMax),
            Avg_RoundTripTimeAvg=avg(RoundTripTimeAvg),
            Avg_RoundTripTimeMax=avg(RoundTripTimeMax),
            Avg_PacketLossRateAvg=avg(PacketLossRateAvg),
            Avg_PacketLossRateMax=avg(PacketLossRateMax)

متوسط قيم بيانات تتبع الاستخدام

المدرج التكراري JitterAvg

// Jitter Average Histogram
ACSCallDiagnostics
| where isnotnull(JitterAvg)
| summarize JitterAvg_counts=count() by JitterAvg
| order by JitterAvg asc
| render columnchart with (xcolumn = JitterAvg, title="JitterAvg histogram")

متوسط المدرج التكراري للهزة

المدرج التكراري JitterMax

// Jitter Max Histogram
ACSCallDiagnostics
| where isnotnull(JitterMax)
|summarize JitterMax_counts=count() by JitterMax
| order by JitterMax asc
| render columnchart with (xcolumn = JitterMax, title="JitterMax histogram")

المدرج التكراري الأقصى للهزة

مخطط تكراري لحزمة البيانات

// PacketLossRate Average Histogram
ACSCallDiagnostics
| where isnotnull(PacketLossRateAvg)
|summarize PacketLossRateAvg_counts=count() by bin(PacketLossRateAvg, 0.01)
| order by PacketLossRateAvg asc
| render columnchart with (xcolumn = PacketLossRateAvg, title="PacketLossRateAvg histogram")

متوسط المدرج التكراري لفقدان الحزمة

مخطط تكراري ل PacketLossRateMax

// PacketLossRate Max Histogram
ACSCallDiagnostics
| where isnotnull(PacketLossRateMax)
|summarize PacketLossRateMax_counts=count() by bin(PacketLossRateMax, 0.01)
| order by PacketLossRateMax asc
| render columnchart with (xcolumn = PacketLossRateMax, title="PacketLossRateMax histogram")

الحد الأقصى لفقد الحزمة المدرج التكراري

المدرج التكراري RoundTripTimeAvg

// RoundTripTime Average Histogram
ACSCallDiagnostics
| where isnotnull(RoundTripTimeAvg)
|summarize RoundTripTimeAvg_counts=count() by RoundTripTimeAvg
| order by RoundTripTimeAvg asc
| render columnchart with (xcolumn = RoundTripTimeAvg, title="RoundTripTimeAvg histogram")

المدرج التكراري المتوسط ل RTT

المدرج التكراري RoundTripTimeMax

// RoundTripTime Max Histogram
ACSCallDiagnostics
| where isnotnull(RoundTripTimeMax)
|summarize RoundTripTimeMax_counts=count() by RoundTripTimeMax
| order by RoundTripTimeMax asc
| render columnchart with (xcolumn = RoundTripTimeMax, title="RoundTripTimeMax histogram")

المدرج التكراري الأقصى ل RTT

جودة التشويه الرديئة

// Get proportion of calls with poor quality jitter
// (defined as jitter being higher than 30ms)
ACSCallDiagnostics
| extend JitterQuality = iff(JitterAvg > 30, "Poor", "Good")
| summarize count() by JitterQuality
| render piechart title="Jitter Quality"

جودة التشويه

جودة حزمة البيانات

// Get proportion of calls with poor quality packet loss
// rate (defined as packet loss being higher than 10%)
ACSCallDiagnostics
| extend PacketLossRateQuality = iff(PacketLossRateAvg > 0.1, "Poor", "Good")
| summarize count() by PacketLossRateQuality
| render piechart title="Packet Loss Rate Quality"

جودة معدل فقدان الحزمة

جودة RoundTripTime

// Get proportion of calls with poor quality packet loss
// rate (defined as packet loss being higher than 10%)
ACSCallDiagnostics
| extend PacketLossRateQuality = iff(PacketLossRateAvg > 0.1, "Poor", "Good")
| summarize count() by PacketLossRateQuality
| render piechart title="Packet Loss Rate Quality"

جودة RTT

استعلامات قابلة للمعلمات

المكالمات اليومية في الأسبوع الماضي

// Histogram of daily calls over the last week
ACSCallSummary
| where CallStartTime > now() - 7d
| distinct CorrelationId, CallStartTime
| extend hour  = floor(CallStartTime, 1d)
| summarize event_count=count() by day
| sort by day asc
| render columnchart title="Number of calls in last week"

المكالمات اليومية الأسبوع الماضي

المكالمات في الساعة في اليوم الأخير

// Histogram of calls per hour in the last day
ACSCallSummary
| where CallStartTime > now() - 1d
| distinct CorrelationId, CallStartTime
| extend hour = floor(CallStartTime, 1h)
| summarize event_count=count() by hour
| sort by hour asc
| render columnchart title="Number of calls per hour in last day"

المكالمات في الساعة في اليوم الأخير