Risoluzione dei problemi relativi al routing dei messaggi

Questo articolo fornisce indicazioni per il monitoraggio e la risoluzione dei problemi comuni per il routing dei messaggi dell'hub IoT.

Monitoraggio del routing dei messaggi

È consigliabile monitorare le metriche di hub IoT correlate al routing dei messaggi e agli endpoint per offrire una panoramica dei messaggi inviati. È anche possibile creare un'impostazione di diagnostica per inviare operazioni per le route nei log delle risorse dell'hub IoT ai log di Monitoraggio di Azure, a Hub eventi o ad Archiviazione di Azure per l'elaborazione personalizzata. Per altre informazioni sull'uso di metriche, log delle risorse e impostazioni di diagnostica, vedere Monitorare l'hub IoT. Per un'esercitazione, vedere Configurare e usare metriche e log delle risorse con un hub IoT.

È anche consigliabile abilitare la route di fallback, se si vogliono mantenere i messaggi che non corrispondono alla query in una delle route. Questi messaggi possono essere conservati nell'endpoint predefinito per il numero di giorni di conservazione configurati.

Problemi principali

Di seguito sono riportati i problemi più comuni riscontrati con il routing dei messaggi. Per avviare la risoluzione dei problemi, selezionare il problema per la procedura dettagliata.

I messaggi provenienti dai dispositivi non vengono instradati come previsto

Per risolvere il problema, usare le informazioni seguenti:

Le metriche di routing per questo endpoint

Tutte le metriche hub IoT correlate al routing sono precedute dal prefisso Routing. È possibile combinare le informazioni da più metriche per individuare la causa radice dei problemi. Ad esempio, usare la metrica Recapiti di routing per identificare il numero di messaggi che sono stati consegnati a un endpoint o sono stati rimossi, quando non corrispondevano alle query su nessuna delle route e la route di fallback era disabilitata. Controllare la Metrica di latenza di routing per verificare se la latenza per il recapito dei messaggi è costante o in aumento. Una latenza crescente può indicare un problema con un endpoint specifico ed è consigliabile controllare l'integrità dell'endpoint. Queste metriche di routing hanno anche dimensioni che forniscono dettagli sulla metrica, ad esempio il tipo di endpoint, il nome dell'endpoint specifico e il motivo per cui il messaggio non è stato recapitato.

I log delle risorse per eventuali problemi operativi

Osservare i log delle risorse route per ottenere altre informazioni sulle operazioni di routing ed endpoint o identificare gli errori e il codice di errore pertinente per comprendere ulteriormente il problema. Ad esempio, il nome dell'operazione RouteEvaluationError nel log indica che la route non è stata valutata, a causa di un problema con il formato del messaggio. Per attenuare il problema.usare i suggerimenti forniti per i nomi di operazione specifici. Quando un evento viene registrato come errore, il log fornisce anche altre informazioni sul motivo per cui la valutazione non è riuscita. Ad esempio, se il nome dell'operazione è EndpointUnhealthy, un codice di errore di 403004 indica che l'endpoint ha esaurito lo spazio.

L'integrità dell'endpoint

Usare l'API REST Get Endpoint Health per ottenere lo stato di integrità degli endpoint. L'API fornisce anche informazioni sull'ultima volta che un messaggio è stato inviato correttamente all'endpoint, l'ultimo errore noto, l'ora dell'ultimo errore noto e l'ultima volta che è stato effettuato un tentativo di invio per questo endpoint. Usare la possibile mitigazione fornita per l'ultimo errore noto specifico.

All'improvviso si è interrotta la ricezione di messaggi nell'endpoint predefinito

Per risolvere il problema, usare le informazioni seguenti:

È stata creata una nuova route?

Quando viene creata una route, i dati non vengono più trasmessi all'endpoint predefinito, a meno che non venga creata una route verso tale endpoint. Per garantire che i messaggi continuino a essere trasmessi all'endpoint predefinito se viene aggiunta una nuova route, configurare una route all'endpoint degli eventi.

La route di fallback è stata disabilitata?

La route di fallback invia tutti i messaggi che non soddisfano una o più condizioni di query su una delle route esistenti all'istanza predefinita di Hub eventi (messaggi/eventi), compatibile con Hub eventi. Se il routing dei messaggi è attivato, è possibile abilitare la funzionalità di route di fallback. Se non sono presenti route all'endpoint predefinito e viene abilitata una route di fallback, solo i messaggi che non corrispondono ad alcuna condizione di query sulle route vengono inviati all'endpoint predefinito. Inoltre, se tutte le route esistenti vengono eliminate, è necessario abilitare la route di fallback per ricevere tutti i dati nell'endpoint predefinito.

È possibile abilitare o disabilitare la route di fallback nel portale di Azure usando il pannello Routing messaggi per hub IoT. Si può anche utilizzare Azure Resource Manager per FallbackRouteProperties per utilizzare un endpoint personalizzato per una route di fallback.

Ultimi errori noti per gli endpoint di routing di hub IoT

Get Endpoint Health nell'API REST fornisce lo stato di integrità degli endpoint e l'ultimo errore noto per identificare il motivo per cui un endpoint non è integro. Questa tabella elenca gli errori più comuni.

Ultimo errore noto Descrizione/quando si verifica Possibile mitigazione
Temporaneo Si è verificato un errore temporaneo e l'hub IoT ritenta l'operazione. Osservare le route dei log delle risorse.
InternalError Errore durante il recapito di un messaggio a un endpoint. L’errore è un'eccezione interna, ma si osservano anche i log delle risorse di route.
Non autorizzata L'hub IoT non è autorizzato a inviare messaggi all'endpoint specificato. Verificare che la stringa di connessione sia aggiornata per l'endpoint. Se è stata modificata, prendere in considerazione un aggiornamento nell'hub IoT. Se l'endpoint usa l'identità gestita, verificare che l'entità dell'hub IoT disponga delle autorizzazioni necessarie per la destinazione.
Sospensione causata dal servizio Microsoft FullText L'hub IoT viene limitato durante la scrittura dei messaggi nell'endpoint. Esaminare i limiti di limitazione per l'endpoint interessato. Modificare le configurazioni per l'endpoint per aumentare le prestazioni, se necessario.
Timeout Timeout dell'operazione. Ripetere l'operazione.
Non trovato La risorsa di destinazione non esiste. Verificare che la risorsa di destinazione esista.
Non è possibile trovare il contenitore Il contenitore di archiviazione non esiste. Verificare che il contenitore di archiviazione esista.
Contenitore disabilitato Il contenitore di archiviazione è disabilitato. Verificare che il contenitore di archiviazione sia abilitato.
MaxMessageSizeExceeded Il routing dei messaggi ha un limite di dimensioni del messaggio di 256 Kb. Le dimensioni del messaggio indirizzato superano questo limite. Controllare se le dimensioni dei messaggi possono essere ridotte usando meno proprietà dell'applicazione o meno arricchimenti dei messaggi.
PartitioningAndDuplicateDetectionNotSupported Il bus di servizio potrebbe non avere il rilevamento di duplicati abilitato. Disabilitare il rilevamento dei duplicati dal bus di servizio o prendere in considerazione l'uso di un'entità senza rilevamento duplicati.
SessionfulEntityNotSupported Il bus di servizio potrebbe non avere sessioni abilitate. Disabilitare la sessione dal bus di servizio o prendere in considerazione l'uso di un'entità senza sessioni.
NoMatchingSubscriptionsForMessage Non esiste alcuna sottoscrizione per scrivere messaggi nell'argomento del bus di servizio. Creare una sottoscrizione a cui indirizzare i messaggi dell'hub IoT.
EndpointExternallyDisabled L'endpoint non è in uno stato attivo, quindi l'hub IoT può inviare messaggi. Abilitare l'endpoint per riportarlo allo stato attivo.
DeviceMaximumQueueDepthExceeded È stato raggiunto il limite di dimensioni del bus di servizio. Provare a rimuovere i messaggi dagli Hub eventi di destinazione per consentire l'inserimento di nuovi messaggi negli Hub eventi.

Instrada i log delle risorse

Di seguito sono riportati i nomi delle operazioni e i codici di errore registrati nei log delle risorse di route.

Nomi dell'operazione

Nome operazione Livello Descrizione
UndefinedRouteEvaluation Informazioni Il messaggio non può essere valutato con una condizione di specifica. Ad esempio, se una proprietà nella condizione di query di route è assente nel messaggio. Altre informazioni sulla sintassi delle query di routing.
RouteEvaluationError Error Errore durante la valutazione del messaggio a causa di un problema con il formato del messaggio. Ad esempio, questo errore verrà registrato se la codifica del contenuto non specificata o Il tipo di contenuto non è valido nel messaggio. Questi devono essere impostati nelle proprietà di sistema.
DroppedMessage Error Il messaggio è stato eliminato e non è stato indirizzato. Ciò potrebbe essere dovuto a motivi come il messaggio che non corrisponde ad alcuna query di routing o l'endpoint non è stato recapitato e il messaggio non è stato recapitato dopo diversi tentativi. È consigliabile ottenere altri dettagli sull'endpoint usando l'API REST Get Endpoint Health.
EndpointUnhealthy Error L'endpoint non accetta messaggi dall'hub IoT e l'hub IoT sta tentando di inviare nuovamente i messaggi. È consigliabile osservare l'ultimo errore noto tramite l'API REST Get Endpoint Health.
EndpointDead Error L'endpoint non accetta messaggi dall'hub IoT per più di un'ora. È consigliabile osservare l'ultimo errore noto tramite l'API REST Get Endpoint Health.
EndpointHealthy Informazioni L'endpoint è integro e riceve messaggi dall'hub IoT. Questo messaggio non viene registrato continuamente, ma registrato solo quando l'endpoint diventa di nuovo integro. Questo messaggio indica che l'hub IoT non è riuscito a inviare messaggi all'endpoint, ma l'endpoint è ora integro.
OrphanedMessage Informazioni Il messaggio non corrisponde ad alcuna route.
InvalidMessage Error Il messaggio non è valido a causa dell'incompatibilità con l'endpoint. È consigliabile controllare le configurazioni dell'endpoint.

Le operazioni UndefinedRouteEvaluation, RouteEvaluationError e OrphanedMessage vengono limitate e registrate non più di una volta al minuto per ogni hub IoT.

Codici errore comuni

Codice di errore Descrizione
401002 Accesso non autorizzato all'hub Iot
413001 Messaggio troppo grande
403004 È stata superata la profondità massima della coda del dispositivo
503008 Ricezione collegamento limitato
500.000 Errore del server generico
401 Non autorizzata
503 Servizio non disponibile
500001 Errore del server
400103 Codifica del contenuto o tipo di contenuto non valido
404001 Dispositivo non trovato

Passaggi successivi

Per ricevere assistenza, contattare gli esperti di Azure nei Microsoft Q&A e Stack Overflow relativi ad Azure. In alternativa, è possibile archiviare un evento imprevisto di supporto tecnico di Azure. Accedere al sito del supporto di Azure e selezionare Ottenere supporto.