Share via


Risoluzione dei problemi relativi al routing dei messaggi

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

Monitoraggio del routing dei messaggi

È consigliabile monitorare hub IoT metriche 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 hub IoT ai log di Monitoraggio di Azure, a Hub eventi o a Archiviazione di Azure per l'elaborazione personalizzata. Per altre informazioni sull'uso di metriche, log delle risorse e impostazioni di diagnostica, vedere Monitorare 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 messaggi che non corrispondono alla query in una delle route. Questi possono essere conservati nell'endpoint predefinito per la quantità 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, fare clic sul problema per la procedura dettagliata.

I messaggi provenienti dai dispositivi non vengono instradati come previsto

Per risolvere questo problema, analizzare quanto segue.

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 le metriche Routing Deliveries per identificare il numero di messaggi recapitati a un endpoint o eliminati quando non corrispondono alle query in una delle route e la route di fallback è stata 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 e è 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.

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. Usare i suggerimenti forniti per i nomi di operazione specifici per attenuare il problema. Quando un evento viene registrato come errore, il log fornirà 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 (Ottieni integrità endpoint) per ottenere lo stato di integrità degli endpoint. L'API Get Endpoint Health 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 ho smesso di ricevere messaggi nell'endpoint predefinito

Per risolvere questo problema, analizzare quanto segue.

È 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 alcuna condizione di query su alcuna delle route esistenti a Hub eventi predefiniti (messaggi/eventi), compatibili 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 verranno inviati all'endpoint predefinito. Inoltre, se tutte le route esistenti vengono eliminate, la route di fallback deve essere abilitata 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. È anche possibile usare Azure Resource Manager per FallbackRouteProperties per usare un endpoint personalizzato per una route di fallback.

Ultimi errori noti per gli endpoint di routing hub IoT

Ottenere integrità endpoint nell'API REST fornisce lo stato di integrità degli endpoint, nonché l'ultimo errore noto, per identificare il motivo per cui un endpoint non è integro. La tabella seguente elenca gli errori più comuni.

Ultimo errore noto Descrizione/quando si verifica Possibile mitigazione
Temporaneo Si è verificato un errore temporaneo e hub IoT ritentare l'operazione. Osservare le route dei log delle risorse.
InternalError Errore durante il recapito di un messaggio a un endpoint. Si tratta di un'eccezione interna, ma si osservano anche i log delle risorse di route.
Non autorizzata hub IoT non è autorizzato a inviare messaggi all'endpoint specificato. Verificare che il stringa di connessione sia aggiornato per l'endpoint. Se è stata modificata, prendere in considerazione un aggiornamento del hub IoT. Se l'endpoint usa l'identità gestita, verificare che l'entità di hub IoT disponga delle autorizzazioni necessarie per la destinazione.
Sospensione causata dal servizio Microsoft FullText hub IoT viene limitata 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.
Timeout Timeout dell'operazione. Ripetere l'operazione.
Non trovato La risorsa di destinazione non esiste. Verificare che la risorsa di destinazione esista.
Contenitore non trovato Archiviazione contenitore non esiste. Verificare che il contenitore di archiviazione esista.
Contenitore disabilitato Archiviazione contenitore è disabilitato. Verificare che il contenitore di archiviazione sia abilitato.
MaxMessageSizeExceeded Il routing dei messaggi ha un limite di dimensioni del messaggio di 256 Kb.La dimensione del messaggio instradata supera 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 da 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 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 per hub IoT messaggi a cui indirizzare i messaggi.
EndpointExternallyDisabled L'endpoint non è in uno stato attivo, quindi 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 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 per ottenere l'integrità dell'endpoint.
EndpointUnhealthy Error L'endpoint non accetta messaggi da hub IoT e hub IoT sta tentando di inviare nuovamente i messaggi. È consigliabile osservare l'ultimo errore noto tramite l'API REST ottenere l'integrità dell'endpoint.
EndpointDead Error L'endpoint non accetta messaggi da hub IoT per più di un'ora. È consigliabile osservare l'ultimo errore noto tramite l'API REST ottenere l'integrità dell'endpoint.
EndpointHealthy Informazioni L'endpoint è integro e riceve messaggi da hub IoT. Questo messaggio non viene registrato continuamente, ma registrato solo quando l'endpoint diventa di nuovo integro. Questo messaggio indica che hub IoT non è stato in grado di 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 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 altre informazioni, è possibile contattare gli esperti di Azure nei forum di Microsoft Q&A e Stack Overflow.If you need more help, you can contact the Azure experts on the Microsoft Q&A and Stack Overflow forums. In alternativa, è possibile archiviare un evento imprevisto di supporto tecnico di Azure. Accedere al sito del supporto di Azure e selezionare Ottenere supporto.