Azure Communication Services 음성 통화 및 영상 통화 로그
Azure Communication Services는 Communication Services 솔루션을 모니터링하고 디버깅하는 데 사용할 수 있는 로깅 기능을 제공합니다. Azure Portal을 통해 이러한 기능을 구성합니다.
이 문서의 내용은 Azure Monitor를 통해 사용하도록 설정된 로그를 참조합니다(FAQ 참조). 이러한 로그를 Communication Services에 사용하도록 설정하려면 진단 설정에서 로깅 사용을 참조하세요.
데이터 개념
다음과 같은 데이터 개념에 대한 개략적인 설명은 음성 통화 및 영상 통화와 관련이 있습니다. 로그에 캡처된 데이터의 의미를 이해할 수 있도록 이러한 개념을 검토해야 합니다.
엔터티 및 ID
다음 용어를 숙지하세요.
통화: 데이터에 표시된 대로 통화는
correlationId
로 표시되는 추상적 개념입니다.correlationId
값은 각 통화마다 고유하며callStartTime
및callDuration
을 기반으로 시간 제한됩니다.참가자: 엔드포인트와 서버 간의 연결을 나타냅니다. 참가자(
participantId
)는 통화가 그룹 통화인 경우에만 있습니다.엔드포인트:
endpointId
로 표시되는 가장 고유한 엔터티입니다. 모든 통화는 둘 이상의 엔드포인트의 데이터를 포함하는 이벤트입니다. 엔드포인트는 통화의 참가자를 나타냅니다.EndpointType
은 엔드포인트가 인간 사용자(PSTN 또는 VoIP)인지, 봇인지 또는 통화 내에서 여러 참가자를 관리하는 서버인지를 알려줍니다.endpointType
값이"Server"
이면 고유 ID가 엔드포인트에 할당되지 않습니다.endpointType
및endpointId
값의 수를 분석하여 통화에 참여하는 사용자 및 인간이 아닌 기타 참가자(봇 및 서버)의 수를 확인할 수 있습니다.Android 및 iOS용 네이티브 SDK는 여러 통화에서 사용자에 대해 동일한
endpointId
값을 다시 사용하므로 세션 간 환경을 이해할 수 있습니다. 이 프로세스는 각각의 새 통화에 대해 항상 새endpointId
값을 생성하는 웹 기반 엔드포인트와 다릅니다.스트림: 가장 세분화된 엔터티입니다. 각 방향(인바운드 또는 아웃바운드) 및
mediaType
값(예:Audio
또는Video
)에 대해 하나의 스트림이 있습니다.
데이터 정의
사용 현황 로그 스키마
속성 | 설명 |
---|---|
Timestamp |
로그가 생성된 시점의 타임스탬프(UTC)입니다. |
Operation Name |
로그 레코드와 연결된 작업입니다. |
Operation Version |
Operation Name 작업이 API를 통해 수행된 경우 작업과 연결된 api-version 값입니다. 이 작업에 해당하는 API가 없으면 나중에 작업과 관련된 속성이 변경될 경우 버전이 작업의 버전을 나타냅니다. |
Category |
이벤트의 로그 범주입니다. 범주는 리소스에 대한 로그를 사용 또는 사용하지 않도록 설정할 수 있는 세분성입니다. 이벤트의 properties Blob 내에 나타나는 속성은 로그 범주 및 리소스 종류 내에서 동일합니다. |
Correlation ID |
상관 관계가 있는 이벤트의 ID입니다. 이 속성을 사용하여 여러 테이블 간의 상관 관계가 있는 이벤트를 식별할 수 있습니다. |
Properties |
다양한 Communication Services 모드에 적용할 수 있는 기타 데이터입니다. |
Record ID |
사용량 레코드에 대한 고유 ID입니다. |
Usage Type |
사용량 모드(예: 채팅, PSTN, NAT)입니다. |
Unit Type |
사용량의 기준이 되는 단위 유형(예: 분, 메가바이트 또는 메시지 수)입니다. |
Quantity |
이 레코드에 사용된 단위 수입니다. |
통화 요약 로그 스키마
통화 요약 로그에는 모든 통화의 주요 속성을 식별하는 데 도움이 되는 데이터가 포함됩니다. 통화의 각 participantId
(또는 P2P[피어 투 피어] 통화의 경우 endpointId
) 값에 대해 서로 다른 통화 요약 로그가 만들어집니다.
Important
통화 요약 로그의 참가자 정보는 참가자 테넌트에 따라 달라집니다. 참가자가 Communication Services 리소스와 동일한 테넌트(테넌트 간이라고도 함) 내에 있지 않으면 SDK 버전 및 OS 버전이 수정됩니다. 테넌트 간 참가자는 통화 중에 참여하고 협업하기 위해 리소스 테넌트에서 초대한 외부 사용자로 분류됩니다.
속성 | 설명 |
---|---|
time |
로그가 생성된 시점의 타임스탬프(UTC)입니다. |
operationName |
로그 레코드와 연결된 작업입니다. |
operationVersion |
operationName 작업이 API를 통해 수행된 경우 작업과 연결된 api-version 값입니다. 이 작업에 해당하는 API가 없으면 나중에 작업과 관련된 속성이 변경될 경우 버전이 작업의 버전을 나타냅니다. |
category |
이벤트의 로그 범주입니다. 이 속성은 리소스에 대한 로그를 사용하도록 사용하지 않도록 설정할 수 있는 세분성입니다. 이벤트의 properties Blob 내에 나타나는 속성은 로그 범주 및 리소스 종류 내에서 동일합니다. |
correlationId |
통화에 대한 고유 ID입니다. 단일 통화 중에 연결하는 모든 참가자 및 엔드포인트의 상관 관계가 있는 이벤트를 식별하며 다른 로그의 데이터를 조인하는 데 사용할 수 있습니다. Microsoft에서 지원 사례를 열어야 하는 경우 correlationId 값을 사용하여 문제를 해결하려는 통화를 쉽게 식별할 수 있습니다. |
identifier |
사용자에 대한 고유한 ID. ID는 Azure Communication Services 사용자, Microsoft Entra 사용자 ID, Teams 익명 사용자 ID 또는 Teams 봇 ID일 수 있습니다. 이 ID를 사용하여 로그 전체에서 사용자 이벤트의 상관 관계를 지정할 수 있습니다. |
callStartTime |
엔드포인트에서 첫 번째 시도된 연결을 기준으로 하는 통화 시작에 대한 타임스탬프입니다. |
callDuration |
두 엔드포인트 간의 처음으로 시도된 연결과 마지막 연결의 끝을 기준으로 하는 통화 지속 기간(초)입니다. |
callType |
통화 유형입니다. "P2P" 또는 "Group" 을 포함합니다. "P2P" 통화는 서버가 아닌 두 엔드포인트 간의 직접 1:1 연결입니다. "Group" 통화는 3개 이상의 엔드포인트가 있거나 연결 전에 "Group" 통화로 만들어지는 통화입니다. |
teamsThreadId |
Teams 스레드 ID입니다. 이 ID는 통화가 Teams 모임으로 구성된 경우에만 관련이 있습니다. 그런 다음, Microsoft Teams와 Azure Communication Services 간의 상호 운용성 사용 사례를 나타냅니다. 이 ID는 작업 로그에 표시됩니다. 채팅 API를 통해 이 ID를 가져올 수도 있습니다. |
participantId |
이 ID는 "Participant" 엔드포인트(endpointType = "Server" )와 서버 간의 양방향 연결을 나타내기 위해 생성됩니다. callType = "P2P" 인 경우 두 엔드포인트 간의 직접적인 연결이 있으며 participantId 값이 생성되지 않습니다. |
participantStartTime |
참가자의 첫 번째 연결 시도 시작에 대한 타임스탬프입니다. |
participantDuration |
participantStartTime 부터 연결이 종료된 타임스탬프까지의 각 참가자 연결 기간(초)입니다. |
participantEndReason |
참가자 연결이 종료된 이유입니다. 여기에는 SDK에서 각 participantId 값에 대해 내보내는 통화 SDK 오류 코드(관련이 있는 경우)가 포함됩니다. |
endpointId |
통화에 연결된 각 엔드포인트를 나타내는 고유 ID입니다. 여기서 endpointType 은 엔드포인트 유형을 정의합니다. 값이 null 이면 연결된 엔터티가 Communication Services 서버(endpointType = "Server" )입니다. 경우에 따라 네이티브 클라이언트에 대한 여러 통화( correlationId )에서 동일한 사용자에 대해 endpointId 값이 지속될 수 있습니다. endpointId 값의 수에 따라 통화 요약 로그의 수가 결정됩니다. 각 endpointId 값에 대해 고유한 요약 로그가 만들어집니다. |
endpointType |
이 값은 통화에 연결된 각 엔드포인트의 속성을 설명합니다. "Server" , "VOIP" , "PSTN" , "BOT" 또는 "Unknown" 을 포함할 수 있습니다. |
sdkVersion |
각 관련 엔드포인트에서 사용하는 Communication Services 통화 SDK 버전에 대한 버전 문자열입니다(예: "1.1.00.20212500" ). |
osVersion |
각 엔드포인트 디바이스의 운영 체제와 버전을 나타내는 문자열입니다. |
participantTenantId |
참가자의 ID와 연결된 Microsoft 테넌트의 ID입니다. 테넌트는 Azure Communication Services 리소스를 소유하는 Azure 테넌트이거나 Microsoft 365 ID의 Microsoft 테넌트일 수 있습니다. 이 필드는 테넌트 간 편집을 안내하는 데 사용됩니다. |
participantType |
참가자를 클라이언트(Azure Communication Services 또는 Teams)와 해당 ID(Azure Communication Services 또는 Microsoft 365)의 조합으로 나타내는 설명입니다. 가능한 값은 다음과 같습니다. Azure Communication Services(Azure Communication Services ID 및 Azure Communication Services SDK), Teams(Teams ID 및 Teams 클라이언트), Teams 외부 사용자로서의 Azure Communication Services(Teams 통화 또는 모임의 Azure Communication Services ID 및 Azure Communication Services SDK), Microsoft 365 사용자로서의 Azure Communication Services(Microsoft 365 ID 및 Azure Communication Services 클라이언트) 및 Teams Voice Apps |
pstnPartcipantCallType |
긴급 통화, 직접 라우팅, 전송, 전달 등을 포함한 PSTN 참가자의 유형과 방향을 나타냅니다. |
ParticipantEndSubCode |
SDK가 각 participantId 값에 대해 내보내는(관련된 경우) 통화 SDK 오류 하위 코드를 나타냅니다. |
ResultCategory |
통화를 종료한 참가자의 범주를 나타냅니다. Success, ExpectedError, UnexpectedClientError, UnexpectedServerError의 4가지 값 중 하나일 수 있습니다. |
통화 진단 로그 스키마
통화 진단 로그는 각 참가자의 엔드포인트 및 미디어 전송에 대한 중요한 정보를 제공합니다. 또한 품질 문제를 이해하는 데 도움이 되는 측정값도 제공합니다.
통화 내의 각 엔드포인트에서는 각 엔드포인트 간의 아웃바운드 미디어 스트림(예: 오디오 또는 비디오)에 대한 고유한 통화 진단 로그가 만들어집니다. P2P 통화에서 각 로그에는 각 엔드포인트와 연결된 각 아웃바운드 스트림과 관련된 데이터가 포함됩니다. 그룹 통화에서 participantId
는 관련된 아웃바운드 로그를 고유한 참가자 연결에 조인하는 키 식별자 역할을 합니다. 통화 진단 로그는 그대로 유지되며 참가자 테넌트에 관계없이 동일합니다.
참고 항목
이 문서에서 P2P 및 그룹 통화는 기본적으로 모든 테넌트 간 통화 시나리오에서 동일한 테넌트 내에 있습니다. 문서 전체에서 이에 따라 적절하게 지정됩니다.
속성 | 설명 |
---|---|
operationName |
로그 레코드와 연결된 작업입니다. |
operationVersion |
operationName 작업이 API를 통해 수행된 경우 작업과 연결된 api-version 값입니다. 이 작업에 해당하는 API가 없으면 나중에 작업과 관련된 속성이 변경될 경우 버전이 작업의 버전을 나타냅니다. |
category |
이벤트의 로그 범주입니다. 이 속성은 리소스에 대한 로그를 사용하도록 사용하지 않도록 설정할 수 있는 세분성입니다. 이벤트의 properties Blob 내에 나타나는 속성은 로그 범주 및 리소스 종류 내에서 동일합니다. |
correlationId |
통화에 대한 고유 ID입니다. 단일 통화 중에 연결되는 모든 참가자와 엔드포인트의 상관 관계가 있는 이벤트를 식별합니다. Microsoft에서 지원 사례를 열어야 하는 경우 correlationId 값을 사용하여 문제를 해결하려는 통화를 쉽게 식별할 수 있습니다. |
participantId |
이 ID는 "Participant" 엔드포인트(endpointType = "Server" )와 서버 간의 양방향 연결을 나타내기 위해 생성됩니다. callType = "P2P" 인 경우 두 엔드포인트 간의 직접적인 연결이 있으며 participantId 값이 생성되지 않습니다. |
identifier |
사용자에 대한 고유한 ID. ID는 Azure Communication Services 사용자, Microsoft Entra 사용자 ID, Teams 개체 ID 또는 Teams 봇 ID일 수 있습니다. 이 ID를 사용하여 로그 전체에서 사용자 이벤트의 상관 관계를 지정할 수 있습니다. |
endpointId |
통화에 연결된 각 엔드포인트를 나타내는 고유 ID입니다. 여기서 endpointType 은 엔드포인트 유형을 정의합니다. 값이 null 이면 연결된 엔터티가 Communication Services 서버입니다. EndpointId 는 네이티브 클라이언트에 대한 여러 통화(correlationId )에서 동일한 사용자에 대해 지속될 수 있지만, 클라이언트가 웹 브라우저인 경우 모든 통화에 대해 고유합니다. |
endpointType |
각 endpointId 인스턴스의 속성을 설명하는 값입니다. "Server" , "VOIP" , "PSTN" , "BOT" , "Voicemail" , "Anonymous" 또는 "Unknown" 을 포함할 수 있습니다. |
mediaType |
각 스트림 내의 엔드포인트 간에 전송되는 미디어 유형을 설명하는 문자열 값입니다. 가능한 값은 "Audio" , "Video" , "VBSS" (비디오 기반 화면 공유) 및 "AppSharing" 입니다. |
streamId |
mediaType 과 함께 동일한 participantId 값의 스트림을 고유하게 식별하는 데 사용할 수 있는 고유하지 않은 정수입니다. |
transportType |
각 participantId 값에 대한 네트워크 전송 프로토콜을 설명하는 문자열 값입니다. "UDP" , "TCP" 또는 "Unrecognized" 를 포함할 수 있습니다. "Unrecognized" 는 시스템에서 전송 유형이 TCP인지 UDP인지 확인할 수 없음을 나타냅니다. |
roundTripTimeAvg |
IP 패킷을 participantDuration 기간 내에 한 엔드포인트에서 다른 엔드포인트로 가져오는 데 걸리는 평균 시간입니다. 이 네트워크 전파 지연은 두 지점 간의 물리적 거리, 빛의 속도, 다양한 라우터에서 서로 간에 받아들이는 오버헤드와 관련이 있습니다. 대기 시간은 단방향 시간 또는 RTT(왕복 시간)로 측정됩니다. 해당 값은 밀리초 단위로 표시됩니다. 500ms보다 큰 RTT는 통화 품질에 부정적인 영향을 미칩니다. |
roundTripTimeMax |
그룹 통화의 participantDuration 기간 동안 또는 P2P 통화의 callDuration 기간 동안 도달 미디어 스트림에 대해 측정된 최대 RTT(밀리초)입니다. |
jitterAvg |
연속 패킷 간의 지연 변화에 대한 평균입니다. Azure Communication Services는 버퍼링을 통해 특정 수준의 지터에 맞게 조정할 수 있습니다. 지터에서 약 30ms보다 큰 jitterAvg 시간에 버퍼링을 초과하면 품질에 부정적인 영향을 줄 수 있습니다. 서로 다른 속도로 도착하는 패킷은 스피커의 음성 소리를 로봇처럼 들리게 합니다. 이 메트릭은 각 미디어 스트림에 대해 그룹 통화의 경우 participantDuration 기간 동안 또는 P2P 통화의 경우 callDuration 기간 동안 측정됩니다. |
jitterMax |
각 미디어 스트림의 패킷 간에 측정된 최대 지터 값입니다. 네트워크 상태의 버스트로 인해 오디오/비디오 트래픽 흐름에서 문제가 발생할 수 있습니다. |
packetLossRateAvg |
손실된 패킷의 평균 백분율입니다. 패킷 손실은 오디오 품질에 직접적인 영향을 미칩니다. 작은 개별 손실 패킷은 거의 영향을 미치지 않는 반면, 연속적인 버스트 손실로 인해 오디오가 완전히 차단됩니다. 패킷이 삭제되어 의도한 대상에 도착하지 않으면 미디어에 간극이 발생합니다. 이 상황으로 인해 음절과 단어가 누락되고 고르지 못한 비디오 및 공유가 발생합니다. 패킷 손실률이 10%(0.1)를 초과하면 품질에 부정적인 영향을 미칠 수 있습니다. 이 메트릭은 각 미디어 스트림에 대해 그룹 통화의 경우 participantDuration 기간 동안 또는 P2P 통화의 경우 callDuration 기간 동안 측정됩니다. |
packetLossRateMax |
이 값은 그룹 통화의 경우 participantDuration 기간 또는 P2P 통화의 경우 callDuration 기간 동안 각 미디어 스트림에 대한 최대 패킷 손실률(백분율)을 나타냅니다. 네트워크 상태의 버스트로 인해 오디오/비디오 트래픽 흐름에서 문제가 발생할 수 있습니다. |
JitterBufferSizeAvg |
각 미디어 스트림 기간 동안에 대한 지터 버퍼의 평균 크기입니다. 지터 버퍼는 음성 패킷을 수집하고, 저장하고 균등한 간격으로 음성 프로세서로 보낼 수 있는 공유 데이터 영역입니다. 지터 버퍼는 지터 효과에 대응하는 데 사용됩니다. 지터 버퍼는 정적이거나 동적일 수 있습니다. 정적 지터 버퍼는 고정 크기로 설정되지만, 동적 지터 버퍼는 네트워크 상태에 따라 크기를 조정할 수 있습니다. 지터 버퍼는 사용자에게 원활하고 중단 없는 오디오 및 비디오 데이터 스트림을 제공하기 위한 것입니다. 웹 SDK에서 이 JitterBufferSizeAvg 값은 통화 중의 jitterBufferDelay 평균값입니다. jitterBufferDelay 는 지터 버퍼에 남아 있는 오디오 샘플 또는 비디오 프레임의 기간입니다. 일반적으로 JitterBufferSizeAvg 값이 200ms보다 크면 품질에 부정적인 영향을 줍니다. |
JitterBufferSizeMax |
각 미디어 스트림 기간 동안 측정된 최대 지터 버퍼 크기입니다. 일반적으로 이 값이 200ms보다 크면 품질에 부정적인 영향을 줍니다. |
HealedDataRatioAvg |
오디오 스트림 기간 중 치료자가 성공적으로 재구성하거나 복구한 손실되거나 손상된 데이터 패킷의 평균 백분율입니다. 치료된 데이터 비율은 VoIP 시스템에서 사용되는 오류 수정 기술의 효율성을 측정하는 척도입니다. 이 값이 0.1(10%)보다 크면 불량한 스트림 품질로 간주됩니다. |
HealedDataRatioMax |
각 미디어 스트림 기간 동안 측정된 최대 치료된 데이터 비율입니다. 이 값이 0.1(10%)보다 크면 불량한 스트림 품질로 간주됩니다. |
VideoFrameRateAvg |
비디오/화면 공유 통화 중에 초당 전송되는 비디오 프레임의 평균 수입니다. 비디오 프레임 속도는 비디오 스트림의 품질과 부드러움에 영향을 미칠 수 있으며, 일반적으로 프레임 속도가 높을수록 동작이 더 부드럽고 유동적입니다. WebRTC 비디오의 표준 프레임 속도는 일반적으로 초당 30개 프레임(fps)이지만, 프레임 속도는 특정 구현 및 네트워크 상태에 따라 달라질 수 있습니다. 이 값이 비디오 스트림의 경우 7 미만이거나 화면 공유 스트림의 경우 1 미만이면 불량한 스트림 품질로 간주됩니다. |
RecvResolutionHeight |
비디오/화면 공유 통화 중에 전송되는 들어오는 비디오 스트림의 평균 수직 크기입니다. 픽셀 단위로 측정되며 비디오 스트림의 전체 해상도와 품질을 결정하는 요소 중 하나입니다. 사용되는 특정 해상도는 통화와 관련된 디바이스 및 네트워크 상태의 성능에 따라 달라질 수 있습니다. 이 값이 비디오 스트림의 경우 240 미만이거나 화면 공유 스트림의 경우 768 미만이면 불량한 스트림 품질로 간주됩니다. |
RecvFreezeDurationPerMinuteInMs |
들어오는 비디오/화면 공유 스트림의 평균 멈춤 기간(분당 밀리초)입니다. 멈춤은 일반적으로 네트워크 상태가 양호하지 못하여 발생하며 스트림 품질이 저하될 수 있습니다. 이 값이 비디오 스트림의 경우 6,000ms보다 크거나 화면 공유 스트림의 경우 25,000ms보다 크면 불량한 스트림 품질로 간주됩니다. |
PacketUtilization |
특정 미디어 스트림에 대해 보내거나 받은 패킷입니다. 일반적으로 통화 시간이 길수록 값이 높아집니다. 이 값이 0이면 미디어가 재생되지 않는다는 의미일 수 있습니다. |
VideoBitRateAvg |
동영상 또는 화면 공유 스트림의 평균 비트 전송률(초당 비트 수)입니다. 낮은 비트 전송률 값은 네트워크 문제가 좋지 않음을 나타낼 수 있습니다. 필요한 최소 비트 전송률(대역폭)은 네트워크 대역폭에서 확인할 수 있습니다. |
VideoBitRateMax |
동영상 또는 화면 공유 스트림의 최대 비트 전송률(초당 비트 수)입니다. 낮은 비트 전송률 값은 네트워크 문제가 좋지 않음을 나타낼 수 있습니다. 필요한 최소 비트 전송률(대역폭)은 네트워크 대역폭에서 확인할 수 있습니다. |
StreamDirection |
미디어 스트림의 방향입니다. 인바운드 또는 아웃바운드입니다. |
CodecName |
미디어 스트림 처리에 사용되는 코덱의 이름입니다. OPUS, G722, H264S, SATIN 등이 될 수 있습니다. |
통화 클라이언트 작업 로그 스키마
통화 클라이언트 작업 로그는 통화와 관련된 통화 엔드포인트 및 참가자에 대한 클라이언트 쪽 정보를 제공합니다. 이러한 로그는 현재 미리 보기에 있으며 통화에서 발생한 클라이언트 이벤트와 고객이 통화 중에 수행한 작업을 보여줍니다.
이 로그는 통화 중에 수행된 작업에 대한 자세한 정보를 제공하며, 통화 진단을 Azure Communication Services 리소스에 사용하여 통화 문제를 시각화하고 조사하는 데 사용할 수 있습니다. 통화 진단에 대해 자세한 정보
속성 | 설명 |
---|---|
CallClientTimeStamp |
SDK에서 작업이 발생한 시점에 대한 타임스탬프(UTC)입니다. |
OperationName |
통화 SDK에서 트리거된 작업의 이름입니다. |
CallId |
통화에 대한 고유 ID입니다. 단일 통화 중에 연결하는 모든 참가자 및 엔드포인트의 상관 관계가 있는 이벤트를 식별하며 다른 로그의 데이터를 조인하는 데 사용할 수 있습니다. 통화 요약 로그 및 통화 진단 로그의 correlationId와 비슷합니다. |
ParticipantId |
각 통화 구간(그룹 통화) 또는 통화 참가자(피어 투 피어 통화)에 대한 고유 식별자입니다. 이 ID는 CallSummary, CallDiagnostic, CallClientOperations 및 CallClientMediaStats 로그 간의 주요 상관 관계 지점입니다. |
OperationType |
통화 클라이언트 작업입니다. |
OperationId |
SDK 작업을 식별하는 고유한 GGUID입니다. |
DurationMs |
통화 SDK 작업이 실패하거나 성공하는 데 걸린 시간입니다. |
ResultType |
작업의 성공 또는 실패를 설명하는 필드입니다. |
ResultSignature |
실패 또는 성공 코드(200, 500)와 같은 HTTP입니다. |
SdkVersion |
사용 중인 통화 SDK 버전입니다. |
UserAgent |
브라우저 또는 플랫폼 통화 SDK를 기반으로 하는 표준 사용자 에이전트 문자열이 사용됩니다. |
ClientInstanceId |
CallClient 개체를 식별하는 고유한 GGUID입니다. |
EndpointId |
통화에 연결된 각 엔드포인트를 나타내는 고유 ID입니다. 여기서 endpointType은 엔드포인트 유형을 정의합니다. 값이 null이면 연결된 엔터티는 Communication Services 서버(endpointType = "Server")입니다. 경우에 따라 네이티브 클라이언트에 대한 여러 통화(correlationId)에서 동일한 사용자에 대해 endpointId 값이 지속될 수 있습니다. endpointId 값의 수에 따라 통화 요약 로그의 수가 결정됩니다. 각 endpointId 값에 대해 고유한 요약 로그가 만들어집니다. |
OperationPayload |
더 많은 작업별 세부 정보를 제공하는 작업에 따라 달라지는 동적 페이로드입니다. |
통화 클라이언트 미디어 통계 시계열 로그 스키마
통화 클라이언트 미디어 통계 시계열 로그는 통화에 관련된 개별 참가자 간의 미디어 스트림에 대한 클라이언트 쪽 정보를 제공합니다. 이러한 로그는 현재 제한된 미리 보기로 제공되며 기본 집계 간격 10초로 참가자 간의 오디오, 비디오 및 화면 공유 미디어 증기에 대한 자세한 시계열 데이터를 제공합니다. 로그에는 미디어 스트림 유형, 방향, 코덱 및 비트 전송률 속성(예: max, min, average)에 대한 세분화된 시계열 정보가 포함됩니다.
이 로그는 참가자 간의 미디어 스트림 품질을 이해하기 위해 통화 진단 로그보다 더 자세한 정보를 제공합니다. Azure Communication Services 리소스에 대한 통화 진단을 통해 통화에 대한 품질 문제를 시각화하고 조사하는 데 사용할 수 있습니다. 통화 진단에 대해 자세한 정보
속성 | 설명 |
---|---|
OperationName |
로그 레코드와 연결된 작업입니다. |
CallId |
통화에 대한 고유 ID입니다. 단일 통화 중에 연결하는 모든 참가자 및 엔드포인트의 상관 관계가 있는 이벤트를 식별하며 다른 로그의 데이터를 조인하는 데 사용할 수 있습니다. 통화 요약 로그 및 통화 진단 로그의 correlationId와 비슷합니다. |
CallClientTimeStamp |
미디어 통계가 기록되는 타임스탬프입니다. |
MetricName |
미디어 통계의 이름(예: Bitrate , JitterInMs PacketsPerSecond 등)입니다. |
Count |
지정된 타임스탬프에서 샘플링된 데이터 포인트의 수입니다. |
Sum |
샘플링된 모든 데이터 포인트의 메트릭 값 합계입니다. |
Average |
샘플링된 데이터 포인트의 평균 메트릭 값입니다. 평균 = 합계/개수. |
Minimum |
샘플링된 모든 데이터 포인트의 최소 메트릭 값입니다. |
Maximum |
샘플링된 모든 데이터 포인트의 최대 메트릭 값입니다. |
MediaStreamDirection |
미디어 스트림의 방향입니다. send 또는 receive 일 수 있습니다. |
MediaStreamType |
미디어 스트림의 형식입니다. video , audio 또는 screen 일 수 있습니다. |
MediaStreamCodec |
미디어 스트림(예: H264 , OPUS , VP8 등)을 인코딩/디코딩하는 데 사용되는 코덱입니다. |
ParticipantId |
통화의 각 엔드포인트를 나타내기 위해 생성되는 고유 ID입니다. |
ClientInstanceId |
통화 SDK에서 만든 통화 클라이언트 개체를 나타내는 고유 ID입니다. |
EndpointId |
통화에 연결된 각 엔드포인트를 나타내는 고유 ID입니다. EndpointId는 네이티브 클라이언트에 대한 여러 통화(callIds )에서 동일한 사용자에 대해 지속될 수 있지만, 클라이언트가 웹 브라우저인 경우 모든 통화에 대해 고유합니다. EndpointId 은 현재 이 로그에서 계측되지 않습니다. 구현되면 CallSummary/Diagnostics 로그의 값과 일치합니다. |
RemoteParticipantId |
미디어 스트림의 원격 엔드포인트를 나타내는 고유 ID입니다. 예를 들어 사용자는 동일한 호출에서 다른 사용자에 대해 여러 비디오 스트림을 렌더링할 수 있습니다. 각 비디오 스트림에는 서로 다른 RemoteParticipantId 가 있습니다. |
RemoteEndpointId |
EndpointId 와 동일하지만 스트림의 원격 쪽에 있는 사용자를 나타냅니다. |
MediaStreamId |
호출의 각 미디어 스트림을 나타내는 고유 ID입니다. MediaStreamId 는 현재 클라이언트에서 계측되지 않습니다. 구현되면 CallDiagnostics 로그의 streamId 열과 일치합니다. |
AggregationIntervalSeconds |
미디어 통계를 집계하기 위한 시간 간격입니다. 현재 통화 SDK에서 미디어 메트릭은 1초마다 샘플링되며 로그에 보고할 때 10초마다 모든 샘플을 집계합니다. 따라서 이 테이블의 각 행에는 최대 10개의 샘플링 지점이 있습니다. |
P2P 통화 및 그룹 통화
callType
으로 표시되는 통화에는 두 가지 유형이 있습니다.
P2P(피어 투 피어) 통화: 서버 엔드포인트 없는 두 엔드포인트 간의 연결입니다. P2P 통화는 이러한 엔드포인트 간의 통화로 시작되며, 연결 전에 그룹 통화 이벤트로 만들어지지 않습니다.
그룹 통화: 3개 이상의 엔드포인트가 연결된 통화입니다. 그룹 통화에는 서버 엔드포인트 및 각 엔드포인트와 서버 간의 연결이 포함됩니다. 통화 중에 다른 엔드포인트를 추가하는 P2P 통화는 더 이상 P2P가 아니며 그룹 통화가 됩니다.
participantStartTime
및participantDuration
메트릭을 사용하여 각 엔드포인트가 통화에 참여한 시점의 타임라인을 확인할 수 있습니다.
로그 구조
Azure Communication Services에서는 다음 4가지 유형의 로그를 만듭니다.
통화 요약 로그: 모든 관련 ID, 타임스탬프, 엔드포인트 및 SDK 정보를 포함하여 통화에 대한 기본 정보를 포함합니다. 통화 내의 각 참가자에 대해 Communication Services에서 고유한 통화 요약 로그를 만듭니다.
다른 사용자가 통화에 다시 참여하면 해당 참가자는 동일한
EndpointId
값을 갖지만 다른ParticipantId
값을 갖습니다. 그러면 해당 엔드포인트에는 두 개의 통화 요약 로그가 있을 수 있습니다.통화 진단 로그: 환경 측정 품질을 나타내는 메트릭 세트와 함께 스트림에 대한 정보를 포함합니다. 통화(서버 포함) 내의 각
EndpointId
에 대해 Azure Communication Services에서 엔드포인트 간의 각 미디어 스트림(예: 오디오 또는 비디오)에 대해 고유한 통화 진단 로그를 만듭니다.통화 클라이언트 작업 로그: 자세한 통화 클라이언트 이벤트를 포함합니다. 이러한 로그 이벤트는 통화의 각
EndpointId
에 대해 생성되며, 생성되는 이벤트 로그 수는 통화 중에 참가자가 수행한 작업에 따라 달라집니다.통화 클라이언트 미디어 통계 로그: 자세한 미디어 스트림 값을 포함합니다. 이러한 로그는 통화의 각 미디어 스트림에 대해 생성됩니다. 통화(서버 포함) 내의 각
EndpointId
에 대해 Azure Communication Services에서 엔드포인트 간의 각 미디어 스트림(예: 오디오 또는 비디오)에 대해 고유한 로그를 만듭니다. 각 로그에서 생성된 데이터의 볼륨은 통화 기간 및 통화 중 미디어 스트림 수에 따라 달라집니다.
P2P 통화에서 각 로그에는 각 엔드포인트와 연결된 각 아웃바운드 스트림과 관련된 데이터가 포함됩니다. 그룹 통화에서 endpointType
= "Server"
에 연결된 각 스트림은 인바운드 스트림에 대한 데이터가 포함된 로그를 만듭니다. 다른 모든 스트림은 서버가 아닌 모든 엔드포인트에 대한 아웃바운드 스트림에 대한 데이터를 포함하는 로그를 만듭니다. 그룹 통화에서 participantId
값을 키로 사용하여 관련된 인바운드 및 아웃바운드 로그를 고유한 참가자 연결에 조인합니다.
예: P2P 통화
다음 다이어그램에서는 P2P 통화에 직접 연결된 두 개의 엔드포인트를 나타냅니다. 이 예에서 Communication Services는 2개의 통화 요약 로그(각 participantID
값에 대해 하나씩)와 4개의 통화 진단 로그(각 미디어 스트림에 대해 하나씩)를 만듭니다.
Azure Communication Services 통화 클라이언트 참가자의 경우 일련의 통화 클라이언트 작업 로그 및 통화 클라이언트 미디어 통계 시계열 로그도 있습니다. 이러한 로그의 정확한 수는 호출되는 SDK 작업의 종류와 통화 시간에 따라 달라집니다.
예: 그룹 통화
다음 다이어그램에서는 3개의 participantId
값(3명 참가자)과 하나의 서버 엔드포인트가 있는 그룹 통화 예를 나타냅니다. endpointId
에 대한 여러 값은 잠재적으로 여러 참가자에게 나타날 수 있습니다(예: 동일한 디바이스에서 통화에 다시 참여하는 경우). Communication Services는 각 participantId
값에 대해 하나의 통화 요약 로그를 만듭니다. 또한 4개의 통화 진단 로그를 만듭니다(participantId
당 각 미디어 스트림에 대해 하나씩).
Azure Communication Services 통화 클라이언트 참가자의 경우 통화 클라이언트 작업 로그는 P2P 통화와 동일합니다. 통화 SDK를 사용하는 각 참가자에 대해 일련의 통화 클라이언트 작업 로그가 있습니다.
Azure Communication Services 통화 클라이언트 작업 로그 및 통화 클라이언트 미디어 통계 시계열 로그는 P2P 통화와 동일합니다. 통화 SDK를 사용하는 각 참가자의 경우 일련의 통화 클라이언트 작업 로그 및 통화 클라이언트 미디어 통계 시계열 로그가 있습니다.
예: 테넌트 간 P2P 통화
다음 다이어그램에서는 P2P 통화에서 직접 연결된 여러 테넌트에 걸친 2명의 참가자를 나타냅니다. 이 예에서 Communication Services는 수정된 OS 및 SDK 버전을 사용하여 하나의 통화 요약 로그(각 참가자에 대해 하나씩)를 만듭니다. 또한 Communication Services는 4개의 통화 진단 로그(각 미디어 스트림에 대해 하나씩)를 만듭니다. 각 로그에는 participantID
의 아웃바운드 스트림과 관련된 데이터가 포함됩니다.
예: 테넌트 간 그룹 통화
다음 다이어그램에서는 여러 테넌트에 걸쳐 3개의 participantId
값이 있는 그룹 통화 예를 나타냅니다. Communication Services는 수정된 OS 및 SDK 버전을 사용하여 각 참가자에 대해 하나의 통화 요약 로그를 만듭니다. 또한 Communication Services는 각 participantId
값(각 미디어 스트림당 하나씩)과 관련된 4개의 통화 진단 로그를 만듭니다.
참고 항목
이 릴리스에서는 아웃바운드 진단 로그만 지원합니다. Communication Services는 참가자와 봇의 ID를 동일한 방식으로 처리하므로 봇 및 참가자와 연결된 OS 및 SDK 버전을 수정할 수 있습니다.
샘플 데이터
P2P 통화
P2P 통화의 모든 로그에 대한 공유 필드는 다음과 같습니다.
"time": "2021-07-19T18:46:50.188Z",
"resourceId": "SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/ACS-TEST-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-PROD-CCTS-TESTS",
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
통화 요약 로그
통화 요약 로그는 작업 및 범주 정보를 공유합니다.
"operationName": "CallSummary",
"operationVersion": "1.0",
"category": "CallSummary",
VoIP 사용자 1에 대한 통화 요약은 다음과 같습니다.
"properties": {
"identifier": "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
"callStartTime": "2021-07-19T17:54:05.113Z",
"callDuration": 6,
"callType": "P2P",
"teamsThreadId": "null",
"participantId": "null",
"participantStartTime": "2021-07-19T17:54:06.758Z",
"participantDuration": "5",
"participantEndReason": "0",
"endpointId": "570ea078-74e9-4430-9c67-464ba1fa5859",
"endpointType": "VoIP",
"sdkVersion": "1.0.1.0",
"osVersion": "Windows 10.0.17763 Arch: x64"
}
VoIP 사용자 2에 대한 통화 요약은 다음과 같습니다.
"properties": {
"identifier": "acs:7af14122-9ac7-4b81-80a8-4bf3582b42d0_06f9276d-8efe-4bdd-8c22-ebc5434903f0",
"callStartTime": "2021-07-19T17:54:05.335Z",
"callDuration": 6,
"callType": "P2P",
"teamsThreadId": "null",
"participantId": "null",
"participantStartTime": "2021-07-19T17:54:06.335Z",
"participantDuration": "5",
"participantEndReason": "0",
"endpointId": "a5bd82f9-ac38-4f4a-a0fa-bb3467cdcc64",
"endpointType": "VoIP",
"sdkVersion": "1.1.0.0",
"osVersion": "null"
}
VoIP 사용자 1에 대한 테넌트 간 통화 요약 로그는 다음과 같습니다.
"properties": {
"identifier": "1e4c59e1-r1rr-49bc-893d-990dsds8f9f5",
"callStartTime": "2022-08-14T06:18:27.010Z",
"callDuration": 520,
"callType": "P2P",
"teamsThreadId": "null",
"participantId": "null",
"participantTenantId": "02cbdb3c-155a-4b95-b829-6d56a45787ca",
"participantStartTime": "2022-08-14T06:18:27.010Z",
"participantDuration": "520",
"participantEndReason": "0",
"endpointId": "02cbdb3c-155a-4d98-b829-aaaaa61d44ea",
"endpointType": "VoIP",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
PSTN 통화에 대한 통화 요약은 다음과 같습니다.
참고 항목
P2P 또는 그룹 통화 로그에는 참가자의 테넌트인지 아니면 봇의 테넌트인지에 관계없이 수정된 OS 및 SDK 버전이 있습니다.
"properties": {
"identifier": "b1999c3e-bbbb-4650-9b23-9999bdabab47",
"callStartTime": "2022-08-07T13:53:12Z",
"callDuration": 1470,
"callType": "Group",
"teamsThreadId": "19:36ec5177126fff000aaa521670c804a3@thread.v2",
"participantId": " b25cf111-73df-4e0a-a888-640000abe34d",
"participantStartTime": "2022-08-07T13:56:45Z",
"participantDuration": 960,
"participantEndReason": "0",
"endpointId": "8731d003-6c1e-4808-8159-effff000aaa2",
"endpointType": "PSTN",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
통화 진단 로그
통화 진단 로그는 작업 정보를 공유합니다.
"operationName": "CallDiagnostics",
"operationVersion": "1.0",
"category": "CallDiagnostics",
VoIP 엔드포인트 1에서 VoIP 엔드포인트 2로의 오디오 스트림에 대한 진단 로그는 다음과 같습니다.
"properties": {
"identifier": "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
"participantId": "null",
"endpointId": "570ea078-74e9-4430-9c67-464ba1fa5859",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "1000",
"transportType": "UDP",
"roundTripTimeAvg": "82",
"roundTripTimeMax": "88",
"jitterAvg": "1",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
VoIP 엔드포인트 2에서 VoIP 엔드포인트 1로의 오디오 스트림에 대한 진단 로그는 다음과 같습니다.
"properties": {
"identifier": "acs:7af14122-9ac7-4b81-80a8-4bf3582b42d0_06f9276d-8efe-4bdd-8c22-ebc5434903f0",
"participantId": "null",
"endpointId": "a5bd82f9-ac38-4f4a-a0fa-bb3467cdcc64",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "1363841599",
"transportType": "UDP",
"roundTripTimeAvg": "78",
"roundTripTimeMax": "84",
"jitterAvg": "1",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
VoIP 엔드포인트 1에서 VoIP 엔드포인트 2로의 비디오 스트림에 대한 진단 로그는 다음과 같습니다.
"properties": {
"identifier": "acs:61fddbe3-0003-4066-97bc-6aaf143bbb84_0000000b-4fee-66cf-ac00-343a0d003158",
"participantId": "null",
"endpointId": "570ea078-74e9-4430-9c67-464ba1fa5859",
"endpointType": "VoIP",
"mediaType": "Video",
"streamId": "2804",
"transportType": "UDP",
"roundTripTimeAvg": "103",
"roundTripTimeMax": "143",
"jitterAvg": "0",
"jitterMax": "4",
"packetLossRateAvg": "3.146336E-05",
"packetLossRateMax": "0.001769911"
}
그룹 통화
그룹 통화에 대한 데이터는 3개의 통화 요약 로그와 6개의 통화 진단 로그로 생성됩니다. 통화의 모든 로그에 대한 공유 필드는 다음과 같습니다.
"time": "2021-07-05T06:30:06.402Z",
"resourceId": "SUBSCRIPTIONS/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/RESOURCEGROUPS/ACS-TEST-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-PROD-CCTS-TESTS",
"correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
통화 요약 로그
통화 요약 로그는 작업 및 범주 정보를 공유합니다.
"operationName": "CallSummary",
"operationVersion": "1.0",
"category": "CallSummary",
VoIP 엔드포인트 1에 대한 통화 요약은 다음과 같습니다.
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-729f-ac00-343a0d00d975",
"callStartTime": "2021-07-05T06:16:40.240Z",
"callDuration": 87,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
"participantId": "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
"participantStartTime": "2021-07-05T06:16:44.235Z",
"participantDuration": "82",
"participantEndReason": "0",
"endpointId": "5ebd55df-ffff-ffff-89e6-4f3f0453b1a6",
"endpointType": "VoIP",
"sdkVersion": "1.0.0.3",
"osVersion": "Darwin Kernel Version 18.7.0: Mon Nov 9 15:07:15 PST 2020; root:xnu-4903.272.3~3/RELEASE_ARM64_S5L8960X"
}
VoIP 엔드포인트 3에 대한 통화 요약은 다음과 같습니다.
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-57c6-ac00-343a0d00d972",
"callStartTime": "2021-07-05T06:16:40.240Z",
"callDuration": 87,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLTk2ZDUtYTZlM2I2ZjgxOTkw@thread.v2",
"participantId": "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
"participantStartTime": "2021-07-05T06:16:40.240Z",
"participantDuration": "87",
"participantEndReason": "0",
"endpointId": "5ebd55df-ffff-ffff-ab89-19ff584890b7",
"endpointType": "VoIP",
"sdkVersion": "1.0.0.3",
"osVersion": "Android 11.0; Manufacturer: Google; Product: redfin; Model: Pixel 5; Hardware: redfin"
}
PSTN 엔드포인트 2에 대한 통화 요약은 다음과 같습니다.
"properties": {
"identifier": "null",
"callStartTime": "2021-07-05T06:16:40.240Z",
"callDuration": 87,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
"participantId": "515650f7-8204-4079-ac9d-d8f4bf07b04c",
"participantStartTime": "2021-07-05T06:17:10.447Z",
"participantDuration": "52",
"participantEndReason": "0",
"endpointId": "46387150-692a-47be-8c9d-1237efe6c48b",
"endpointType": "PSTN",
"sdkVersion": "null",
"osVersion": "null"
}
테넌트 간 통화 요약 로그는 다음과 같습니다.
"properties": {
"identifier": "1e4c59e1-r1rr-49bc-893d-990dsds8f9f5",
"callStartTime": "2022-08-14T06:18:27.010Z",
"callDuration": 912,
"callType": "Group",
"teamsThreadId": "19:meeting_MjZiOTAyN2YtZWU1Yi00ZTZiLT77777OOOOO99999jgxOTkw@thread.v2",
"participantId": "aa1dd7da-5922-4bb1-a4fa-e350a111fd9c",
"participantTenantId": "02cbdb3c-155a-4b95-b829-6d56a45787ca",
"participantStartTime": "2022-08-14T06:18:27.010Z",
"participantDuration": "902",
"participantEndReason": "0",
"endpointId": "02cbdb3c-155a-4d98-b829-aaaaa61d44ea",
"endpointType": "VoIP",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
봇이 참가자로 포함된 테넌트 간 통화 요약 로그는 다음과 같습니다.
"properties": {
"identifier": "b1902c3e-b9f7-4650-9b23-9999bdabab47",
"callStartTime": "2022-08-09T16:00:32Z",
"callDuration": 1470,
"callType": "Group",
"teamsThreadId": "19:meeting_MmQwZDcwYTQtZ000HWE6NzI4LTg1YTAtNXXXXX99999ZZZZZ@thread.v2",
"participantId": "66e9d9a7-a434-4663-d91d-fb1ea73ff31e",
"participantStartTime": "2022-08-09T16:14:18Z",
"participantDuration": 644,
"participantEndReason": "0",
"endpointId": "69680ec2-5ac0-4a3c-9574-eaaa77720b82",
"endpointType": "Bot",
"sdkVersion": "Redacted",
"osVersion": "Redacted"
}
통화 진단 로그
통화 진단 로그는 작업 정보를 공유합니다.
"operationName": "CallDiagnostics",
"operationVersion": "1.0",
"category": "CallDiagnostics",
VoIP 엔드포인트 1에서 서버 엔드포인트로의 오디오 스트림에 대한 진단 로그는 다음과 같습니다.
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-729f-ac00-343a0d00d975",
"participantId": "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
"endpointId": "5ebd55df-ffff-ffff-89e6-4f3f0453b1a6",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "14884",
"transportType": "UDP",
"roundTripTimeAvg": "46",
"roundTripTimeMax": "48",
"jitterAvg": "0",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
서버 엔드포인트에서 VoIP 엔드포인트 1로의 오디오 스트림에 대한 진단 로그는 다음과 같습니다.
"properties": {
"identifier": null,
"participantId": "04cc26f5-a86d-481c-b9f9-7a40be4d6fba",
"endpointId": null,
"endpointType": "Server",
"mediaType": "Audio",
"streamId": "2001",
"transportType": "UDP",
"roundTripTimeAvg": "42",
"roundTripTimeMax": "44",
"jitterAvg": "1",
"jitterMax": "1",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
VoIP 엔드포인트 3에서 서버 엔드포인트로의 오디오 스트림에 대한 진단 로그는 다음과 같습니다.
"properties": {
"identifier": "acs:1797dbb3-f982-47b0-b98e-6a76084454f1_0000000b-1531-57c6-ac00-343a0d00d972",
"participantId": "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
"endpointId": "5ebd55df-ffff-ffff-ab89-19ff584890b7",
"endpointType": "VoIP",
"mediaType": "Audio",
"streamId": "13783",
"transportType": "UDP",
"roundTripTimeAvg": "45",
"roundTripTimeMax": "46",
"jitterAvg": "1",
"jitterMax": "2",
"packetLossRateAvg": "0",
"packetLossRateMax": "0"
}
서버 엔드포인트에서 VoIP 엔드포인트 3으로의 오디오 스트림에 대한 진단 로그는 다음과 같습니다.
"properties": {
"identifier": "null",
"participantId": "1a9cb3d1-7898-4063-b3d2-26c1630ecf03",
"endpointId": null,
"endpointType": "Server"
"mediaType": "Audio",
"streamId": "1000",
"transportType": "UDP",
"roundTripTimeAvg": "45",
"roundTripTimeMax": "46",
"jitterAvg": "1",
"jitterMax": "4",
"packetLossRateAvg": "0",
P2P 통화와 그룹 통화에 대한 통화 클라이언트 작업 로그 및 통화 클라이언트 미디어 통계 로그
통화 클라이언트 작업 로그 및 통화 클라이언트 미디어 통계 시계열 로그의 경우 P2P 통화와 그룹 통화의 시나리오 간에는 차이가 없으며 로그 수는 SDK 작업 및 통화 시간에 따라 달라집니다. 다음 코드는 이러한 로그의 스키마를 보여 주는 일반 샘플입니다.
통화 클라이언트 작업 로그
"CreateView" 작업에 대한 통화 클라이언트 작업 로그는 다음과 같습니다.
"properties": {
"TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"TimeGenerated": "2024-01-09T17:06:50.3Z",
"CallClientTimeStamp": "2024-01-09T15:07:56.066Z",
"OperationName": "CreateView" ,
"CallId": "92d800c4-abde-40be-91e9-3814ee786b19",
"ParticipantId": "2656fd6c-6d4a-451d-a1a5-ce1baefc4d5c",
"OperationType": "client-api-request",
"OperationId": "0d987336-37e0-4acc-aba3-e48741d88103",
"DurationMs": "577",
"ResultType": "Succeeded",
"ResultSignature": "200",
"SdkVersion": "1.19.2.2_beta",
"UserAgent": "azure-communication-services/1.3.1-beta.1 azsdk-js-communication-calling/1.19.2-beta.2 (javascript_calling_sdk;#clientTag:904f667c-5f25-4729-9ee8-6968b0eaa40b). Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"ClientInstanceId": "d08a3d05-db90-415f-88a7-87ae74edc1dd",
"OperationPayload": "{"StreamType":"Video","StreamId":"2.0","Source":"remote","RemoteParticipantId":"remote"}",
"Type": "ACSCallClientOperations"
}
각 참가자에게는 통화에 대한 다양한 메트릭이 있을 수 있습니다. Azure Portal의 Log Analytics에서 다음 쿼리를 실행하여 통화 클라이언트 작업 로그에 가능한 모든 작업을 나열할 수 있습니다.
ACSCallClientOperations | distinct OperationName
통화 클라이언트 미디어 통계 시계열 로그
다음은 미디어 통계 시계열 로그의 예입니다. 특정 타임스탬프에서 오디오 스트림을 수신하기 위한 참가자의 Jitter 메트릭을 보여 줍니다.
"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 Portal의 Log Analytics에서 실행하여 이 로그에 가능한 모든 메트릭을 표시할 수 있습니다.
ACSCallClientMediaStatsTimeSeries | distinct MetricName
오류 코드
participantEndReason
속성에는 통화 SDK 오류 코드 집합의 값이 포함됩니다. 이러한 코드는 각 엔드포인트에 대해 통화 중에 발생하는 문제를 해결하기 위해 참조할 수 있습니다. 통화 SDK, 통화 자동화 SDK, PSTN, 채팅 SDK 및 SMS SDK에 대한 통화 종료 응답 코드 문제 해결을 참조하세요.
다음 단계
음성 통화 및 영상 통화 로그와 메트릭을 모니터링하는 인사이트 대시보드에 대해 알아봅니다.
통화 품질과 안정성을 관리하기 위한 모범 사례를 알아보려면 통화 품질 개선 및 관리를 참조하세요.
통화 로그를 사용하여 통화 진단에서 통화 품질 및 안정성 문제를 진단하는 방법을 알아보려면 통화 진단을 참조하세요.