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. Elas 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, clique no problema para obter instruções detalhadas.

As mensagens dos meus dispositivos não estão sendo roteadas como esperado

Para solucionar esse problema, analise o seguinte.

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, RouteEvaluationError do nome da operação no log 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 erro, o log também oferece mais informações sobre a falha da 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 Obter Integridade do Ponto de Extremidade 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 o seguinte.

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 nenhuma rota para o ponto de extremidade interno e houver uma rota de fallback habilitada, somente as mensagens que não corresponderem a nenhuma condição de consulta nas rotas serão enviadas ao 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 integridade do ponto de extremidade na API REST fornece o status de integridade dos pontos de extremidades, bem como o último erro conhecido, para identificar o motivo pelo qual um ponto de extremidade não está íntegro. A tabela a seguir 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. Essa é 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 256Kb. O tamanho da mensagem que está sendo roteado 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.