Solução de problemas de roteamento de mensagens

Este artigo fornece diretrizes de monitoramento e solução de problemas para problemas comuns e resolução de roteamento de mensagens do Hub IoT.

Monitorando o roteamento de mensagens

Recomendamos que você monitore as métricas do Hub IoT relacionadas ao roteamento de mensagens e aos pontos de extremidade para fornecer 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 de Monitor do Azure, Hubs de Eventos ou Armazenamento do Azure para processamento personalizado. Para saber mais sobre como usar métricas, logs de recursos e configurações de diagnóstico, consulte Monitorar o Hub IoT. Para obter um tutorial, consulte 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 correspondam à consulta em nenhuma das rotas. Eles podem ser retidos no ponto de extremidade interno pela quantidade de dias de retenção configurados.

Principais problemas

A seguir estão os problemas mais comuns observados com o roteamento de mensagens. Para iniciar a solução de problemas, clique no problema para obter etapas detalhadas.

As mensagens dos meus dispositivos não estão a ser encaminhadas como esperado

Para solucionar esse problema, analise o seguinte.

As métricas de roteamento para este ponto de extremidade

Todas as métricas do Hub IoT relacionadas ao roteamento são prefixadas com Roteamento. Você pode combinar informações de várias métricas para identificar a causa raiz dos 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 descartadas quando não correspondiam a consultas em nenhuma das rotas e a rota de fallback foi desabilitada. Verifique a métrica Latência de roteamento para observar se a latência para entrega de mensagens está estável ou aumentando. Uma latência crescente 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 fornecem detalhes sobre a métrica, como o tipo de ponto de extremidade, o nome do ponto de extremidade específico e um motivo pelo qual a mensagem não foi entregue.

Os logs de recursos para quaisquer problemas operacionais

Observe os logs de recursos de rotas para obter mais informações sobre as operações de roteamento e ponto final ou identifique erros e código de erro relevante para entender melhor o problema. Por exemplo, o nome da operação RouteEvaluationError no log indica que a rota não pôde ser avaliada devido a um problema com o formato da mensagem. Use as dicas fornecidas para os nomes de operação específicos para mitigar o problema. Quando um evento é registrado como um erro, o log também fornecerá mais informações sobre por que a avaliação falhou. Por exemplo, se o nome da operação for EndpointUnhealthy, um código de erro de 403004 indica que o ponto de extremidade ficou sem espaço.

A integridade do ponto de extremidade

Use a API REST Get Endpoint Health para obter o status de integridade dos pontos de extremidade. A API Get Endpoint Health também fornece informações sobre a última vez que uma mensagem foi enviada com êxito para o ponto de extremidade, o último erro conhecido, a última hora de erro conhecida e a última vez que uma tentativa de envio foi feita para esse ponto de extremidade. Use a possível atenuação fornecida para o último erro conhecido específico.

De repente, parei de receber mensagens no ponto de extremidade integrado

Para solucionar esse problema, analise o seguinte.

Foi criada uma nova rota?

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 a fluir para o ponto de extremidade interno se uma nova rota for adicionada, configure uma rota para o ponto de extremidade de eventos .

A rota Fallback foi desativada?

A rota de fallback envia todas as mensagens que não satisfazem nenhuma das condições de consulta em qualquer uma das rotas existentes para os Hubs de Eventos internos (mensagens/eventos), que é compatível com Hubs de Eventos. Se o roteamento de mensagens estiver ativado, você poderá habilitar o recurso 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 em 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 deverá 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 Gerenciador de Recursos do Azure para FallbackRouteProperties para usar um ponto de extremidade personalizado para uma rota de fallback.

Últimos erros conhecidos para pontos de extremidade de roteamento do Hub IoT

Get Endpoint Health na API REST fornece o status de integridade dos pontos de extremidade, bem como o último erro conhecido, para identificar o motivo pelo qual um ponto de extremidade não está íntegro. A tabela abaixo 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á novamente a operação. Observe os logs de recursos de rotas.
Erro interno Ocorreu um erro ao entregar uma mensagem a um ponto de extremidade. Esta é uma exceção interna, mas também observe 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 seu 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.
Limitado O Hub IoT está sendo limitado durante a gravação de mensagens no ponto de extremidade. Revise os limites de aceleração para o endpoint afetado. Modifique as configurações para que o ponto de extremidade seja dimensionado, se necessário.
Limite de tempo excedido Tempo limite de operação. Repita a operação.
Não Encontrado O recurso de destino não existe. Verifique se o recurso de destino existe.
Recipiente não encontrado O recipiente de armazenamento não existe. Verifique se o recipiente de armazenamento existe.
Contentor desativado O contêiner de armazenamento está desativado. Verifique se o contêiner de armazenamento está habilitado.
MaxMessageSizeExceeded O roteamento de mensagens tem um limite de tamanho de mensagem de 256Kb.O tamanho da mensagem que está sendo roteada excedeu esse limite. Verifique se o tamanho da mensagem pode ser reduzido usando menos propriedades de aplicativo ou menos enriquecimento de mensagem.
ParticionamentoAndDuplicateDetectionNotSupported O barramento de serviço pode não ter a deteção de duplicados habilitada. Desative a deteção de duplicados do Service Bus ou considere o uso de uma entidade sem deteção de duplicatas.
SessionfulEntityNotSupported O barramento de serviço pode não ter sessões habilitadas. Desative a sessão do Service Bus ou considere usar uma entidade sem sessões.
NoMatchingSubscriptionsForMessage Não há nenhuma assinatura para escrever mensagem no tópico do barramento de serviço. Crie uma assinatura para as mensagens do Hub IoT para as quais serem roteadas.
Ponto de extremidadeExternallyDisabled O ponto de extremidade não está em um estado ativo, portanto, o Hub IoT pode 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 recursos de rotas

A seguir estão os nomes de operação e códigos de erro registrados nos logs de recursos de rotas.

Nomes das operações

Nome da Operação Level Description
UndefinedRouteEvaluation Informação A mensagem não pode ser avaliada com uma condição de doaçã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 Ocorreu um 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. Estes devem ser definidos nas propriedades do sistema.
DroppedMessage Erro A mensagem foi descartada e não encaminhada. Isso pode ser devido a motivos como mensagem não corresponder a nenhuma consulta de roteamento ou ponto de extremidade estava inativo e a mensagem não pôde ser entregue após várias tentativas. Recomendamos obter mais detalhes sobre o endpoint usando a API REST get endpoint health.
EndpointNão íntegro Erro O Endpoint não tem aceitado mensagens do Hub IoT e o Hub IoT está tentando reenviar as mensagens. Recomendamos observar o último erro conhecido por meio da API REST get endpoint health.
Ponto de extremidadeDead Erro O Endpoint não aceita mensagens do Hub IoT há mais de uma hora. Recomendamos observar o último erro conhecido por meio da API REST get endpoint health.
EndpointHealthy Informação 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ção A mensagem não corresponde a nenhuma rota.
Mensagem inválida Erro A mensagem é inválida devido à incompatibilidade com o ponto de extremidade. Recomendamos verificar as configurações do ponto de extremidade.

As operações UndefinedRouteEvaluation, RouteEvaluationError e OrphanedMessage são limitadas e registradas no máximo uma vez por minuto por Hub IoT.

Códigos de erro comuns

Código de Erro Description
401002 Acesso não autorizado ao Hub Iot
413001 Mensagem muito grande
403004 Profundidade máxima da fila do dispositivo excedida
503008 Receber link acelerado
500000 Erro de servidor genérico
401 Não autorizado
503 Serviço Indisponível
500001 Erro do Servidor
400103 Codificação de conteúdo ou tipo de conteúdo inválido
404001 Dispositivo não encontrado

Próximos passos

Se precisar de mais ajuda, pode contactar os especialistas do Azure nos fóruns de Perguntas e Respostas da Microsoft e Estouro de Pilha. Como alternativa, você pode registrar um incidente de suporte do Azure. Vá para o site de suporte do Azure e selecione Obter suporte.