Condividi tramite


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 dell'instradamento 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 il percorso di fallback, se si vogliono mantenere i messaggi che non corrispondono alla query su qualsiasi 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 i passaggi dettagliati.

I messaggi provenienti dai dispositivi non vengono instradati come previsto

Per risolvere questo problema, analizzare 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, usa la metrica Consegne di instradamento per identificare il numero di messaggi che sono stati consegnati a un endpoint o scartati, quando non corrispondevano alle query su nessuna delle rotte e il percorso di fallback era disabilitato. 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.

Integrità dell'endpoint

Usare l'API REST Get Endpoint Health per ottenere lo stato degli endpoint. Questa 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 questo problema, analizzare 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 integrato quando 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 l'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

Verifica integrità endpoint nell'API REST fornisce lo stato di integrità degli endpoint e l'ultimo errore noto per individuare la causa per cui un endpoint non è integro. Questa tabella elenca gli errori più comuni.

Ultimo errore noto Descrizione/quando si verifica Mitigazione possibile
Transitorio Si è verificato un errore temporaneo e l'hub IoT ritenta l'operazione. Osservare le route dei log delle risorse.
Errore Interno 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 subisce un rallentamento durante la scrittura di messaggi nell'endpoint. Esaminare i limiti di limitazione per l'endpoint interessato. Modificare le configurazioni per l'endpoint per aumentare le prestazioni, se necessario.
Interruzione temporanea Timeout dell'operazione. Ripetere l'operazione.
Non trovato La risorsa di destinazione non esiste. Verificare che la risorsa di destinazione esista.
Contenitore non trovato 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.
Dimensione massima del messaggio superata Il routing dei messaggi ha un limite di dimensioni del messaggio di 256 Kb. Le dimensioni del messaggio instradato 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 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 da Service Bus o considerare l'utilizzo 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 delle operazioni

Nome operazione Livello Descrizione
UndefinedRouteEvaluation Informazione Il messaggio non può essere valutato con una condizione prestabilita. Ad esempio, se una proprietà nella condizione di query di route è assente nel messaggio. Scopri di più sulla sintassi delle query di routing.
Errore di valutazione del percorso Errore 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 Errore Il messaggio è stato eliminato e non è stato indirizzato. Ciò potrebbe essere dovuto a motivi come il fatto che il messaggio non corrisponde ad alcuna query di routing o l'endpoint era inattivo e il messaggio non è stato recapitato dopo diversi tentativi. È consigliabile ottenere altri dettagli sull'endpoint usando l'API REST per ottenere l'integrità dell'endpoint.
EndpointUnhealthy Errore 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 Errore 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 Informazione 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.
Messaggio orfano Informazione Il messaggio non corrisponde ad alcuna route.
Messaggio non valido Errore 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 di 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.