你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

呼叫客户端媒体统计信息时序日志架构

“呼叫客户端媒体统计信息时序日志”提供有关参与呼叫的各个参与者之间的媒体流的客户端信息。 这些日志目前处于有限预览状态,提供参与者之间音频、视频和屏幕共享媒体流的详细时序数据,默认聚合间隔为 10 秒。 日志包含有关媒体流类型、方向、编解码器和比特率属性(例如 max、min、average)的粒度时序信息。

此日志提供比通话诊断日志更详细的信息,便于了解参与者之间的媒体流质量。 它可用于通过 Azure 通信服务资源的通话诊断可视化和调查呼叫的质量问题。 详细了解通话诊断

如何使用呼叫日志

建议在 Log Analytics 资源中收集所有可用的呼叫日志,以便监视呼叫使用情况和改进通话质量,并在我们发布新日志时从 Azure 通信服务接收这些日志。

可使用两个主要工具来监视通话并提高通话质量。

建议使用“语音和视频见解”仪表板来启动任何质量调查,并根据需要使用通话诊断,以在需要精细的详细信息时浏览单次呼叫。

数据概念

重要

若要分析日志,必须收集这些日志。 若要了解详细信息,请参阅:如何存储日志?

除非启用这些特定的诊断设置,否则 Azure 不会存储呼叫日志数据。 呼叫数据不可追溯。 创建诊断设置后,将累积数据。

数据定义

呼叫客户端媒体统计信息时序日志架构

下表介绍了每个属性。

properties 说明
OperationName 与日志记录相关联的操作。
CallId 呼叫的唯一 ID。 它可从单次呼叫期间连接的所有参与者和终结点中标识相关事件,并且可用于联接来自不同日志的数据。 它类似于通话摘要日志和通话诊断日志中的 correlationId。
CallClientTimeStamp 记录媒体统计信息时的时间戳。
MetricName 媒体统计信息的名称,例如 BitrateJitterInMsPacketsPerSecond 等。
Count 在给定时间戳处采样的数据点数。
Sum 采样的所有数据点的指标值之和。
Average 采样的数据点的平均指标值。 平均值 = 总和/计数。
Minimum 采样的所有数据点的指标值的最小值。
Maximum 采样的所有数据点的指标值的最大值。
MediaStreamDirection 媒体流的方向。 可以是 sendreceive
MediaStreamType 媒体流的类型。 可以是 videoaudioscreen
MediaStreamCodec 用于对媒体流进行编码/解码的编解码器,例如 H264OPUSVP8 等。
ParticipantId 生成的用于表示呼叫中每个终结点的唯一 ID。
ClientInstanceId 表示在呼叫 SDK 中创建的呼叫客户端对象的唯一 ID。
EndpointId 表示连接到呼叫的每个终结点的唯一 ID。 对于本机客户端,可在跨多个呼叫 (callIds) 为同一用户保留 EndpointId,但当客户端是 Web 浏览器时,该属性值对于每个呼叫都是唯一的。 此日志中当前未检测 EndpointId。 实现后,它将匹配 CallSummary/Diagnostics 日志中的值
RemoteParticipantId 表示媒体流中远程终结点的唯一 ID。 例如,用户可以在同一呼叫中为其他用户呈现多个视频流。 每个视频流都有不同的 RemoteParticipantId
RemoteEndpointId EndpointId 相同,但它表示流远程端的用户。
MediaStreamId 一个唯一 ID,表示呼叫中的每个媒体流。 MediaStreamId 当前未在客户端中检测。 实现后,它将匹配 CallDiagnostics 日志中的 streamId 列。
AggregationIntervalSeconds 聚合媒体统计信息的时间间隔。 目前在通话 SDK 中,媒体指标每 1 秒采样一次,在日志中报告时,我们每 10 秒聚合所有样本。 因此,此表中的每一行最多有 10 个采样点。

各种呼叫类型的示例数据

P2P 和群组通话的呼叫客户端媒体统计信息日志

对于呼叫客户端媒体统计信息时序日志,P2P 和群组通话方案之间没有区别。 日志数量由 SDK 操作和通话持续时间决定。 以下代码是一个显示这些日志架构的泛型示例。

呼叫客户端媒体统计信息时序日志

这里是媒体统计信息时序日志的示例。 它显示参与者的抖动指标,用于在特定时间戳处接收音频流。

"properties": {
    "TenantId":                     "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "TimeGenerated":                "2024-01-10T07:36:51.771Z",
    "OperationName":                "CallClientMediaStatsTimeSeries" ,  
    "CallId":                       "92d800c4-abde-40be-91e9-3814ee786b19", 
    "CallClientTimeStamp":          "2024-01-09T15:07:56.066Z",
    "MetricName":                   "JitterInMs",
    "Count":                        "2",
    "Sum":                          "34",
    "Average":                      "17",
    "Minimum":                      "10",
    "Maximum":                      "25",
    "MediaStreamDirection":         "recv",
    "MediaStreamType":              "audio",
    "MediaStreamCodec":             "OPUS",
    "ParticipantId":                "2656fd6c-6d4a-451d-a1a5-ce1baefc4d5c",
     "ClientInstanceId":            "d08a3d05-db90-415f-88a7-87ae74edc1dd",
    "AggregationIntervalSeconds":   "10",
    "Type":                         "ACSCallClientMediaStatsTimeSeries"
}

每个参与者可以有许多不同的呼叫媒体统计信息指标。 可以在 Azure 门户的 Log Analytics 中运行以下查询,以显示此日志中的所有可能指标:

ACSCallClientMediaStatsTimeSeries | distinct MetricName

常见问题解答

如何存储日志?

以下部分将对这一要求进行说明。

默认情况下,Azure 通信服务日志不会存储在 Azure 帐户中,因此你需要开始存储这些日志,以便“语音和视频见解”仪表板通话诊断等工具正常工作。 要收集这些呼叫日志,需要启用将呼叫数据定向到 Log Analytics 工作区的诊断设置。

数据不会进行追溯性存储,因此仅在配置诊断设置后开始捕获呼叫日志。

按照在 Azure Monitor 中通过诊断设置启用日志为资源添加诊断设置。 建议最初收集所有日志。 了解 Azure Monitor 中的功能后,确定要保留哪些日志以及要保留多长时间。 添加诊断设置时,系统会提示你选择日志。 若要收集所有日志,请选择“allLogs”

Azure Monitor 的 Log Analytics 中的数据量、保留期和使用情况通过现有的 Azure 数据计量计费。 出于成本考虑,建议根据需要监视数据使用情况和保留策略。 有关详细信息,请参阅控制成本

如果你有多个 Azure 通信服务资源 ID,则必须为每个资源 ID 启用这些设置。

后续步骤