Depuración de funciones definidas por el usuario en Azure Digital Twins
Importante
Se ha publicado una nueva versión del servicio Azure Digital Twins. A la luz de las funcionalidades expandidas del nuevo servicio, se ha retirado el servicio original de Azure Digital Twins (descrito en este conjunto de documentación).
Para ver la documentación del nuevo servicio, visite la documentación activa de Azure Digital Twins.
En este artículo se resume cómo diagnosticar y depurar las funciones definidas por el usuario en Azure Digital Twins. A continuación, se identifican algunos de los escenarios más comunes que se producen al depurarlas.
Sugerencia
Lea Configuración de la supervisión y el registro para obtener más información sobre cómo configurar las herramientas de depuración en Azure Digital Twins mediante registros de actividad, registros de diagnóstico y Azure Monitor.
Depuración de problemas
Saber cómo diagnosticar problemas en Azure Digital Twins permite analizarlos de forma eficaz, identificar sus causas y proporcionar soluciones adecuadas a los mismos.
Para tal fin se proporcionan varias herramientas de diagnóstico, análisis y registro.
Habilitación del registro en la instancia
Azure Digital Twins es compatible con un eficaz sistema de registro, supervisión y análisis. Los desarrolladores de soluciones pueden usar los registros de Azure Monitor, los registros de diagnóstico, el registro de actividad y otros servicios para dar soporte a las complejas necesidades de supervisión de una aplicación de IoT. Las opciones de registro se pueden combinar para consultar o mostrar registros en diferentes servicios y ofrecer una cobertura de registro pormenorizada para muchos servicios.
- Para ver una configuración de registro específica de Azure Digital Twins, lea Configuración de la supervisión y el registro.
- Consulte la introducción a Azure Monitor para obtener información acerca de la eficaz configuración del registro que se habilita a través de Azure Monitor.
- Revise el artículo Recopilación y consumo de datos de registro de los recursos de Azure para configurar la configuración del registro de diagnóstico en Azure Digital Twins a través de la Azure Portal, la CLI de Azure o PowerShell.
Una vez configurado, podrá seleccionar todas las categorías de registro y métricas, así como usar áreas de trabajo del análisis del registro de Azure Monitor para dar soporte a sus esfuerzos de depuración.
Seguimiento de la telemetría del sensor
Para hacer un seguimiento de la telemetría del sensor, verifique que la configuración de diagnóstico esté habilitada para su instancia de Azure Digital Twins. A continuación, asegúrese de que todas las categorías de registro deseadas están seleccionadas. Por último, confirme que los registros deseados se envían a los registros de Azure Monitor.
Para hacer coincidir un mensaje de telemetría de sensor con sus registros correspondientes, puede especificar un identificador de correlación en los datos del evento que se envían. Para ello, establezca la propiedad x-ms-client-request-id
en un GUID.
Después de enviar la telemetría, abra el análisis de registros de Azure Monitor para consultar los registros con el identificador de correlación configurado:
AzureDiagnostics
| where CorrelationId == 'YOUR_CORRELATION_IDENTIFIER'
Valor de la consulta | Reemplazar por |
---|---|
YOUR_CORRELATION_IDENTIFIER | El identificador de correlación que se especificó en los datos del evento |
Para leer todas las consultas de registros de telemetría recientes:
AzureDiagnostics
| order by CorrelationId desc
Si habilita el registro para su función definida por el usuario, los registros aparecen en su instancia de análisis de registros con la categoría UserDefinedFunction
. Para recuperarlos, escriba la siguiente condición de consulta en el análisis de registros:
AzureDiagnostics
| where Category == 'UserDefinedFunction'
Para más información sobre las operaciones de consulta eficaces, lea Introducción a las consultas.
Identificación de los problemas comunes
Es importante tanto diagnosticar como identificar los problemas más comunes para buscar una solución. En las siguientes subsecciones se resumen varios problemas comunes encontrados al desarrollar funciones definidas por el usuario.
En los ejemplos siguientes, YOUR_MANAGEMENT_API_URL
hace referencia al identificador URI de la API de Digital Twins:
https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Nombre | Reemplazar por |
---|---|
YOUR_INSTANCE_NAME | El nombre de la instancia de Azure Digital Twins |
YOUR_LOCATION | La región en la que está hospedada la instancia |
Asegúrese de que se creó una asignación de roles
Sin no se crea una asignación de roles dentro de la API de administración, la función definida por el usuario no tiene acceso para realizar acciones como enviar notificaciones, recuperar metadatos y configurar valores calculados dentro de la topología.
Compruebe si existe una asignación de roles para la función definida por el usuario a través de la API de administración:
GET YOUR_MANAGEMENT_API_URL/roleassignments?path=/&traverse=Down&objectId=YOUR_USER_DEFINED_FUNCTION_ID
Valor del parámetro | Reemplazar por |
---|---|
YOUR_USER_DEFINED_FUNCTION_ID | El identificador de la función definida por el usuario para la que recuperar las asignaciones de roles |
Descubra cómo crear una asignación de roles para su función definida por el usuario, si no existe ninguna asignación de roles.
Compruebe si funciona el buscador de coincidencias para la telemetría de un sensor
Con la siguiente llamada a la API de administración de las instancias de Azure Digital Twins, puede determinar si se aplica un buscador de coincidencias determinado para el sensor específico.
GET YOUR_MANAGEMENT_API_URL/matchers/YOUR_MATCHER_IDENTIFIER/evaluate/YOUR_SENSOR_IDENTIFIER?enableLogging=true
Parámetro | Reemplazar por |
---|---|
YOUR_MATCHER_IDENTIFIER | El identificador del buscador de coincidencias que quiere evaluar |
YOUR_SENSOR_IDENTIFIER | El identificador del sensor que quiere evaluar |
Respuesta:
{
"success": true,
"logs": [
"$.dataType: \"Motion\" Equals \"Motion\" => True"
]
}
Compruebe lo que desencadena un sensor
Con la siguiente llamada a las API de administración de Azure Digital Twins, puede determinar los identificadores de las funciones definidas por el usuario que desencadenan la telemetría entrante del sensor determinado:
GET YOUR_MANAGEMENT_API_URL/sensors/YOUR_SENSOR_IDENTIFIER/matchers?includes=UserDefinedFunctions
Parámetro | Reemplazar por |
---|---|
YOUR_SENSOR_IDENTIFIER | El identificador del sensor para enviar la telemetría |
Respuesta:
[
{
"id": "48a64768-797e-4832-86dd-de625f5f3fd9",
"name": "MotionMatcher",
"spaceId": "2117b3e1-b6ce-42c1-9b97-0158bef59eb7",
"conditions": [
{
"id": "024a067a-414f-415b-8424-7df61392541e",
"target": "Sensor",
"path": "$.dataType",
"value": "\"Motion\"",
"comparison": "Equals"
}
],
"userDefinedFunctions": [
{
"id": "373d03c5-d567-4e24-a7dc-f993460120fc",
"spaceId": "2117b3e1-b6ce-42c1-9b97-0158bef59eb7",
"name": "Motion User-Defined Function",
"disabled": false
}
]
}
]
Problema con la recepción de notificaciones
Si no recibe notificaciones desde dentro de la función definida por el usuario desencadenada, asegúrese de que su parámetro de tipo de objeto de topología coincide con el tipo del identificador que se utiliza.
Incorrecta Ejemplo:
var customNotification = {
Message: 'Custom notification that will not work'
};
sendNotification(telemetry.SensorId, "Space", JSON.stringify(customNotification));
Esta situación se produce porque el identificador usado hace referencia a un sensor mientras el tipo de objeto de la topología especificado es Space
.
Correcto Ejemplo:
var customNotification = {
Message: 'Custom notification that will work'
};
sendNotification(telemetry.SensorId, "Sensor", JSON.stringify(customNotification));
La manera más fácil de no experimentar este problema es usar el método Notify
en el objeto de metadatos.
Ejemplo:
function process(telemetry, executionContext) {
var sensorMetadata = getSensorMetadata(telemetry.SensorId);
var customNotification = {
Message: 'Custom notification'
};
// Short-hand for above methods where object type is known from metadata.
sensorMetadata.Notify(JSON.stringify(customNotification));
}
Excepciones de diagnóstico comunes
Si habilita la configuración de diagnóstico, es posible que se produzcan estas excepciones comunes:
Limitación: la función definida por el usuario se restringirá si supera los límites de la tasa de ejecución descrita en el artículo Service Limits (Límites del servicio). Ninguna operación se ejecutará correctamente hasta que expiren los límites.
No se encontraron datos: si la función definida por el usuario intenta tener acceso a metadatos que no existen, se produce un error en la operación.
No autorizado: si la función definida por el usuario no tiene una asignación de roles establecida o no tiene permisos suficientes para tener acceso a ciertos metadatos de la topología, se produce un error en la operación.
Pasos siguientes
Obtenga información sobre cómo habilitar la supervisión y los registros en Azure Digital Twins.
Lea el artículo Información general del registro de actividad de Azure para conocer más opciones de registro.