Esquema de log de diagnóstico de chamadas
Os logs de diagnóstico de chamadas fornecem informações importantes sobre os pontos de extremidade e as transferências de mídia para cada participante. Eles também fornecem medições que ajudam a entender os problemas de qualidade.
Para cada EndpointId
chamada dentro de uma chamada (incluindo o servidor), os Serviços de Comunicação do Azure criam um log de diagnóstico de chamada distinto para cada fluxo de mídia (áudio ou vídeo, por exemplo) entre pontos de extremidade.
Em uma chamada P2P, cada log contém dados relacionados a cada um dos fluxos de saída associados a cada ponto de extremidade. Em chamadas de grupo, participantId
serve como um identificador de chave para unir os logs de saída relacionados em uma conexão de participante distinta. Os logs de diagnóstico de chamadas permanecem intactos e são os mesmos, independentemente do locatário participante.
Como usar os registros de chamadas
Recomendamos que você colete todos os logs de chamadas disponíveis em um recurso de análise de log para que possa monitorar o uso de chamadas e melhorar a qualidade da chamada e receber novos logs dos Serviços de Comunicação do Azure à medida que os lançamos.
Existem duas ferramentas principais que pode utilizar para monitorizar as suas chamadas e melhorar a qualidade das chamadas.
Recomendamos usar os painéis do painel de insights de voz e vídeo para iniciar investigações de qualidade e usar diagnósticos de chamadas, conforme necessário, para explorar chamadas individuais quando precisar de detalhes granulares.
Conceitos de dados
Importante
Você deve coletar logs se quiser analisá-los. Para saber mais, consulte: Como faço para armazenar logs?
O Azure não armazena seus dados de log de chamadas, a menos que você habilite essas Configurações de Diagnóstico específicas. Os dados da sua chamada não estão disponíveis retroativamente. Você acumula dados depois de criar as Configurações de diagnóstico.
Definições de dados
Esquema de log de diagnóstico de chamadas
Esta tabela descreve cada propriedade.
Property | Description |
---|---|
operationName |
A operação associada ao registro de log. |
operationVersion |
O api-version valor associado à operação, se a operação foi executada operationName através de uma API. Se nenhuma API corresponder a esta operação, a versão representa a versão da operação, caso as propriedades associadas à operação mudem no futuro. |
category |
A categoria de log do evento. Essa propriedade é a granularidade na qual você pode habilitar ou desabilitar logs em um recurso. As propriedades que aparecem dentro do properties blob de um evento são as mesmas dentro de uma categoria de log e tipo de recurso. |
correlationId |
O ID exclusivo de uma chamada. Ele identifica eventos correlacionados de todos os participantes e pontos de extremidade que se conectam durante uma única chamada. Se você precisar abrir um caso de suporte com a Microsoft, poderá usar o correlationId valor para identificar facilmente a chamada que está solucionando. |
participantId |
ID gerado para representar a conexão bidirecional entre um "Participant" ponto de extremidade (endpointType = "Server" ) e o servidor. Quando callType = "P2P" , há uma conexão direta entre dois pontos de extremidade e nenhum participantId valor é gerado. |
identifier |
O ID exclusivo para o usuário. A identidade pode ser um usuário dos Serviços de Comunicação do Azure, uma ID de usuário do Microsoft Entra, uma ID de objeto do Teams ou uma ID de bot do Teams. Você pode usar esse ID para correlacionar eventos do usuário em logs. |
endpointId |
A ID exclusiva que representa cada ponto de extremidade conectado à chamada, onde endpointType define o tipo de ponto de extremidade. Quando o valor é null , a entidade conectada é o servidor dos Serviços de Comunicação.
EndpointId pode persistir para o mesmo usuário em várias chamadas (correlationId ) para clientes nativos, mas é exclusivo para cada chamada quando o cliente é um navegador da Web. |
endpointType |
O valor que descreve as propriedades de cada endpointId instância. Pode conter , , , , "BOT" , "Voicemail" "Anonymous" , ou "Unknown" . "PSTN" "VOIP" "Server" |
mediaType |
O valor da cadeia de caracteres que descreve o tipo de mídia que está sendo transmitida entre pontos de extremidade dentro de cada fluxo. Os valores possíveis incluem "Audio" , "Video" , "VBSS" (compartilhamento de tela) e "AppSharing" (canal de dados). |
streamId |
Um inteiro não exclusivo que, juntamente com mediaType o , você pode usar para identificar exclusivamente fluxos do mesmo participantId valor. |
transportType |
O valor da cadeia de caracteres que descreve o protocolo de transporte de rede para cada participantId valor. Pode conter "UDP" , "TCP" , ou "Unrecognized" .
"Unrecognized" indica que o sistema não pôde determinar se o tipo de transporte era TCP ou UDP. |
roundTripTimeAvg |
O tempo médio que leva para obter um pacote IP de um ponto de extremidade para outro dentro de um participantDuration período. Este atraso de propagação da rede está relacionado com a distância física entre os dois pontos, a velocidade da luz e qualquer sobrecarga que os vários routers tenham entre eles. A latência é medida como tempo unidirecional ou tempo de ida e volta (RTT). O seu valor expresso em milissegundos. Um RTT superior a 500 ms está a afetar negativamente a qualidade da chamada. |
roundTripTimeMax |
O RTT máximo (em milissegundos) medido para alcançar o fluxo de mídia durante um participantDuration período em uma chamada em grupo ou durante um callDuration período em uma chamada P2P. |
jitterAvg |
A variação média no atraso entre pacotes sucessivos. Os Serviços de Comunicação do Azure podem se adaptar a alguns níveis de desvio por meio de buffer. Quando o jitter excede o buffering, que é aproximadamente em um jitterAvg momento maior que 30 ms, ele pode afetar negativamente a qualidade. Os pacotes que chegam a velocidades diferentes fazem com que a voz de um alto-falante soe robótica. Essa métrica é medida para cada fluxo de mídia durante o participantDuration período em uma chamada em grupo ou durante o callDuration período em uma chamada P2P. |
jitterMax |
O valor máximo de jitter medido entre pacotes para cada fluxo de mídia. Rajadas nas condições de rede podem causar problemas no fluxo de tráfego de áudio/vídeo. |
packetLossRateAvg |
A porcentagem média de pacotes perdidos. A perda de pacotes afeta diretamente a qualidade do áudio. Pequenos pacotes individuais perdidos quase não têm impacto, enquanto as perdas de burst back-to-back fazem com que o áudio seja cortado completamente. Os pacotes sendo descartados e não chegando ao destino pretendido causam lacunas na mídia. Esta situação resulta em sílabas e palavras perdidas, juntamente com vídeo instável e compartilhamento. Uma taxa de perda de pacotes superior a 10% (0,1) está provavelmente a ter um impacto negativo na qualidade. Essa métrica é medida para cada fluxo de mídia durante o participantDuration período em uma chamada em grupo ou durante o callDuration período em uma chamada P2P. |
packetLossRateMax |
Esse valor representa a taxa máxima de perda de pacotes (porcentagem) para cada fluxo de mídia durante o participantDuration período em uma chamada em grupo ou durante o callDuration período em uma chamada P2P. Rajadas nas condições de rede podem causar problemas no fluxo de tráfego de áudio/vídeo. |
JitterBufferSizeAvg |
O tamanho médio do buffer de jitter ao longo da duração de cada fluxo de mídia. Um buffer de desvio é uma área de dados compartilhada onde os pacotes de voz podem ser coletados, armazenados e enviados para o processador de voz em intervalos uniformemente espaçados. O buffer de desvio é usado para combater os efeitos do desvio. Os buffers de desvio podem ser estáticos ou dinâmicos. Os buffers de jitter estáticos são definidos para um tamanho fixo, enquanto os buffers de jitter dinâmicos podem ajustar seu tamanho com base nas condições da rede. O objetivo do buffer de jitter é fornecer um fluxo suave e ininterrupto de dados de áudio e vídeo para o usuário. No SDK da Web, esse JitterBufferSizeAvg é o valor médio do jitterBufferDelay durante a chamada. A jitterBufferDelay é a duração de uma amostra de áudio ou de um quadro de vídeo que permanece no buffer de desvio. Normalmente, quando JitterBufferSizeAvg o valor é maior que 200 ms, isso afeta negativamente a qualidade. |
JitterBufferSizeMax |
O tamanho máximo do buffer de desvio medido durante a duração de cada fluxo de mídia. Normalmente, quando este valor é superior a 200 ms, afeta negativamente a qualidade. |
HealedDataRatioAvg |
A percentagem média de pacotes de dados perdidos ou danificados reconstruídos ou recuperados com sucesso pelo curandeiro ao longo da duração do fluxo de áudio. Razão de dados curados é uma medida da eficácia das técnicas de correção de erros usadas em sistemas VoIP. Quando este valor é superior a 0,1 (10%), consideramos o fluxo como má qualidade. |
HealedDataRatioMax |
A taxa máxima de dados recuperados medida durante a duração de cada fluxo de mídia. Quando este valor é superior a 0,1 (10%), consideramos o fluxo como má qualidade. |
VideoFrameRateAvg |
O número médio de quadros de vídeo que são transmitidos por segundo durante uma chamada de vídeo/compartilhamento de tela. A taxa de quadros de vídeo pode afetar a qualidade e suavidade do fluxo de vídeo, com taxas de quadros mais altas geralmente resultando em movimento mais suave e fluido. A taxa de quadros padrão para vídeo WebRTC é normalmente de 30 quadros por segundo (fps), embora a taxa de quadros possa variar dependendo da implementação específica e das condições de rede. A qualidade do fluxo é considerada ruim quando esse valor é menor que 7 para fluxo de vídeo ou menor que 1 para fluxo de compartilhamento de tela. |
RecvResolutionHeight |
A média do tamanho vertical do fluxo de vídeo de entrada que é transmitido durante uma chamada de vídeo / compartilhamento de tela. Isso é medido em pixels e é um dos fatores que determina a resolução geral e a qualidade do fluxo de vídeo. A resolução específica utilizada pode depender das capacidades dos dispositivos e das condições de rede envolvidas na chamada. A qualidade do fluxo é considerada fraca quando este valor é inferior a 240 para fluxo de vídeo, ou inferior a 768 para fluxo de partilha de ecrã. |
RecvFreezeDurationPerMinuteInMs |
A duração média do congelamento em milissegundos por minuto para o fluxo de entrada de vídeo / compartilhamento de tela. Os congelamentos são normalmente devidos a más condições de rede e podem degradar a qualidade do fluxo. A qualidade do fluxo é considerada ruim quando esse valor é maior que 6.000 ms para fluxo de vídeo, ou maior que 25.000 ms para fluxo de compartilhamento de tela. |
PacketUtilization |
Os pacotes enviados ou recebidos para um determinado fluxo de mídia. Normalmente, quanto mais longa for a chamada, maior será o valor. Se esse valor for zero, isso pode indicar que a mídia não está fluindo. |
VideoBitRateAvg |
A taxa de bits média (bits por segundo) para um fluxo de vídeo ou compartilhamento de tela. Um valor de taxa de bits baixo pode indicar um problema de rede ruim. A taxa de bits mínima (largura de banda) necessária pode ser encontrada aqui: Largura de banda de rede. |
VideoBitRateMax |
A taxa de bits máxima (bits por segundo) para um fluxo de vídeo ou compartilhamento de tela. Um valor de taxa de bits baixo pode indicar um problema de rede ruim. A taxa de bits mínima (largura de banda) necessária pode ser encontrada aqui: Largura de banda de rede. |
StreamDirection |
A direção do fluxo de mídia. É Inbound ou Outbound. |
CodecName |
O nome do codec usado para processar fluxos de mídia. Pode ser OPUS, G722, H264S, SATIN, e assim por diante. |
Dados de exemplo para vários tipos de chamada
Nota
Neste artigo, as chamadas P2P e de grupo estão dentro do mesmo locatário por padrão. Todos os cenários de chamada que são cross-tenant são especificados de acordo ao longo do artigo.
Chamada P2P
Aqui estão campos compartilhados para todos os logs em uma chamada 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",
Registos de diagnóstico de chamadas
Os logs de diagnóstico de chamadas compartilham informações de operação:
"operationName": "CallDiagnostics",
"operationVersion": "1.0",
"category": "CallDiagnostics",
Aqui está um log de diagnóstico para um fluxo de áudio do ponto de extremidade VoIP 1 para o ponto de extremidade 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"
}
Aqui está um log de diagnóstico para um fluxo de áudio do ponto de extremidade VoIP 2 para o ponto de extremidade 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"
}
Aqui está um log de diagnóstico para um fluxo de vídeo do ponto de extremidade VoIP 1 para o ponto de extremidade 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"
}
Chamada em grupo
Os dados de uma chamada em grupo são gerados em três logs de resumo de chamadas e seis logs de diagnóstico de chamadas. Aqui estão campos compartilhados para todos os logs na chamada:
"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",
Registos de diagnóstico de chamadas
Os logs de diagnóstico de chamadas compartilham informações de operação:
"operationName": "CallDiagnostics",
"operationVersion": "1.0",
"category": "CallDiagnostics",
Aqui está um log de diagnóstico para um fluxo de áudio do ponto de extremidade VoIP 1 para um ponto de extremidade do servidor:
"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"
}
Aqui está um log de diagnóstico para um fluxo de áudio de um ponto de extremidade do servidor para o ponto de extremidade 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"
}
Aqui está um log de diagnóstico para um fluxo de áudio do ponto de extremidade VoIP 3 para um ponto de extremidade do servidor:
"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"
}
Aqui está um log de diagnóstico para um fluxo de áudio de um ponto de extremidade do servidor para o ponto de extremidade 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",
Perguntas mais frequentes
Como faço para armazenar logs?
A secção seguinte explica este requisito.
Os logs dos Serviços de Comunicação do Azure não são armazenados em sua conta do Azure por padrão, portanto, você precisa começar a armazená-los para que ferramentas como informações de voz e vídeo, painel e diagnóstico de chamadas funcionem. Para coletar esses logs de chamadas, você precisa habilitar uma configuração de diagnóstico que direcione os dados da chamada para um espaço de trabalho do Log Analytics.
Os dados não são armazenados retroativamente, portanto, você começa a capturar registros de chamadas somente depois de definir a configuração de diagnóstico.
Siga as instruções para adicionar configurações de diagnóstico para seu recurso em Habilitar logs por meio de Configurações de Diagnóstico no Azure Monitor. Recomendamos que você colete inicialmente todos os logs. Depois de entender os recursos do Azure Monitor, determine quais logs você deseja reter e por quanto tempo. Ao adicionar sua configuração de diagnóstico, você será solicitado a selecionar logs. Para coletar todos os logs, selecione allLogs.
O volume, a retenção e o uso de dados no Log Analytics no Azure Monitor são cobrados por meio de medidores de dados existentes do Azure. Recomendamos que você monitore suas políticas de retenção e uso de dados para considerações de custo, conforme necessário. Para obter mais informações, consulte Controlando custos.
Se você tiver várias IDs de recurso dos Serviços de Comunicação do Azure, deverá habilitar essas configurações para cada ID de recurso.
Próximos passos
Analise a visão geral de todos os logs de voz e vídeo, consulte: Visão geral dos logs de chamadas dos Serviços de Comunicação do Azure
Aprenda as práticas recomendadas para gerenciar a qualidade e a confiabilidade de suas chamadas, consulte: Melhorar e gerenciar a qualidade das chamadas
Saiba mais sobre o painel de informações para monitorar os registros de chamadas de voz e chamadas de vídeo.
Saiba como usar os registros de chamadas para diagnosticar problemas de qualidade e confiabilidade de chamadas com o Diagnóstico de chamadas, consulte: Diagnóstico de chamadas