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

通话指标日志架构

本文档解释了通过 Azure Monitor 以资源日志的形式提供给 ACSCallingMetrics 日志。

语音和视频见解仪表板中使用通话指标日志,根据各种操作的成功和失败通话 SDK API 通话的计数,可视化可靠性、质量和性能的长期图形。 使用这些日志可以更清楚地了解通信工作负载在各个维度上的每日汇总通话指标。 通话指标日志包含基于 SDK 版本、OS 名称和错误子代码等属性,按每日时间区间汇总的通话指标。

如何使用通话日志

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

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

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

数据概念

重要

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

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

这些指标在语音和视频见解仪表板中可视化,如果想构建自己的仪表板或自定义现有仪表板,建议查看这些视觉对象,以了解如何使用这些数据。 可以在语音和视频见解仪表板中编辑现有工作簿,以查看每个视觉对象背后的查询。

此日志模式有名为 MetricName 的属性,详细说明了在此架构中发送的各种指标。 指标分为两大类,API 指标面向用户的诊断 (UFD) 指标。 UFD 指标进一步分为两组,说明了 UFD 发生的数量以及在通话过程中 UFD 从这些事件中恢复的情况。

由于这些指标提供了整个通话资源的概述,因此如果指标下降,可以设置自动警报。 要了解如何设置自动警报,请参阅:教程:为 Azure 资源创建日志搜索警报

指标类别

API 指标

这些指标度量通话 SDK 公共 API 的成功和失败 (dcount),例如(静音、加入等)。

  • reliability/api/CreateView/Local
  • reliability/api/Join
  • reliability/api/StartVideo
  • reliability/api/AcceptIncomingCall
  • reliability/api/CreateView/Remote
  • reliability/api/StopVideo
  • reliability/api/CallAgentInit
  • reliability/api/StartCall

面向用户的诊断 (UFD) 指标

面向用户的诊断 (UFD) 支线指标:(通话期间至少有一个不良 UFD 的参与者(直线)dcount)

提供通话中受 UFD 影响的参与者数量。

  • reliability/leg/UFD/NetworkReconnect
  • reliability/leg/UFD/CameraStoppedUnexpectedly
  • reliability/leg/UFD/MicrophoneMuteUnexpectedly
  • reliability/leg/UFD/NetworkReceiveQuality
  • reliability/leg/UFD/MicrophonePermissionDenied
  • reliability/leg/UFD/MicrophoneNotFunctioning
  • reliability/leg/UFD/NoMicrophoneDevicesEnumerated
  • reliability/leg/UFD/CameraPermissionDenied
  • reliability/leg/UFD/CameraStartFailed
  • reliability/leg/UFD/CapturerStoppedUnexpectedly
  • reliability/leg/UFD/CapturerStartFailed
  • reliability/leg/UFD/CameraStartTimedOut
  • reliability/leg/UFD/NoSpeakerDevicesEnumerated
  • reliability/leg/UFD/CameraFreeze
  • reliability/leg/UFD/NetworkRelaysNotReachable
  • reliability/leg/UFD/SpeakingWhileMicrophoneIsMuted
  • reliability/leg/UFD/NoNetwork
  • reliability/leg/UFD/NetworkSendQuality
  • reliability/leg/UFD/ScreenshareRecordingDisabled

面向用户的诊断 (UFD) API 恢复指标:(发生问题但在通话期间恢复的事件 dcount)

提供通话 SDK 在通话期间触发但随后在通话期间恢复的 UFD 数量的计数。 例如,如果在通话中触发 NetworkReconnect UFD 一次,但网络在通话期间成功恢复。 在本例中,良好 API 恢复 UFD 的计数 ≥ 不良 UFD 支线指标的计数。 可以计算出 UFD 的恢复率为 100%。

  • reliability/api/UFD/recovery/NetworkReceiveQuality
  • reliability/api/UFD/recovery/NetworkReconnect
  • reliability/api/UFD/recovery/CameraStoppedUnexpectedly
  • reliability/api/UFD/recovery/NetworkSendQuality
  • reliability/api/UFD/recovery/MicrophoneMuteUnexpectedly
  • reliability/api/UFD/recovery/MicrophoneNotFunctioning
  • reliability/api/UFD/recovery/CapturerStoppedUnexpectedly
  • reliability/api/UFD/recovery/CameraFreeze
  • reliability/api/UFD/recovery/CameraStartFailed
  • reliability/api/UFD/recovery/NoMicrophoneDevicesEnumerated
  • reliability/api/UFD/recovery/MicrophonePermissionDenied
  • reliability/api/UFD/recovery/CameraPermissionDenied
  • reliability/api/UFD/recovery/NoSpeakerDevicesEnumerated
  • reliability/api/UFD/recovery/CapturerStartFailed
  • reliability/api/UFD/recovery/ScreenshareRecordingDisabled
  • reliability/api/UFD/recovery/NoNetwork
  • reliability/api/UFD/recovery/CameraStartTimedOut
  • reliability/api/UFD/recovery/SpeakingWhileMicrophoneIsMuted
  • reliability/api/UFD/recovery/NetworkRelaysNotReachable

数据定义

通话指标日志架构

下表描述了每个属性。

properties 说明
TimeGenerated 生成日志的时间戳 (UTC)。
OperationName 与日志记录相关联的操作。
OperationVersion 与操作关联的 API 版本。 或者操作的版本(如果没有 API 版本)。
Category 事件的日志类别。 具有相同日志类别和资源类型的日志共享相同的属性字段。
CorrelationId 唯一 GUID,用于关联同一维度上的事件。
TimestampMax 每个维度的 UTC 最大时间戳。
TimestampBin 每个维度的每日时间戳区间。
MetricValueAvg 每个维度的指标平均值。
Unit 指标单位。
Goal 为支线成功定义的阈值。
FailedLegsDcount 每个维度的失败参与者(支线)数量。
SuccessLegsDcount 每个维度的成功参与者(支线)计数。
CallsDcount 每个维度的通话总数。
LegsDcount 每个维度的参与者(支线)总数。
SubCode 指示子代码的维度。
CallType 指示通话类型的维度。
Platform 平台维度(例如,iOS、Android、Windows)。
ResultType 结果类型维度(例如,成功或失败类别)。
DeviceModel 指示设备型号的维度。
DeviceBrand 指示设备品牌的维度。
DeviceFamily 指示设备系列的维度。
DeviceOsVersionMajor 设备操作系统的主要版本号。
DeviceOsVersionMinor 设备操作系统的次要版本号。
DeviceBrowserVersionMinor 设备浏览器的次要版本号。
DeviceBrowserVersionMajor 设备浏览器的主要版本号。
DeviceOsName 设备操作系统的名称。
DeviceBrowser 设备浏览器的名称。
SdkVersion 客户端上运行的 SDK 版本。
MetricName 被度量的指标的名称。

各种通话类型的示例数据

P2P 和组通话的通话指标日志

对于通话指标日志,P2P 和组通话应用场景之间没有区别。 以下代码是一个显示这些日志架构的泛型示例。

通话指标日志

以下是通话指标日志的两行示例:

"properties": {
  "TenantId": "4e7403f8-515a-4df5-8e13-59f0e2b76e3a",
  "TimeGenerated": "2025-02-03T05:17:39.1840000Z",
  "OperationName": "CallingMetrics",
  "OperationVersion": "1.0-dev",
  "Category": "CallingMetrics",
  "CorrelationId": "1f27dac9e6d64c82cafdd6da73cdb785",
  "TimestampMax": "2025-02-02T14:35:55.0000000Z",
  "TimestampBin": "2025-02-02T00:00:00.0000000Z",
  "MetricValueAvg": 100,
  "Unit": "percentage",
  "Goal": ">= 100.0",
  "FailedLegsDcount": 0,
  "SuccessLegsDcount": 2,
  "CallsDcount": 1,
  "LegsDcount": 2,
  "SubCode": 0,
  "CallType": "1 to 1",
  "Platform": "Web",
  "ResultType": "Succeeded",
  "DeviceModel": "",
  "DeviceBrand": "",
  "DeviceFamily": "Other",
  "DeviceOsVersionMajor": "",
  "DeviceOsVersionMinor": 10,
  "DeviceBrowserVersionMinor": 0,
  "DeviceBrowserVersionMajor": 132,
  "DeviceOsName": "Windows",
  "DeviceBrowser": "Edge",
  "SdkVersion": "1.32.1.0_stable",
  "MetricName": "reliability/leg/UFD/CameraStoppedUnexpectedly",
  "SourceSystem": "",
  "Type": "ACSCallingMetrics",
  "_ResourceId": "/subscriptions/50ad1522-5c2c-4d9a-a6c8-67c11ecb75b8/resourcegroups/calling-sample-apps/providers/microsoft.communication/communicationservices/corertc-test-apps"
}
"properties": {
  "TenantId": "4e7403f8-515a-4df5-8e13-59f0e2b76e3a",
  "TimeGenerated": "2025-02-03T05:17:39.1840000Z",
  "OperationName": "CallingMetrics",
  "OperationVersion": "1.0-dev",
  "Category": "CallingMetrics",
  "CorrelationId": "1f27dac9e6d64c82cafdd6da73cdb785",
  "TimestampMax": "2025-02-02T14:35:55.0000000Z",
  "TimestampBin": "2025-02-02T00:00:00.0000000Z",
  "MetricValueAvg": 100,
  "Unit": "percentage",
  "Goal": ">= 100.0",
  "FailedLegsDcount": 0,
  "SuccessLegsDcount": 2,
  "CallsDcount": 1,
  "LegsDcount": 2,
  "SubCode": 0,
  "CallType": "1 to 1",
  "Platform": "Web",
  "ResultType": "Succeeded",
  "DeviceModel": "",
  "DeviceBrand": "",
  "DeviceFamily": "Other",
  "DeviceOsVersionMajor": "",
  "DeviceOsVersionMinor": 10,
  "DeviceBrowserVersionMinor": 0,
  "DeviceBrowserVersionMajor": 132,
  "DeviceOsName": "Windows",
  "DeviceBrowser": "Edge",
  "SdkVersion": "1.32.1.0_stable",
  "MetricName": "reliability/leg/UFD/CameraStoppedUnexpectedly",
  "SourceSystem": "",
  "Type": "ACSCallingMetrics",
  "_ResourceId": "/subscriptions/50ad1522-5c2c-4d9a-a6c8-67c11ecb75b8/resourcegroups/calling-sample-apps/providers/microsoft.communication/communicationservices/corertc-test-apps"
}

常见问题解答

如何存储日志?

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

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

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

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

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

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

后续步骤