Compartir vía


Solución de problemas de enrutamiento de mensajes

En este artículo se proporcionan instrucciones para la supervisión y solución de problemas comunes y la resolución de enrutamiento de mensajes de IoT Hub.

Supervisión del enrutamiento de mensajes

Se recomienda supervisar las métricas de IoT Hub relacionadas con el enrutamiento de mensajes y los puntos de conexión para proporcionarle una visión general de los mensajes enviados. También puede crear una configuración de diagnóstico para enviar operaciones para rutas en registros de recursos de IoT Hub a registros de Azure Monitor, Event Hubs o Azure Storage para el procesamiento personalizado. Para obtener más información sobre el uso de métricas, registros de recursos y la configuración de diagnósticos, consulte Supervisión de IoT Hub. Para ver un tutorial, consulte Configuración y uso de métricas y registros de diagnóstico con una instancia de IoT Hub.

También se recomienda habilitar la ruta de reserva si quiere mantener los mensajes que no coinciden con la consulta en ninguna de las rutas. Estos se pueden conservar en el punto de conexión integrado durante la cantidad de días de retención configurados.

Principales problemas

A continuación se muestran los problemas más comunes que se observan con el enrutamiento de mensajes. Para iniciar la solución de problemas, haga clic en el problema para obtener pasos detallados.

Los mensajes de mis dispositivos no se están redirigiendo según lo esperado

Para solucionar este problema, analice lo siguiente:

Las métricas de enrutamiento para este punto de conexión

Todas las métricas de IoT Hub relacionadas con el enrutamiento incluyen el término enrutamiento. Puede combinar información de varias métricas para identificar la causa principal de los problemas. Por ejemplo, use la métrica Entrega de enrutamiento para identificar el número de mensajes que se entregaron a un punto de conexión o que se eliminaron por no coincidir con las consultas en ninguna de las rutas y porque la ruta de reserva estaba deshabilitada. Compruebe la métrica Latencia de enrutamiento para observar si la latencia de la entrega de mensajes es constante o va en aumento. Una latencia cada vez mayor puede indicar un problema con un punto de conexión específico y se recomienda comprobar el estado del punto de conexión. Estas métricas de enrutamiento también tienen dimensiones que proporcionan detalles sobre la métrica, como el tipo de punto de conexión, el nombre del punto de conexión específico y un motivo por el que no se entregó el mensaje.

Registros de recursos para cualquier problema operativo

Observe los registros de recursos de las rutas para obtener más información sobre las operaciones de enrutamiento y de punto de conexión o identificar los errores y el código de error correspondiente para comprender mejor el problema. Por ejemplo, el nombre de la operación RouteEvaluationError en el registro indica que no se pudo evaluar la ruta debido a un problema con el formato de mensaje. Use las sugerencias proporcionadas para los nombres de operaciones específicos para mitigar el problema. Cuando se registra un evento como un error, el registro también proporcionará más información sobre el motivo del error en la evaluación. Por ejemplo, si el nombre de la operación es EndpointUnhealthy, un código de error 403004 indica que el punto de conexión se ha quedado sin espacio.

Mantenimiento del punto de conexión

Use la API REST Get Endpoint Health para obtener el estado de mantenimiento de los puntos de conexión. La API Get Endpoint Health también proporciona información sobre la última vez que un mensaje se envió correctamente al punto de conexión, el último error conocido, la última hora de error conocida y la última vez que se realizó un intento de envío para este punto de conexión. Use la posible mitigación que proporciona el último error conocido específico.

Repentinamente, he dejado de recibir mensajes en el punto de conexión integrado

Para solucionar este problema, analice lo siguiente:

¿Se ha creado una nueva ruta?

Una vez que se crea una ruta, los datos dejan de fluir al punto de conexión integrado, a menos que se cree una ruta a ese punto de conexión. Configure una ruta al punto de conexión de eventos para asegurarse de que los mensajes continúen fluyendo hasta el punto de conexión integrado si se agrega una nueva ruta.

¿Se ha deshabilitado la ruta de reserva?

La ruta de reserva envía todos los mensajes que no cumplen ninguna de las condiciones de la consulta en cualquiera de las rutas existentes al punto de conexión de Event Hubs integrado (mensajes y eventos), que es compatible con Event Hubs. Si el enrutamiento de mensajes está activado, puede habilitar la funcionalidad de ruta de reserva. Si no hay ninguna ruta al punto de conexión integrado y está habilitada una ruta de reserva, solo se enviarán al punto de conexión integrado los mensajes que no coinciden con las condiciones de la consulta sobre rutas. Además, si se eliminan todas las rutas existentes, se debe habilitar la ruta de reserva para recibir todos los datos en el punto de conexión integrado.

Puede habilitar o deshabilitar la ruta de reserva en Azure Portal mediante la hoja Enrutamiento de mensajes de IoT Hub. También puede usar Azure Resource Manager para FallbackRouteProperties para usar un punto de conexión personalizado para una ruta de reserva.

Últimos errores conocidos de los puntos de conexión de enrutamiento de IoT Hub

Get Endpoint Health en la API REST proporciona el estado de mantenimiento de los puntos de conexión, así como el último error conocido, para identificar el motivo por el que un punto de conexión no es correcto. En la tabla siguiente se enumeran los errores más comunes.

Último error conocido Descripción/cuándo se produce Posible mitigación
Transitorio Se ha producido un error transitorio e IoT Hub reintentará la operación. Observe los registros de recursos de rutas.
InternalError Se produjo un error al entregar un mensaje a un punto de conexión. Se trata de una excepción interna, pero también observe los registros de recursos de las rutas.
No autorizado IoT Hub no está autorizado para enviar mensajes al punto de conexión especificado. Compruebe que la cadena de conexión está actualizada para el punto de conexión. Si ha cambiado, considere la posibilidad de realizar una actualización en IoT Hub. Si el punto de conexión usa identidad administrada, compruebe que la entidad de seguridad de IoT Hub tenga los permisos necesarios en el destino.
Limitado IoT Hub se está limitando al escribir mensajes en el punto de conexión. Revise la limitación para el punto de conexión afectado. Modifique las configuraciones del punto de conexión para escalar verticalmente si es necesario.
Tiempo de espera Tiempo de espera de la operación. Vuelva a intentar la operación.
No encontrado El recurso de destino no existe. Asegúrese de que el recurso de destino existe.
No se ha encontrado el contenedor El contenedor de almacenamiento no existe. Asegúrese de que el contenedor de almacenamiento existe.
Contenedor deshabilitado El contenedor de almacenamiento está deshabilitado. Asegúrese de que el contenedor de almacenamiento está habilitado.
MaxMessageSizeExceeded El enrutamiento de mensajes tiene un límite de tamaño de mensaje de 256 KB. El tamaño del mensaje que se está enrutando superó este límite. Compruebe si el tamaño del mensaje se puede reducir con menos propiedades de la aplicación o menos enriquecidas.
PartitioningAndDuplicateDetectionNotSupported Es posible que Service Bus no tenga habilitada la detección de duplicados. Deshabilite la detección de duplicados de Service Bus o considere la posibilidad de usar una entidad sin detección de duplicados.
SessionfulEntityNotSupported Es posible que Service Bus no tenga habilitadas las sesiones. Deshabilite la sesión de Service Bus o considere la posibilidad de usar una entidad sin sesiones.
NoMatchingSubscriptionsForMessage No hay ninguna suscripción para escribir el mensaje en el tema de Service Bus. Cree una suscripción para los mensajes de IoT Hub a los que se va a redirigir.
EndpointExternallyDisabled El punto de conexión no está en un estado activo, por lo IoT Hub puede enviarle mensajes. Habilite el punto de conexión para volver al estado activo.
DeviceMaximumQueueDepthExceeded Se ha alcanzado el límite de tamaño de Service Bus. Considere la posibilidad de quitar los mensajes de Event Hubs de destino para permitir que se ingieran nuevos mensajes en Event Hubs.

Registros de recursos de rutas

A continuación, se muestran los nombres de las operaciones y los códigos de error registrados en los registros de recursos de rutas.

Nombres de operación

Nombre de la operación Nivel Descripción
UndefinedRouteEvaluation Información El mensaje no se puede evaluar con una condición dada. Por ejemplo, si una propiedad de la condición de consulta de ruta está ausente en el mensaje. Más información sobre la sintaxis de consulta de enrutamiento.
RouteEvaluationError Error Se produjo un error al evaluar el mensaje debido a un problema con el formato de mensaje. Por ejemplo, este error se registrará si no se especifica la codificación de contenido o si el tipo de contenido no es válido en el mensaje. Se deben establecer en las propiedades del sistema.
DroppedMessage Error El mensaje se ha quitado y no se ha enrutado. Esto puede deberse a motivos como que el mensaje no coincidía con ninguna consulta de enrutamiento o punto de conexión inactivo y no se pudo entregar el mensaje después de varios reintentos. Se recomienda obtener más detalles sobre el punto de conexión mediante la API REST get endpoint health.
EndpointUnhealthy Error El punto de conexión no ha aceptado mensajes de IoT Hub e IoT Hub está intentando reenviar los mensajes. Se recomienda observar el último error conocido a través de la API REST get endpoint health.
EndpointDead Error El punto de conexión no ha aceptado mensajes de IoT Hub durante más de una hora. Se recomienda observar el último error conocido a través de la API REST get endpoint health.
EndpointHealthy Información El punto de conexión es correcto y recibe mensajes de IoT Hub. Este mensaje no se registra continuamente, sino que solo se registra cuando el punto de conexión vuelve a tener un estado correcto. Este mensaje significa que IoT Hub no pudo enviar mensajes al punto de conexión, pero el punto de conexión ahora es correcto.
OrphanedMessage Información El mensaje no coincide con ninguna ruta.
InvalidMessage Error El mensaje no es válido debido a la incompatibilidad con el punto de conexión. Se recomienda comprobar las configuraciones del punto de conexión.

Las operaciones UndefinedRouteEvaluation, RouteEvaluationError y OrphanedMessage se limitan y se registran en un máximo de una vez por minuto por IoT Hub.

Códigos comunes de error

Código de error Descripción
401002 Acceso no autorizado de Iot Hub
413001 Mensaje demasiado grande
403004 Profundidad máxima de cola de dispositivo superada
503008 Vínculo de recepción limitado
500000 Error de servidor genérico
401 No autorizado
503 Servicio no disponible
500001 Error de servidor
400103 Codificación de contenido o tipo de contenido no válido
404001 Dispositivo no encontrado

Pasos siguientes

Si necesita más ayuda, puede ponerse en contacto con los expertos de Azure en los foros de Q&A o Stack Overflow. Como alternativa, puede registrar un incidente de soporte técnico de Azure. Vaya al sitio de Soporte técnico de Azure y seleccione Obtener soporte.