次の方法で共有


通話ログにクエリを実行する

概要とアクセス

Communications Services のログに対して Log Analytics を利用する前に、まず、診断設定でのログの有効化に関するページで説明されている手順に従う必要があります。 ログと Log Analytics ワークスペースを有効にすると、ログから取得できるデータ (以下で説明) をすばやく視覚化して理解するために役立つ、さまざまな既定のクエリ パックにアクセスできるようになります。 Log Analytics を利用すると、Azure Monitor ブックを介し Communications Services のより多くの分析情報にアクセスしたり、独自のクエリやブックを作成したり、任意のクエリに対する Log Analytics API にアクセスしたりできます。

アクセス

クエリにアクセスするには、まず、Communications Services のリソース ページで、左側のナビゲーションにある [監視] セクション内の [ログ] をクリックします。

Log Analytics のナビゲーション

そこから、Communications Services で使用できるすべての既定のクエリ パックがモーダル画面に表示されます。左側の一覧から、使用できるクエリ パックを選択できます。

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 バージョンを示すテーブル

OS バージョンの比率 (簡略化した OS 名)

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

サンプル出力:

オペレーティング システムの比率を示す円グラフOS バージョンを示すテーブル

メディア ストリーム クエリ

通話あたりのストリーム数

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

最大ジッター ヒストグラム

PacketLossRateAvg ヒストグラム

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

ジッター品質

PacketLossRate 品質

// 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 品質

パラメーター化可能クエリ

先週の 1 日あたり通話数

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

先週の 1 日あたり通話数

最終日の 1 時間あたり通話数

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

最終日の 1 時間あたり通話数