Eventos de telemetria para Microsoft Dataverse
Observação
O centro de administração novo e melhorado do Power Platform agora está em versão preliminar pública! Projetamos o novo centro de administração para ser mais fácil de usar, com navegação orientada a tarefas que ajuda você a alcançar resultados específicos mais rapidamente. Publicaremos documentação nova e atualizada à medida que o novo centro de administração do Power Platform for transferido para a disponibilidade geral.
No momento, o fluxo de dados fornece dados de desempenho relacionados a chamadas recebidas da API do Dataverse, a chamadas de execução de plug-in do Dataverse e a chamadas de SDK do Dataverse. Ele também fornece dados para falhas no plug-in e operações de SDK do Dataverse.
Chamadas recebidas da API do Dataverse
Estas são chamadas feitas para a API do Dataverse. Elas podem ser da Interface Unificada (UCI), do cliente da Web herdado, de clientes personalizados que usam o SDK e assim por diante. Elas podem ser encontradas na tabela de solicitações do Application Insights, que possui os seguintes campos.
Nome: o tipo de solicitação. Elas se enquadram em duas categorias:
- Solicitação de API da Web: uma solicitação para o ponto de extremidade do OData v4 que é comumente usada por Interface Unificada e clientes modernos. Essa solicitação é transformada em uma operação comum a ambos. A API da Web é um "wrapper" para habilitar o modelo de programação RESTful, mas depois que os dados são recebidos, tudo se torna igual dentro do servidor. Quando a resposta é retornada, ela é convertida em JSON, se a solicitação veio da API da Web.
- Solicitação de Serviço da Organização: uma solicitação para o ponto de extremidade da API da Organização usado por clientes SDK ou pelo cliente Web herdado.
Duração: a quantidade de tempo que o servidor levou para responder à solicitação.
Url: o URL para o qual a chamada foi feita.
CustomDimensions:
Agente de Usuário: o Application Insights preenche automaticamente o campo do agente do usuário com PC à medida que esses logs estão sendo enviados de um servidor em um datacenter. O Application Insights não permite que o campo do agente do usuário seja substituído. Às vezes, o campo do agente do usuário não está disponível para ser preenchido. O agente do usuário a partir do qual a chamada foi feita pode ser visualizado usando a seguinte consulta:
requests | summarize count() by tostring(customDimensions.userAgent)
Nome da Operação: o nome legível da operação a ser exibida nas visualizações, como a visualização da transação de ponta a ponta.
Logs de execução de plug-in do Dataverse
Esses logs para plug-ins personalizados em execução para uma determinada operação são encontrados na tabela dependência. A seguir está um exemplo de consulta:
dependencies
| where type == "Plugin"
| take 100
- Nome/Alvo: o nome de tipo totalmente qualificado para o plug-in que está sendo executado.
- Duração: a quantidade de tempo que o plug-in levou para ser executado.
-
CustomDimensions:
- Profundidade: a Profundidade atual da execução na pilha de chamadas.
- EntityName: o nome da entidade que está recebendo a ação do plug-in.
-
IsolationType: um valor indicando se o plug-in está sendo executado na área restrita:
- 1: Nenhum(a)
- 2: Área restrita
- 3: Externo(a)
- PluginName: o nome amigável do usuário do plug-in.
- PluginType: o nome do tipo de plug-in que está sendo executado.
- PluginVersion: a versão do plug-in publicado. A intenção aqui é poder usar essas informações para solucionar problemas de atualizações de versão.
-
Etapa: mapeia para os seguintes valores:
- PreValidation = 10
- PreOperation = 20
- PreOperationBeforeExternalPlugins = 15
- PreOperationAfterExternalPlugins = 25
- MainOperation = 30
- PostOperationBeforeExternalPlugins = 35
- PostOperationAfterExternalPlugins = 45
- PostOperation = 40
- PostOperationDeprecated = 50
- StepName: o nome da Etapa de Processamento de Mensagens do SDK. Isso geralmente é gerado pela ferramenta de Registro de Plug-in usando informações sobre o PluginName, PluginType e o nome da operação—por exemplo, ErrorMessageTest.ThrowException: Creation of account.
Telemetria em seu código de plug-in
Para entender o que está acontecendo dentro de seu código de plug-in, você pode incluir telemetria customizada de dentro de seu plug-in usando a Interface Microsoft.Xrm.Sdk.PluginTelemetry.ILogger em seu código de plug-in para gravar dados de telemetria diretamente em seu recursos do Application Insights. Mais informações: Gravar telemetria no recurso do Application Insights usando ILogger (versão preliminar)
Logs de SDK do Dataverse
Esses são logs de operações do SDK acionados como parte de uma solicitação de entrada. Estes são registrados na tabela dependência no Application Insights, porque eles são rastreados como dependências para a execução da solicitação. Eles são identificados pelo nome do tipo, começando com SDK. A seguir está um exemplo de consulta:
dependencies
| where type startswith "SDK"
| take 10
- Tipo: o tipo de solicitação de SDK acionado. Os exemplos incluem Retrieve, RetrieveMultiple, FetchXmlToQueryExpression e WhoAmI.
- Nome/Alvo: este é o nome da entidade que está sendo direcionada pela operação SDK.
-
CustomDimensions:
- ClientType: o tipo de cliente de onde vem a chamada. Alguns valores possíveis são Web, UCIClient e OutlookFull.
- EntityId: o identificador exclusivo da entidade que está sendo usada.
- EntityName: o nome da entidade que está sendo usada.
Exceções
Você verá detalhes de falhas em operações de plug-in e SDK no Application Insights. A tabela exceções no Application Insights fornece o painel Falhas. Esses detalhes de falha se correlacionam com o restante dos eventos no plug-in e nas chamadas de SDK na exibição de ponta a ponta. Todas as informações disponíveis são adicionadas às colunas quando possível e para customDimensions quando não há correspondência de coluna exata.
Você observará que alguns dos campos na tabela de exceções não estão preenchidos. Isso ocorre porque esses campos só podem ser definidos se o SDK do Application Insights for usado para emitir logs da fonte. Este recurso coleta a telemetria da plataforma e a empurra para o Application Insights, de acordo com o esquema do Application Insights.
exceptions
| take 10
Esta consulta retornará todos os detalhes do atributo da tabela exceção.
- problemId/type: o tipo de exceção.
- outerMessage: a mensagem de exceção.
-
customDimensions:
- clientType: o tipo de cliente de onde vem a chamada. Alguns valores possíveis são Web, UCIClient e OutlookFull.
- exceptionSource: o plug-in ou ponto onde a exceção foi lançada.
- entityName: o nome da entidade que está sendo usada.
- pluginName: o nome do plug-in no qual a exceção foi lançada.
Se um usuário relatar um erro, você pode usar o ID do usuário (ID do Microsoft Entra ID) para entender os detalhes da tabela exceção.
exceptions
| where user_Id == '00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
O ID da entidade e o nome da entidade estão disponíveis em customDimensions na tabela dependência.
dependencies
| where type == "SDK Retrieve"
Perguntas frequentes (FAQs)
A seguir estão algumas perguntas frequentes relacionadas a eventos de telemetria para o Dataverse.
Como posso determinar se minha atualização de plug-in causou uma degradação de desempenho?
dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name
O nome do plug-in também deve conter a versão dos plug-ins customizados.
Como estava o desempenho da API antes de um problema relatado, com base na hora do dia ou local? A degradação do API foi gradual ou repentina?
requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart
Neste gráfico, podemos ver o desempenho do ponto de extremidade da API em um período em relação ao número de solicitações feitas.
Você também pode configurar um alerta com base no desempenho de uma API específica aqui dentro do Application Insights.
Posso detalhar os erros ou falhas em momentos específicos ou para usuários específicos para permitir a compreensão da pilha de chamadas?
Olhar para o painel Falhas fornece uma visão geral das falhas em um determinado período. Você pode então restringir a uma falha específica com base na chamada de API ou tipo de dependência para ver a visão de ponta a ponta.
Posso criar painéis personalizados?
Sim. Você pode criar painéis personalizados com Application Insights.
Posso determinar o desempenho de uso do plug-in (tempo de resposta) e as taxas de falha durante o pico de uso?
Sim. Consulte a consulta de amostra a seguir para entender o desempenho de seus plug-ins.
dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart
Essa telemetria terá limitação?
Sim. Detalhes do erro 429 básico são fornecidos atualmente.
Posso entender os caminhos de execução? As chamadas feitas pelo plug-in tornam o plug-in mais lento?
Sim. Você pode visualizar todas as mensagens e plug-ins executados para qualquer solicitação.
A duração de toda a execução de mensagens e plug-ins é registrada. Se algum plug-in estiver demorando mais, você poderá identificá-lo. Se o plug-in estiver fazendo um retorno de chamada para o Dataverse, a duração dessa chamada será registrada. Mais informações sobre plug-ins estão planejadas para implementação futura.
Qualquer chamada de saída feita pelo plug-in será automaticamente registrada como uma dependência.
Posso ver a telemetria para uma solicitação específica?
O Dataverse retorna x-ms-service-requestId na resposta do cabeçalho para todas as solicitações. Usando este requestId, você pode consultar toda a telemetria.
union *
| where operation_ParentId contains <requestId>