Solucionar problemas de roteamento de mensagens
Este artigo fornece diretrizes de monitoramento e solução de problemas comuns e resolução para o Roteamento de mensagensdo Hub IoT.
Como monitorar roteamento de mensagens
Recomendamos monitorar as métricas do Hub IoT relacionadas ao roteamento de mensagens e aos pontos de extremidade para ter uma visão geral das mensagens enviadas. Você também pode criar uma configuração de diagnóstico para enviar operações para rotas em logs de recursos do Hub IoT para logs do Azure Monitor, Hubs de Eventos ou Armazenamento do Microsoft Azure para processamento personalizado. Para saber mais sobre como usar métricas, logs de recursos e configurações de diagnóstico, confira Monitorar o Hub IoT. Para ver um tutorial, confira Configurar e usar métricas e logs de recursos com um hub IoT.
Também recomendamos habilitar a rota de fallback se quiser manter mensagens que não correspondem à consulta em nenhuma das rotas. Essas mensagens podem ser retidas no ponto de extremidade interno pelo número de dias de retenção configurado.
Principais problemas
Veja a seguir os problemas mais comuns observados com o roteamento de mensagens. Para iniciar a solução de problemas, selecione o problema para obter instruções detalhadas.
- As mensagens dos meus dispositivos não estão sendo roteadas como esperado
- Repentinamente, parei de receber mensagens no ponto de extremidade do Hubs de Eventos integrado
As mensagens dos meus dispositivos não estão sendo roteadas como esperado
Para solucionar esse problema, analise as informações a seguir.
As métricas de roteamento desse ponto de extremidade
Todas as métricas do Hub IoT relacionadas ao roteamento usam o prefixo Roteamento. Você pode combinar informações de várias métricas para identificar a causa raiz de problemas. Por exemplo, use a métrica Entregas de Roteamento para identificar o número de mensagens que foram entregues a um ponto de extremidade ou removidas quando não corresponderam a consultas em nenhuma das rotas e a rota de fallback foi desabilitada. Confira a métrica de Latência de roteamento para observar se a latência de entrega de mensagem está estável ou aumentando. Uma latência que está aumentando pode indicar um problema com um ponto de extremidade específico e recomendamos verificar a integridade do ponto de extremidade. Essas métricas de roteamento também têm dimensões que oferecem informações sobre a métrica, como o tipo de ponto de extremidade, nome de ponto de extremidade específico e um motivo pelo qual a mensagem não foi entregue.
Os logs de recursos para qualquer problema operacional
Observe os logs de recursos de rotas para obter mais informações sobre as operações de roteamento e ponto de extremidade ou identificar erros e código de erro pertinente para compreender melhor o problema. Por exemplo, o nome da operação RouteEvaluationError no registro indica que a rota não pôde ser avaliada devido a um problema com o formato da mensagem. Use as dicas recebidas para os nomes de operação específicos para atenuar o problema. Quando um evento é registrado como um erro, o registro também fornece mais informações sobre o motivo da falha na avaliação. Por exemplo, se o nome da operação for EndpointUnhealthy, um código de erro 403004 indica que o ponto de extremidade ficou sem espaço.
A integridade do ponto de extremidade
Use a API REST Obter Integridade do Ponto de Extremidade para obter o status de integridade dos pontos de extremidade. A API oferece também informações sobre a última vez que uma mensagem foi enviada com sucesso ao ponto de extremidade, o último erro conhecido, o horário do último erro conhecido e o horário da última tentativa para esse ponto de extremidade. Use a possível mitigação informada para o último erro conhecido específico.
Repentinamente, parei de receber mensagens no ponto de extremidade integrado
Para solucionar esse problema, analise as informações a seguir.
Uma nova rota foi criada?
Depois que uma rota é criada, os dados param de fluir para o ponto de extremidade interno, a menos que uma rota seja criada para esse ponto de extremidade. Para garantir que as mensagens continuem fluindo para o ponto de extremidade integrado se uma nova rota for adicionada, configure uma rota para o ponto de extremidade de eventos.
A rota de fallback foi desabilitada?
A rota de fallback envia todas as mensagens que não atendem a quaisquer das condições de consulta em nenhuma das rotas existentes para os Hubs de Eventos internos em (mensagens/eventos), compatíveis com Hubs de Eventos. Se o roteamento de mensagens estiver habilitado, você poderá habilitar a funcionalidade de rota de fallback. Se não houver rotas para o ponto de extremidade interno e uma rota de fallback estiver habilitada, somente as mensagens que não corresponderem a nenhuma condição de consulta nas rotas serão enviadas para o ponto de extremidade interno. Além disso, se todas as rotas existentes forem excluídas, a rota de fallback precisará ser habilitada para receber todos os dados no ponto de extremidade interno.
Você pode habilitar ou desabilitar a rota de fallback no portal do Azure usando a folha Roteamento de Mensagens para o Hub IoT. Você também pode usar o Azure Resource Manager para FallbackRouteProperties para usar um ponto de extremidade personalizado para a rota de fallback.
Últimos erros conhecidos para pontos de extremidade de roteamento do Hub IoT
Obter o Ponto de extremidade de Integridade na API REST fornece o status de integridade dos pontos de extremidades e o último erro conhecido para identificar o motivo pelo qual um ponto de extremidade não está íntegro. Esta tabela lista os erros mais comuns.
Último erro conhecido | Descrição/quando ocorre | Possível mitigação |
---|---|---|
Transitório | Ocorreu um erro transitório e o Hub IoT tentará executar a operação novamente. | Observe os logs de recursos de rotas. |
InternalError | Ocorreu um erro ao entregar uma mensagem para um ponto de extremidade. | Esse erro é uma exceção interna, mas observe, também, os logs de recursos de rotas. |
Não Autorizado | O Hub IoT não está autorizado a enviar mensagens para o ponto de extremidade especificado. | Valide se a cadeia de conexão está atualizada para o ponto de extremidade. Se tiver sido alterado, considere uma atualização no Hub IoT. Se o ponto de extremidade usar identidade gerenciada, verifique se a entidade de segurança do Hub IoT tem as permissões necessárias no destino. |
Acelerado | O Hub IoT está sendo limitado durante à gravação de mensagens no ponto de extremidade. | Examine os limites de limitação para o ponto de extremidade afetado. Modifique as configurações do ponto de extremidade para escalar verticalmente, se necessário. |
Tempo limite | Tempo limite da operação. | Repita a operação. |
Não encontrado | O recurso de destino não existe. | Verifique se o recurso de destino existe. |
Contêiner não encontrado | O contêiner de armazenamento não existe. | Certifique-se de que o contêiner de armazenamento exista. |
Contêiner desabilitado | O contêiner de armazenamento está desabilitado. | Certifique-se de que o contêiner de armazenamento esteja habilitado. |
MaxMessageSizeExceeded | O roteamento de mensagens tem um limite de tamanho de mensagem de 256 Kb. O tamanho da mensagem roteada excedeu esse limite. | Verifique se o tamanho da mensagem pode ser reduzido usando menos propriedades de aplicativo ou menos enriquecimentos de mensagem. |
PartitioningAndDuplicateDetectionNotSupported | O barramento de serviço pode não estar com a detecção de duplicidades habilitada. | Desabilite a detecção de duplicidades do Barramento de Serviço ou considere usar uma entidade sem detecção de duplicidades. |
SessionfulEntityNotSupported | O barramento de serviço pode não ter sessões habilitadas. | Desabilite a sessão do Barramento de Serviço ou considere usar uma entidade sem sessões. |
NoMatchingSubscriptionsForMessage | Não há nenhuma assinatura para gravar mensagem no tópico do barramento de serviço. | Crie uma assinatura para mensagens do Hub IoT a serem roteadas. |
EndpointExternallyDisabled | O ponto de extremidade não está em um estado ativo para que o Hub IoT possa enviar mensagens para ele. | Habilite o ponto de extremidade para trazê-lo de volta ao estado ativo. |
DeviceMaximumQueueDepthExceeded | O limite de tamanho do barramento de serviço foi atingido. | Considere remover mensagens dos Hubs de Eventos de destino para permitir que novas mensagens sejam ingeridas nos Hubs de Eventos. |
Logs de recurso de rotas
Veja a seguir os nomes de operação e códigos de erro registrados nos logs de recursos de rotas.
Nomes de operação
Nome de operação | Nível | Descrição |
---|---|---|
UndefinedRouteEvaluation | Informações | A mensagem não pode ser avaliada com uma condição de concessão. Por exemplo, se uma propriedade na condição de consulta de rota estiver ausente na mensagem. Saiba mais sobre a sintaxe de consulta de roteamento. |
RouteEvaluationError | Erro | Erro ao avaliar a mensagem devido a um problema com o formato da mensagem. Por exemplo, esse erro será registrado se a codificação de conteúdo não for especificada ou o tipo de conteúdo não for válido na mensagem. Esses configurações devem ser definidas nas propriedades do sistema. |
DroppedMessage | Erro | A mensagem foi removida e não foi roteada. Isso pode ser devido a motivos como a mensagem não correspondeu a nenhuma consulta de roteamento ou o ponto de extremidade estava inativo e a mensagem não pôde ser entregue após várias tentativas. É recomendável obter mais detalhes sobre o ponto de extremidade usando a API REST obter integridade de ponto de extremidade. |
EndpointUnhealthy | Erro | O ponto de extremidade não está aceitando mensagens do Hub IoT e o Hub IoT está tentando reenviar as mensagens. É recomendável observar o último erro conhecido por meio da API REST obter integridade do ponto de extremidade. |
EndpointDead | Erro | O ponto de extremidade não está aceitando mensagens do Hub IoT por mais de uma hora. É recomendável observar o último erro conhecido por meio da API REST obter integridade do ponto de extremidade. |
EndpointHealthy | Informações | O ponto de extremidade está íntegro e recebendo mensagens do Hub IoT. Essa mensagem não é registrada continuamente, mas registrada somente quando o ponto de extremidade se torna íntegro novamente. Essa mensagem significa que o Hub IoT não pôde enviar mensagens para o ponto de extremidade, mas o ponto de extremidade agora está íntegro. |
OrphanedMessage | Informações | A mensagem não corresponde a nenhuma rota. |
InvalidMessage | Erro | A mensagem é inválida devido à incompatibilidade com o ponto de extremidade. É recomendável verificar as configurações do ponto de extremidade. |
As operações UndefinedRouteEvaluation, RouteEvaluationError e OrphanedMessage são limitadas e não registradas mais de uma vez por minuto por Hub IoT.
Códigos de erro comuns
Código do Erro | Descrição |
---|---|
401002 | Acesso não autorizado ao Iot Hub |
413001 | Mensagem muito longa |
403004 | Profundidade máxima da fila do dispositivo excedida |
503008 | Receber link limitado |
500000 | Erro genérico de servidor |
401 | Não Autorizado |
503 | Serviço indisponível |
500001 | Erro de servidor |
400103 | Codificação de conteúdo ou tipo de conteúdo inválido |
404001 | Dispositivo não encontrado |
Próximas etapas
Se precisar de mais ajuda, você pode contatar os especialistas do Azure nos fóruns do Microsoft Q&A e do Stack Overflow. Como alternativa, você pode registrar um incidente de suporte do Azure. Vá para o site de suporte do Azure e selecione Obter Suporte.