Monitorare, diagnosticare e risolvere i problemi di disconnessione con l'hub IoT di AzureMonitor, diagnose, and troubleshoot disconnects with Azure IoT Hub

I problemi di connettività per i dispositivi IoT possono essere difficili da risolvere poiché sono presenti diversi possibili punti di errore.Connectivity issues for IoT devices can be difficult to troubleshoot because there are many possible points of failure. La logica dell'applicazione, le reti fisiche, i protocolli, l'hardware, l'hub IoT e altri servizi cloud sono tutti elementi che possono causare problemi.Application logic, physical networks, protocols, hardware, IoT Hub, and other cloud services can all cause problems. La capacità di rilevare e individuare l'origine di un problema è fondamentale.The ability to detect and pinpoint the source of an issue is critical. Tuttavia, una soluzione IoT su larga scala potrebbe avere migliaia di dispositivi, pertanto controllare manualmente ogni singolo dispositivo non sarebbe pratico.However, an IoT solution at scale could have thousands of devices, so it's not practical to check individual devices manually. L'hub Internet delle cose si integra con due servizi di Azure che consentono di:IoT Hub integrates with two Azure services to help you:

  • Monitoraggio di Azure Per individuare, diagnosticare e risolvere questi problemi su larga scala, usare l'hub informazioni sulle funzionalità di monitoraggio disponibile tramite monitoraggio di Azure.Azure Monitor To help you detect, diagnose, and troubleshoot these issues at scale, use the monitoring capabilities IoT Hub provides through Azure Monitor. Ciò include la configurazione di avvisi per attivare notifiche e azioni quando si verificano disconnessioni e la configurazione di log che è possibile usare per individuare le condizioni che hanno causato le disconnessioni.This includes setting up alerts to trigger notifications and actions when disconnects occur and configuring logs that you can use to discover the conditions that caused disconnects.

  • Griglia di eventi di Azure Per la disconnessione dell'infrastruttura critica e per i dispositivi, usare griglia di eventi di Azure per sottoscrivere gli eventi di connessione e disconnessione del dispositivo emessi dall'hub.Azure Event Grid For critical infrastructure and per-device disconnects, use Azure Event Grid to subscribe to device connect and disconnect events emitted by IoT Hub.

In entrambi i casi, queste funzionalità sono limitate a quanto può essere osservato dall'hub Internet, quindi si consiglia di seguire le procedure consigliate per il monitoraggio dei dispositivi e di altri servizi di Azure.In both cases, these capabilities are limited to what IoT Hub can observe, so we also recommend that you follow monitoring best practices for your devices and other Azure services.

Griglia di eventi e monitoraggio di AzureEvent Grid vs. Azure Monitor

Griglia di eventi offre una soluzione di monitoraggio per dispositivo a bassa latenza che è possibile usare per tenere traccia delle connessioni dei dispositivi e dell'infrastruttura critiche.Event Grid provides a low-latency, per-device monitoring solution that you can use to track device connections for critical devices and infrastructure. Monitoraggio di Azure fornisce una metrica, dispositivi connessi, che è possibile usare per monitorare il numero di dispositivi connessi all'hub Internet e attivare un avviso quando tale numero scende al di sotto di una soglia statica.Azure Monitor provides a metric, Connected devices, that you can use to monitor the number of devices connected to your IoT Hub and trigger an alert when that number drops below a static threshold.

Quando si decide se usare griglia di eventi o monitoraggio di Azure per uno scenario specifico, tenere presente quanto segue:Consider the following when deciding whether to use Event Grid or Azure Monitor for a particular scenario:

  • Latenza degli avvisi: gli eventi di connessione dell'hub Internet vengono recapitati molto più rapidamente tramite griglia di eventi.Alert latency: IoT Hub connection events are delivered much more quickly through Event Grid. In questo modo, griglia di eventi è una scelta migliore per gli scenari in cui è auspicabile una notifica rapida.This makes Event Grid a better choice for scenarios where quick notification is desirable.

  • Notifiche per dispositivo: griglia di eventi consente di rilevare le connessioni e le disconnessioni per i singoli dispositivi.Per-device notifications: Event Grid provides the ability to track connects and disconnects for individual devices. Questa operazione rende griglia di eventi una scelta migliore per gli scenari in cui è necessario monitorare le connessioni per i dispositivi critici.This makes Event Grid a better choice for scenarios where you need to monitor the connections for critical devices.

  • Installazione Lightweight: gli avvisi delle metriche di monitoraggio di Azure offrono un'esperienza di installazione leggera che non richiede l'integrazione con altri servizi per inviare notifiche tramite posta elettronica, SMS, voce e altre notifiche.Lightweight setup: Azure Monitor metric alerts provide a lightweight setup experience that doesn't require integrating with other services to deliver notifications through Email, SMS, Voice, and other notifications. Con griglia di eventi è necessario eseguire l'integrazione con altri servizi di Azure per recapitare le notifiche.With Event Grid, you need to integrate with other Azure services to deliver notifications. Entrambi i servizi possono essere integrati con altri servizi per attivare azioni più complesse.Both services can integrate with other services to trigger more complex actions.

A causa delle funzionalità di bassa latenza per dispositivo, per gli ambienti di produzione è consigliabile usare griglia di eventi per monitorare le connessioni.Due to its low-latency, per-device capabilities, for production environments, we highly recommend using Event Grid to monitor connections. Naturalmente, la scelta non è esclusiva. è possibile usare sia gli avvisi della metrica di monitoraggio di Azure che griglia di eventi.Of course, the choice is not exclusive, you can use both Azure Monitor metric alerts and Event Grid. Indipendentemente dalla scelta effettuata per le disconnessioni di rilevamento, è probabile che si usino i log delle risorse di monitoraggio di Azure per risolvere i motivi della disconnessione imprevista del dispositivo.Regardless of your choice for tracking disconnects, you will likely use Azure Monitor resource logs to help troubleshoot the reasons for unexpected device disconnects. Le sezioni seguenti illustrano ciascuna di queste opzioni in modo più dettagliato.The following sections discuss each of these options in more detail.

Griglia di eventi: monitorare gli eventi di connessione e disconnessione del dispositivoEvent Grid: Monitor device connect and disconnect events

Per monitorare gli eventi di connessione e disconnessione del dispositivo nell'ambiente di produzione, è consigliabile sottoscrivere gli eventi DeviceConnected e DeviceDisconnected in griglia di eventi per attivare gli avvisi e monitorare lo stato di connessione del dispositivo.To monitor device connect and disconnect events in production, we recommend subscribing to the DeviceConnected and DeviceDisconnected events in Event Grid to trigger alerts and monitor device connection state. Griglia di eventi offre una latenza di eventi molto inferiore rispetto a monitoraggio di Azure ed è possibile monitorarli in base ai singoli dispositivi, anziché per il numero totale di dispositivi connessi.Event Grid provides much lower event latency than Azure Monitor, and you can monitor on a per-device basis, rather than for the total number of connected devices. Questi fattori rendono griglia di eventi il metodo preferito per il monitoraggio di dispositivi e infrastrutture critiche.These factors make Event Grid the preferred method for monitoring critical devices and infrastructure.

Quando si usa griglia di eventi per monitorare o attivare gli avvisi per le disconnessioni del dispositivo, assicurarsi di creare un metodo per filtrare le disconnessioni periodiche a causa del rinnovo dei token SAS nei dispositivi che usano gli SDK Azure.When you use Event Grid to monitor or trigger alerts on device disconnects, make sure you build in a way of filtering out the periodic disconnects due to SAS token renewal on devices that use the Azure IoT SDKs. Per altre informazioni, vedere comportamento di disconnessione del dispositivo MQTT con gli SDK Azure.To learn more, see MQTT device disconnect behavior with Azure IoT SDKs.

Esaminare gli argomenti seguenti per ulteriori informazioni sul monitoraggio degli eventi di connessione del dispositivo con griglia di eventi:Explore the following topics to learn more about monitoring device connection events with Event Grid:

Monitoraggio di Azure: indirizzare gli eventi di connessione ai logAzure Monitor: Route connection events to logs

L'hub tutto emette continuamente log delle risorse per diverse categorie di operazioni.IoT hub continuously emits resource logs for several categories of operations. Per raccogliere i dati di log, tuttavia, è necessario creare un'impostazione di diagnostica per instradarla a una destinazione in cui possa essere analizzata o archiviata.To collect this log data, though, you need to create a diagnostic setting to route it to a destination where it can be analyzed or archived. Una di queste destinazioni è rappresentata dai log di monitoraggio di Azure tramite un'area di lavoro Log Analytics (vedere i prezzi), in cui è possibile analizzare i dati usando le query kusto.One such destination is Azure Monitor Logs via a Log Analytics workspace (see pricing), where you can analyze the data using Kusto queries.

La categoria connessioni log risorse hub Internet genera operazioni ed errori che è necessario eseguire con le connessioni del dispositivo.The IoT Hub resource logs connections category emits operations and errors having to do with device connections. Lo screenshot seguente mostra un'impostazione di diagnostica per indirizzare questi log a un'area di lavoro Log Analytics:The following screenshot shows a diagnostic setting to route these logs to a Log Analytics workspace:

Impostazione consigliata per inviare i log di connettività all'area di lavoro Log Analytics.

Si consiglia di creare un'impostazione di diagnostica il prima possibile dopo aver creato l'hub di Internet delle cose, perché, sebbene l'hub tutto emetta sempre i log delle risorse, questi non vengono raccolti da monitoraggio di Azure finché non vengono indirizzati a una destinazione.We recommend creating a diagnostic setting as early as possible after you create your IoT hub, because, although IoT Hub always emits resource logs, they aren't collected by Azure Monitor until you route them to a destination.

Per ulteriori informazioni sul routing dei log a una destinazione, vedere raccolta e routing.To learn more about routing logs to a destination, see Collection and routing. Per istruzioni dettagliate su come creare un'impostazione di diagnostica, vedere l' esercitazione usare metriche e log.For detailed instructions to create a diagnostic setting, see the Use metrics and logs tutorial.

Monitoraggio di Azure: impostare gli avvisi sulle metriche per la disconnessione dei dispositivi su larga scalaAzure Monitor: Set up metric alerts for device disconnect at scale

È possibile configurare gli avvisi in base alle metriche della piattaforma emesse dall'hub.You can set up alerts based on the platform metrics emitted by IoT Hub. Con gli avvisi delle metriche è possibile notificare agli utenti che si è verificata una condizione di interesse e attivare anche azioni che possono rispondere automaticamente a tale condizione.With metric alerts, you can notify individuals that a condition of interest has occurred and also trigger actions that can respond to that condition automatically.

La metrica dispositivi connessi (anteprima) indica il numero di dispositivi connessi all'hub Internet.The Connected devices (preview) metric tells you how many devices are connected to your IoT Hub. È possibile creare avvisi da attivare se questa metrica scende al di sotto di un valore di soglia:You can create alerts to trigger if this metric drops below a threshold value:

Impostazioni della logica di avviso per la metrica dei dispositivi connessi.

È possibile usare le regole di avviso delle metriche per monitorare le anomalie di disconnessione dei dispositivi su larga scala.You can use metric alert rules to monitor for device disconnect anomalies at-scale. Ovvero, quando un numero significativo di dispositivi si disconnette in modo imprevisto.That is, when a significant number of devices unexpectedly disconnect. Quando viene rilevata una tale occorrenza, è possibile esaminare i log per risolvere il problema.When such an occurrence is detected, you can look at logs to help troubleshoot the issue. Per monitorare le disconnessioni per ogni dispositivo e le disconnessioni per i dispositivi critici; Tuttavia, è necessario usare griglia di eventi.To monitor per-device disconnects and disconnects for critical devices; however, you must use Event Grid. Griglia di eventi offre anche una maggiore esperienza in tempo reale rispetto alle metriche di Azure.Event Grid also provides a more real-time experience than Azure metrics.

Per altre informazioni sugli avvisi con l'hub Internet, vedere avvisi nell'hub di monitoraggio.To learn more about alerts with IoT Hub, see Alerts in Monitor IoT Hub. Per una procedura dettagliata per la creazione di avvisi nell'hub Internet, vedere l' esercitazione usare metriche e log.For a walk-through of creating alerts in IoT Hub, see the Use metrics and logs tutorial. Per una panoramica più dettagliata degli avvisi, vedere Panoramica degli avvisi in Microsoft Azure nella documentazione di monitoraggio di Azure.For a more detailed overview of alerts, see Overview of alerts in Microsoft Azure in the Azure Monitor documentation.

Monitoraggio di Azure: usare i log per risolvere gli errori di connettivitàAzure Monitor: Use logs to resolve connectivity errors

Quando si rilevano disconnessioni del dispositivo, sia che si tratti di avvisi delle metriche di monitoraggio di Azure o di griglia di eventi, è possibile usare i log per risolvere il motivo.When you detect device disconnects, whether it's with Azure Monitor metric alerts or with Event Grid, you can use logs to help troubleshoot the reason. Questa sezione descrive come cercare problemi comuni nei log di monitoraggio di Azure.This section describes how to look for common issues in Azure Monitor Logs. I passaggi seguenti presuppongono che sia già stata creata un' impostazione di diagnostica per inviare i log delle connessioni dell'hub Internet a un'area di lavoro log Analytics.The steps below assume you've already created a diagnostic setting to send IoT Hub Connections logs to a Log Analytics workspace.

Dopo aver creato un'impostazione di diagnostica per indirizzare i log delle risorse dell'hub Internet ai log di monitoraggio di Azure, seguire questa procedura per visualizzare i log in portale di Azure.After you've created a diagnostic setting to route IoT Hub resource logs to Azure Monitor Logs, follow these steps to view the logs in Azure portal.

  1. Passare all'hub Internet in portale di Azure.Navigate to your IoT hub in Azure portal.

  2. In monitoraggio nel riquadro sinistro dell'hub Internet, selezionare log.Under Monitoring on the left pane of your IoT hub, Select Logs.

  3. Per isolare i log degli errori di connettività per l'hub tutto, immettere la query seguente nell'editor di query e quindi selezionare Esegui:To isolate connectivity error logs for IoT Hub, enter the following query in the query editor and then select Run:

    AzureDiagnostics
    | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
    
  4. Se sono presenti risultati, cercare OperationName, ResultType (codice di errore) e ResultDescription (messaggio di errore) per ottenere altri dettagli sull'errore.If there are results, look for OperationName, ResultType (error code), and ResultDescription (error message) to get more detail on the error.

    Esempio di log degli errori

Dopo aver identificato l'errore, seguire le guide alla risoluzione dei problemi per informazioni sugli errori più comuni:Once you've identified the error, follow the problem resolution guides for help with the most common errors:

Comportamento di disconnessione del dispositivo MQTT con gli SDK AzureMQTT device disconnect behavior with Azure IoT SDKs

Gli SDK per dispositivi Azure Internet si disconnettono dall'hub Internet e quindi riconnettono quando rinnovano i token SAS tramite il protocollo MQTT (e MQTT over WebSocket).Azure IoT device SDKs disconnect from IoT Hub and then reconnect when they renew SAS tokens over the MQTT (and MQTT over WebSockets) protocol. Nei log, questo viene visualizzato come disconnessione del dispositivo informativo ed eventi di connessione talvolta accompagnati da eventi di errore.In logs, this shows up as informational device disconnect and connect events sometimes accompanied by error events.

Per impostazione predefinita, la durata del token è di 60 minuti per tutti gli SDK. Tuttavia, può essere modificato dagli sviluppatori in alcuni degli SDK.By default, the token lifespan is 60 minutes for all SDKs; however, it can be changed by developers in some of the SDKs. La tabella seguente riepiloga il comportamento per la durata dei token, il rinnovo dei token e il rinnovo del token per ogni SDK:The following table summarizes the token lifespan, token renewal, and token renewal behavior for each of the SDKs:

SDKSDK Durata tokenToken lifespan Rinnovo del tokenToken renewal Comportamento di rinnovoRenewal behavior
.NET.NET 60 minuti, configurabile60 minutes, configurable 85% di durata, configurabile85% of lifespan, configurable SDK si connette e si disconnette alla durata del token, oltre a un periodo di tolleranza di 10 minuti.SDK connects and disconnects at token lifespan plus a 10-minute grace period. Eventi informativi ed errori generati nei log.Informational events and errors generated in logs.
JavaJava 60 minuti, configurabile60 minutes, configurable 85% di durata, non configurabile85% of lifespan, not configurable SDK si connette e si disconnette alla durata del token, oltre a un periodo di tolleranza di 10 minuti.SDK connects and disconnects at token lifespan plus a 10-minute grace period. Eventi informativi ed errori generati nei log.Informational events and errors generated in logs.
Node.jsNode.js 60 minuti, configurabile60 minutes, configurable configurabileconfigurable SDK si connette e si disconnette al rinnovo del token.SDK connects and disconnects at token renewal. Nei log vengono generati solo gli eventi informativi.Only informational events are generated in logs.
PythonPython 60 minuti, non configurabile60 minutes, not configurable -- L'SDK si connette e si disconnette alla durata del token.SDK connects and disconnects at token lifespan.

Gli screenshot seguenti mostrano il comportamento del rinnovo dei token nei log di monitoraggio di Azure per diversi SDK.The following screenshots show the token renewal behavior in Azure Monitor Logs for different SDKs. La durata del token e la soglia di rinnovo sono state modificate rispetto ai valori predefiniti, come indicato.The token lifespan and renewal threshold have been changed from their defaults as noted.

  • .NET Device SDK con una durata del token di 1200 secondi (20 minuti) e un rinnovo impostati per la durata del 90% della durata..NET device SDK with a 1200 second (20 minute) token lifespan and renewal set to happen at 90% of lifespan. le disconnessioni avvengono ogni 30 minuti:disconnects happen every 30 minutes:

    Comportamento dell'errore per il rinnovo del token su MQTT nei log di monitoraggio di Azure con .NET SDK.

  • Java SDK con una durata del token di 300 secondi (5 minuti) e il 85% predefinito del rinnovo della durata.Java SDK with a 300 second (5 minute) token lifespan and default 85% of lifespan renewal. Le disconnessioni avvengono ogni 15 minuti:Disconnects happen every 15 minutes:

    Comportamento dell'errore per il rinnovo del token su MQTT nei log di monitoraggio di Azure con Java SDK.

  • Node SDK con una durata del token di 300 secondi (5 minuti) e il rinnovo del token impostati per essere eseguita in 3 minuti.Node SDK with a 300 second (5 minute) token lifespan and token renewal set to happen at 3 minutes. Le disconnessioni si verificano durante il rinnovo del token.Disconnects happen on token renewal. Inoltre, non sono presenti errori, vengono emessi solo eventi di connessione/disconnessione informativi:Also, there are no errors, only informational connect/disconnect events are emitted:

    Comportamento dell'errore per il rinnovo del token su MQTT nei log di monitoraggio di Azure con node SDK.

Per raccogliere i risultati, è stata utilizzata la query seguente.The following query was used to collect the results. La query estrae il nome e la versione dell'SDK dal contenitore delle proprietà. per altre informazioni, vedere versione SDK nei log dell'hubInternet.The query extracts the SDK name and version from the property bag; to learn more, see SDK version in IoT Hub logs.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) , Protocol =  tostring(parsed_json.protocol)
| distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion

In qualità di sviluppatore o operatore di soluzioni Internet, è necessario essere a conoscenza di questo comportamento per interpretare gli eventi di connessione/disconnessione e gli errori correlati nei log.As an IoT solutions developer or operator, you need to be aware of this behavior in order to interpret connect/disconnect events and related errors in logs. Se si vuole modificare la durata del token o il comportamento di rinnovo per i dispositivi, verificare se il dispositivo implementa un'impostazione del dispositivo gemello o un metodo del dispositivo che lo rende possibile.If you want to change the token lifespan or renewal behavior for devices, check to see whether the device implements a device twin setting or a device method that makes this possible.

Se si esegue il monitoraggio delle connessioni del dispositivo con hub eventi, assicurarsi di compilare in un modo per filtrare le disconnessioni periodiche a causa del rinnovo del token SAS. Se, ad esempio, non si attivano le azioni in base alle disconnessioni, purché l'evento di disconnessione sia seguito da un evento Connect entro un determinato intervallo di tempo.If you're monitoring device connections with Event Hub, make sure you build in a way of filtering out the periodic disconnects due to SAS token renewal; for example, by not triggering actions based on disconnects as long as the disconnect event is followed by a connect event within a certain time span.

Nota

L'hub IoT supporta solo una connessione MQTT attiva per ogni dispositivo.IoT Hub only supports one active MQTT connection per device. Qualsiasi nuova connessione MQTT per conto dello stesso ID di dispositivo causa la perdita della connessione esistente da parte dell'hub IoT.Any new MQTT connection on behalf of the same device ID causes IoT Hub to drop the existing connection.

400027 ConnectionForcefullyClosedOnNewConnection verrà registrato nei log dell'hub degli eventi400027 ConnectionForcefullyClosedOnNewConnection will be logged into IoT Hub Logs

L'esecuzione della procedura non ha risolto il problemaI tried the steps, but they didn't work

Se il problema persiste anche dopo l'esecuzione dei passaggi descritti sopra, provare le soluzioni seguenti:If the previous steps didn't help, try:

Se questa guida non è stata utile, lasciare un commento nella sezione dei commenti seguente per contribuire a migliorare la documentazione per tutti gli utenti.To help improve the documentation for everyone, leave a comment in the feedback section below if this guide didn't help you.

Passaggi successiviNext steps