Aracılığıyla paylaş


Arama günlüklerini sorgulama

Genel bakış ve erişim

İletişim Hizmetleri günlükleriniz için Log Analytics'in avantajlarından yararlanabilmeniz için önce Tanılama Ayarlar'de günlüğü etkinleştirme başlığı altında açıklanan adımları izlemeniz gerekir. Günlüklerinizi ve Log Analytics Çalışma Alanı'nı etkinleştirdikten sonra, aşağıda açıklanan günlüklerinizde bulunan verileri hızla görselleştirmenize ve anlamanıza yardımcı olacak birçok yararlı varsayılan sorgu paketine erişebilirsiniz. Log Analytics aracılığıyla Azure İzleyici Çalışma Kitapları aracılığıyla Analizler daha fazla İletişim Hizmeti'ne, kendi sorgularımızı ve Çalışma Kitaplarımızı oluşturma olanağına, Log Analytics API'lerine herhangi bir sorguya genel bakış özelliğine de erişebilirsiniz.

Erişim

Communications Services kaynak sayfanızdan başlayıp İzleyici bölümündeki sol gezinti bölmesindeki "Günlükler"e tıklayarak sorgulara erişebilirsiniz:

Log Analytics navigation

Buradan, İletişim Hizmetleriniz için kullanılabilen tüm varsayılan sorgu paketlerini içeren kalıcı bir ekran ve sola gitmek için kullanılabilen Sorgu Paketleri listesi sunulur.

log analytics queries modal

Kalıcı ekranı kapatırsanız çeşitli sorgu paketlerine gidebilir, Tanılama Ayarınızda etkinleştirdiğiniz günlüklerin ve ölçümlerin şemasına göre tablolar biçimindeki verilere doğrudan erişebilirsiniz. Burada, KQL (Kusto) kullanarak verilerden kendi sorgularınızı oluşturabilirsiniz. Şu konularda daha fazla bilgi alarak sorguları kullanma, düzenleme ve oluşturma hakkında daha fazla bilgi edinin: Log Analytics Sorguları

Log Analytics queries in resource

Log Analytics tables in resource

Arama özeti ve arama tanılama günlükleri için varsayılan sorgu paketleri

Arama Özeti ve Arama Tanılama günlükleri için varsayılan sorgu paketindeki her sorgunun açıklamaları ve kullanılabilir her sorgu için kod örnekleri ve örnek çıkışlar aşağıda verilmiştir:

Arama Genel Bakış Sorguları

Arama başına katılımcı sayısı

// 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)

Örnek çıkış:

call overview query

Grup araması başına katılımcı sayısı

// 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")

Örnek çıkış:

participants per group call query

Çağrı türlerinin oranı

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

Örnek çıkış:

ratio of call type query

Arama süresi dağıtımı

// 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")

Örnek çıkış:

call duration query

Arama süresi yüzdebirlik değerleri

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

Örnek çıkış:

call duration percentile query

Uç nokta bilgileri sorguları

Çağrı başına uç nokta sayısı

// 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)

Örnek çıkış:

endpoints per call query

SDK sürümlerinin oranı

// 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"

Örnek çıkış:

Pie chart showing the ratio of SDK Versions.Table showing SDK Versions

İşletim sistemi sürümlerinin oranı (basitleştirilmiş işletim sistemi adı)

// 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"

Örnek çıkış:

Pie chart showing operating system ratiosTable showing OS Versions

Medya akışı sorguları

Arama başına Akışlar

// 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)

Örnek çıkış:

streams per call query

Çağrı başına histogram Akışlar

// 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"

streams per call histogram

Medya türlerinin oranı

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

pie chart showing media type ratios

Kalite ölçümleri sorguları

Ortalama telemetri değerleri

// 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)

average telemetry values

JitterAvg histogramı

// 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")

jitter average histogram

JitterMax histogramı

// 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")

jitter max histogram

PacketLossRateAvg 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")

packet loss average histogram

PacketLossRateMax histogramı

// 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")

packet loss max histogram

RoundTripTimeAvg histogramı

// 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 average histogram

RoundTripTimeMax histogramı

// 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 max histogram

Düşük Değişim Kalitesi

// 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"

jitter quality

PacketLossRate Kalitesi

// 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"

packet loss rate quality

RoundTripTime Kalitesi

// 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 quality

Parametreleştirilebilir Sorgular

Geçen haftaki günlük aramalar

// 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"

daily calls last week

Son gün içindeki saat başına arama sayısı

// 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"

calls per hour last day