Compartir a través de


Solución de problemas de enrutamiento de mensajes

En este artículo se proporcionan instrucciones de supervisión y solución de problemas comunes para el 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 los registros de recursos de IoT Hub a registros de Azure Monitor, Event Hubs o Azure Storage para su procesamiento personalizado. Para más información sobre el uso de métricas, registros de recursos y configuración de diagnóstico, consulte Supervisión de IoT Hub. Para ver un tutorial, consulte Configuración y uso de métricas y registros de recursos con un centro de IoT.

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 mensajes se pueden conservar en el punto de conexión integrado durante el número 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 empezar a solucionar problemas, seleccione el problema para ver los pasos detallados.

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

Para solucionar este problema, analice la siguiente información.

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

Todas las métricas de IoT Hub relacionadas con el enrutamiento están precedidas por enrutamiento. Puede combinar información de varias métricas para identificar la causa principal de los problemas. Por ejemplo, use la métrica Envíos de Enrutamiento para identificar el número de mensajes que se entregaron a un punto de conexión o se descartaron porque no coincidían con las consultas en ninguna ruta y la ruta de respaldo 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 de punto de conexión específico y un motivo por el que el mensaje no se entregó.

Registros de recursos para cualquier problema operativo

Observe los registros de recursos de rutas para obtener más información sobre las operaciones de enrutamiento y punto de conexión, o identifique los errores y el código de error pertinente para comprender aún más 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 de 403004 indica que el punto de conexión se quedó sin espacio.

La salud del punto de conexión

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

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

Para solucionar este problema, analice la siguiente información.

¿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. Para asegurarse de que los mensajes continúan fluyendo al punto de conexión integrado si se agrega una nueva ruta, configure una ruta al punto de conexión de eventos .

¿Se ha deshabilitado la ruta alternativa?

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

Obtener estado de salud del punto de conexión en la API REST proporciona el estado de salud de los puntos de conexión y el último error conocido, para identificar la razón por la que un punto de conexión no está saludable. En esta tabla se enumeran los errores más comunes.

Último error conocido Descripción o cuándo se produce Posible mitigación
Transitorio Se produjo un error transitorio y IoT Hub volverá a intentar la operación. Observe los registros de recursos de rutas.
Error interno Error al entregar un mensaje a un punto de conexión. Este error es una excepción interna; consulta también los registros de recursos de rutas.
Desautorizado 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 actualizar su 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.
Contenedor no encontrado 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 enruta supera este límite. Compruebe si se puede reducir el tamaño del mensaje mediante el uso de menos propiedades de aplicación o menos enriquecimientos de mensajes.
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.
No hay suscripciones coincidentes para el mensaje. No hay ninguna suscripción para escribir un 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 que IoT Hub puede enviar mensajes a él. Habilite el punto de conexión para devolverlo al estado activo.
DeviceMaximumQueueDepthExceeded Se ha alcanzado el límite de tamaño del bus de servicios. Considere eliminar mensajes de los Event Hubs de destino para permitir la admisión de nuevos mensajes en ellos.

Registros de recursos de rutas

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

Nombres de operación

Nombre de 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. Obtenga más información sobre la sintaxis de consulta de enrutamiento.
Error de Evaluación de Ruta Error Error al evaluar el mensaje debido a un problema con el formato de mensaje. Por ejemplo, este error se registrará si la codificación de contenido no especificada o el tipo de contenido no es válido en el mensaje. Deben establecerse en las propiedades del sistema.
DroppedMessage (Mensaje Caído) Error El mensaje se ha quitado y no se ha enrutado. Esto podría deberse a motivos como que el mensaje no coincide con ninguna consulta de enrutamiento o punto de conexión estaba inactivo y el mensaje no se pudo entregar después de varios reintentos. Se recomienda obtener más detalles sobre el punto de conexión mediante la API REST obtener el estado del punto de conexión.
EndpointUnhealthy Error El punto de conexión no ha estado aceptando mensajes de IoT Hub y IoT Hub está intentando reenviar los mensajes. Se recomienda observar el último error conocido a través de la API REST obtener el estado del punto de conexión.
EndpointDead Error El punto de conexión no ha estado aceptando mensajes de IoT Hub durante más de una hora. Se recomienda observar el último error conocido a través de la API REST obtener el estado del punto de conexión.
EndpointHealthy Información El extremo está en buen estado y recibe mensajes de IoT Hub. Este mensaje no se registra continuamente, pero solo se registra cuando el punto de conexión vuelve a estar en buen estado. Este mensaje significa que IoT Hub no pudo enviar mensajes al punto de conexión, pero el punto de conexión ahora es correcto.
Mensaje huérfano Información El mensaje no coincide con ninguna ruta.
Mensaje inválido 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 están limitadas y no se registran más de una vez por minuto por IoT Hub.

Códigos de error comunes

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 Desautorizado
503 Servicio no disponible
500001 Error del servidor
400103 Codificación 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.