Eventos de telemetría para Microsoft Dataverse
El flujo de datos proporciona actualmente datos de rendimiento relacionados con llamadas entrantes de la API de Dataverse, llamadas de ejecución de complementos de Dataverse y llamadas SDK de Dataverse. También proporciona datos de errores en complementos y Operaciones de SDK de Dataverse.
Llamadas entrantes de la API de Dataverse
Estas son llamadas hechas a la API de Dataverse. Pueden ser de Interfaz unificada (UCI), el cliente web heredado, clientes personalizados que usan el SDK, etc. Se pueden encontrar en la tabla de peticiones de Application Insights, que tiene los siguientes campos.
Nombre: El tipo de solicitud. Se divide en dos categorías:
- Solicitud de API web: una solicitud a OData v4 punto de conexión que suelen utilizar Interfaz unificada y los clientes modernos. Esta solicitud se transforma en una operación común para ambos. La API web es un "contenedor" para habilitar el modelo de programación RESTful, pero una vez que se reciben los datos, todo se vuelve igual dentro del servidor. Cuando se devuelve la respuesta, se convierte a JSON si la solicitud proviene de la API web.
- Solicitud de servicio de organización: una solicitud a la API de organización punto de conexión utilizada por los clientes del SDK o el cliente web heredado.
Duración: la cantidad de tiempo que tardó el servidor en responder a la solicitud.
Url: La URL a la que se realizó la llamada.
Dimensiones personalizadas:
UserAgent: Application Insights completa automáticamente el campo de agente de usuario con PC a medida que estos registros se envían desde un servidor en un centro de datos. Application Insights no permite que se anule el campo del agente de usuario. A veces, el campo del agente de usuario no se puede rellenar. El agente de usuario desde el que se realizó la llamada se puede ver mediante la siguiente consulta:
requests | summarize count() by tostring(customDimensions.userAgent)
Operation_Name: el nombre legible de la operación que se mostrará en las vistas, como la vista de transacción de extremo a extremo.
Registros de ejecución de complementos de Dataverse
Estos registros de complementos personalizados que se ejecutan para una operación determinada se encuentran en la tabla de dependencias. Lo siguiente es un ejemplo de consulta:
dependencies
| where type == "Plugin"
| take 100
- Nombre/Destino: el nombre de tipo completo para el complemento que se está ejecutando.
- Duración: la cantidad de tiempo que tardó el complemento en ejecutarse.
- Dimensiones personalizadas:
- Profundidad: La profundidad actual de la ejecución en la pila de llamadas.
- EntityName: el nombre de la entidad sobre la que actúa el complemento.
- IsolationType: Un valor que indica si el complemento se está ejecutando en el entorno aislado:
- 1: Ninguno
- 2 Espacio aislado
- 3 Externo
- PluginName: el nombre fácil de usar del complemento.
- PluginType: el nombre del tipo de complemento que se está ejecutando.
- PluginVersion: La versión del complemento publicado. La intención aquí es poder utilizar esta información para solucionar problemas de actualizaciones de versión.
- Etapa: Se asigna a los siguientes valores:
- PreValidation = 10
- PreOperation = 20
- PreOperationBeforeExternalPlugins = 15
- PreOperationAfterExternalPlugins = 25
- MainOperation = 30
- PostOperationBeforeExternalPlugins = 35
- PostOperationAfterExternalPlugins = 45
- PostOperation = 40
- PostOperationDeprecated = 50
- StepName: el nombre del SDK de procesamiento de mensajes paso. Esto generalmente lo genera la herramienta de registro de complementos utilizando información sobre el PluginName, el PluginType y el nombre de la operación; por ejemplo ErrorMessageTest.ThrowException: Creación de cuenta.
Telemetría dentro de su código de complemento
Para comprender qué sucede dentro del código de su complemento, puede incluir telemetría personalizada desde dentro de su complemento mediante el uso de la interfaz .Xrm.Sdk.PluginTelemetry.ILogger en el código de su complemento para escribir datos de telemetría directamente en su recurso. Microsoft Application Insights Más información: Escribir telemetría a su recurso de Application Insights usando ILogger (versión preliminar) | Microsoft Docs
Registros de SDK de Dataverse
Estos son registros de operaciones del SDK que se activan como parte de una solicitud entrante. Se registran en la tabla de dependencias en Application Insights, porque se rastrean como dependencias para que se ejecute la solicitud. Se identifican por el nombre del tipo, que comienza por SDK. Lo siguiente es un ejemplo de consulta:
dependencies
| where type startswith "SDK"
| take 10
- Tipo: el tipo de solicitud de SDK activada. Los ejemplos incluyen Retrieve, RetrieveMultiple, FetchXmlToQueryExpression, y WhoAmI.
- Nombre/Objetivo: este es el nombre de la entidad a la que se dirige la operación del SDK.
- Dimensiones personalizadas:
- ClientType: el tipo de cliente del que proviene la llamada. Algunos valores posibles son Web, UCIClient y OutlookFull.
- EntityId: el identificador único de la entidad que se está utilizando.
- EntityName: El nombre de la entidad que se está utilizando.
Excepciones
Verá detalles de errores en las operaciones de complemento y de SDK en Application Insights. La tabla de excepciones de Application Insights alimenta el panel de errores. Estos detalles de errores se correlacionan con el resto de los eventos en el complemento y las llamadas al SDK en la vista de un extremo a otro. Toda la información disponible se agrega a las columnas cuando es posible y a customDimensions cuando no hay una coincidencia exacta de columnas.
Notará que algunos de los campos en la tabla de excepciones no se han rellenado. Esto se debe a que estos campos solo se pueden configurar si el SDK de Application Insights se utiliza para emitir registros desde el origen. Esta característica recopila la telemetría de la plataforma y luego la inserta en Application Insights de acuerdo con el esquema de Application Insights.
exceptions
| take 10
Esta consulta devolverá todos los detalles de los atributos de la tabla de excepciones.
- problemId/type: El tipo de excepción.
- outerMessage: El mensaje de excepción.
- Dimensiones personalizadas:
- clientType: El tipo de cliente del que proviene la llamada. Algunos valores posibles son Web, UCIClient y OutlookFull.
- exceptionSource: El complemento o apuntar donde se lanzó la excepción.
- entityName: El nombre de la entidad que se está utilizando.
- pluginName: el nombre del complemento donde se lanzó la excepción.
Si un usuario informa de un error, puede utilizar el ID de usuario (ID de Microsoft Entra ID) para comprender los detalles de la tabla de excepciones.
exceptions
| where user_Id == '00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
El ID de la entidad y el nombre de la entidad están disponibles en customDimensions, en la tabla de dependencias.
dependencies
| where type == "SDK Retrieve"
Preguntas más frecuentes (P+F)
A continuación se presentan algunas preguntas frecuentes relacionadas con eventos de telemetría para Dataverse.
¿Cómo puedo determinar si la actualización de mi complemento provocó una degradación del rendimiento?
dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name
El nombre del complemento también debe contener la versión de los complementos personalizados.
¿Cómo estaba funcionando la API antes de un problema informado, según la hora del día o la ubicación? ¿La degradación de la API fue gradual o repentina?
requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart
En este gráfico, podemos ver el rendimiento del punto de conexión de API durante un período de tiempo en comparación con la cantidad de solicitudes realizadas.
También puede configurar una alerta basada en el rendimiento de una API en particular aquí, en Application Insights.
¿Puedo explorar en profundidad los errores o fallos en momentos específicos o para usuarios específicos para poder comprender la pila de llamadas?
En el panel de errores hay una descripción general de los errores en un período de tiempo determinado. Luego, puede limitarse a un error específico según la llamada a la API o el tipo de dependencia para ver la vista de un extremo a otro.
¿Puedo crear paneles personalizados?
Sí. Puedes construir paneles personalizados con Application Insights.
¿Puedo determinar el rendimiento del uso del complemento (tiempo de respuesta) y las tasas de error durante el uso pico?
Sí. Consulte la siguiente consulta de muestra para comprender el rendimiento de sus complementos.
dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart
¿Esta telemetría tendrá limitaciones?
Sí. Actualmente se proporcionan detalles básicos del error 429.
¿Puedo entender las rutas de ejecución? ¿Las llamadas realizadas por el complemento ralentizan el complemento?
Sí. Puede ver todos los mensajes y complementos que se ejecutan para cualquier solicitud.
Se registra la duración de la ejecución de todos los mensajes y complementos. Si algún complemento está tardando más, puede identificar ese complemento. Si el complemento está realizando una devolución de llamada a Dataverse, se registra la duración de esa llamada. Se prevé obtener más información sobre los complementos para futuras implementaciones.
Cualquier llamada saliente realizada por el complemento se registrará automáticamente como una dependencia.
¿Puedo ver la telemetría para una solicitud específica?
Dataverse devuelve x-ms-service-requestId en la respuesta del encabezado a todas las solicitudes. Con este requestId, puede consultar toda la telemetría.
union *
| where operation_ParentId contains <requestId>