Dela via


Frågeanropsloggar

Översikt och åtkomst

Innan du kan dra nytta av Log Analytics för dina Communications Services-loggar måste du först följa stegen som beskrivs i Aktivera loggning i Diagnostikinställningar. När du har aktiverat loggarna och en Log Analytics-arbetsyta har du åtkomst till många användbara standardfrågepaket som hjälper dig att snabbt visualisera och förstå de data som är tillgängliga i loggarna, som beskrivs nedan. Via Log Analytics får du också åtkomst till fler Communications Services Insights via Azure Monitor-arbetsböcker, möjligheten att skapa egna frågor och arbetsböcker, Log Analytics API:er översikt över alla frågor.

Access

Du kan komma åt frågorna genom att starta på resurssidan för Communications Services och sedan klicka på "Loggar" i det vänstra navigeringsfältet i avsnittet Övervaka:

Log Analytics-navigering

Därifrån visas en modal skärm som innehåller alla standardfrågepaket som är tillgängliga för dina kommunikationstjänster, med en lista över frågepaket som är tillgängliga för att navigera till vänster.

log analytics-frågor modal

Om du stänger modalskärmen kan du fortfarande navigera till de olika frågepaketen, komma åt data direkt i form av tabeller baserat på schemat för de loggar och mått som du har aktiverat i diagnostikinställningen. Här kan du skapa egna frågor från data med hjälp av KQL (Kusto). Läs mer om hur du använder, redigerar och skapar frågor genom att läsa mer om: Log Analytics-frågor

Log Analytics-frågor i resursen

Log Analytics-tabeller i resurs

Standardfrågepaket för samtalssammanfattning och anropsdiagnostikloggar

Följande är beskrivningar av varje fråga i standardfrågepaketet för loggarna Samtalssammanfattning och Samtalsdiagnostik , inklusive kodexempel och exempelutdata för varje tillgänglig fråga:

Frågor om samtalsöversikt

Antal deltagare per samtal

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

Exempel på utdata:

fråga för samtalsöversikt

Antal deltagare per gruppsamtal

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

Exempel på utdata:

deltagare per gruppsamtalsfråga

Förhållandet mellan samtalstyper

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

Exempel på utdata:

förhållandet mellan anropstypfråga

Distribution av samtalsvaraktighet

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

Exempel på utdata:

fråga om samtalsvaraktighet

Percentiler för samtalsvaraktighet

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

Exempel på utdata:

fråga om percentil för samtalsvaraktighet

Frågor om slutpunktsinformation

Antal slutpunkter per anrop

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

Exempel på utdata:

slutpunkter per samtalsfråga

Förhållande mellan SDK-versioner

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

Exempel på utdata:

Cirkeldiagram som visar förhållandet mellan SDK-versioner.Tabell som visar SDK-versioner

Förhållande mellan OS-versioner (förenklat operativsystemnamn)

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

Exempel på utdata:

Cirkeldiagram som visar operativsystemsförhållandenTabell som visar OS-versioner

Media Stream-frågor

Strömmar per samtal

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

Exempel på utdata:

strömmar per samtalsfråga

Dataströmmar per anrops histogram

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

strömmar per anrops histogram

Förhållandet mellan medietyper

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

cirkeldiagram som visar förhållandet mellan medietyper

Frågor om kvalitetsmått

Genomsnittliga telemetrivärden

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

genomsnittliga telemetrivärden

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

genomsnittligt histogram för paketförlust

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

max histogram för paketförlust

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-genomsnittligt 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ålig jitterkvalitet

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

jitterkvalitet

PacketLossRate-kvalitet

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

paketförlustfrekvenskvalitet

RoundTripTime-kvalitet

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

Parameteriserbara frågor

Dagliga samtal den senaste veckan

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

dagliga samtal förra veckan

Samtal per timme under den senaste dagen

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

samtal per timme förra dagen