Azure IoT Hub-apparaatconnectiviteit bewaken, diagnosticeren en oplossen

Verbinding maken iviteitsproblemen voor IoT-apparaten kunnen lastig zijn om op te lossen, omdat er veel mogelijke storingspunten zijn. Toepassingslogica, fysieke netwerken, protocollen, hardware, IoT Hub en andere cloudservices kunnen allemaal problemen veroorzaken. De mogelijkheid om de bron van een probleem te detecteren en aan te geven, is essentieel. Een IoT-oplossing op schaal kan echter duizenden apparaten hebben, dus het is niet praktisch om afzonderlijke apparaten handmatig te controleren. IoT Hub kan worden geïntegreerd met twee Azure-services om u te helpen:

  • Met Azure Monitor azure Monitor kunt u telemetriegegevens van IoT Hub verzamelen, analyseren en er actie op ondernemen. Gebruik de bewakingsmogelijkheden van IoT Hub via Azure Monitor om deze problemen op schaal te detecteren, diagnosticeren en oplossen. Dit omvat het instellen van waarschuwingen voor het activeren van meldingen en acties wanneer de verbinding wordt verbroken en het configureren van logboeken die u kunt gebruiken om de voorwaarden te detecteren die de verbinding verbreken.

  • Azure Event Grid Voor kritieke infrastructuur en de verbinding per apparaat wordt verbroken, gebruikt u Azure Event Grid om u te abonneren op apparaatverbindingsgebeurtenissen en gebeurtenissen die door IoT Hub worden verzonden, te verbreken. Met Azure Event Grid kunt u een van de volgende gebeurtenis-handlers gebruiken:

    • Azure Functions
    • Logic Apps
    • Azure Automation
    • WebHooks
    • Queue Storage
    • Hybride verbindingen
    • Event Hubs

Event Grid versus Azure Monitor

Event Grid biedt een oplossing voor bewaking per apparaat met lage latentie die u kunt gebruiken om apparaatverbindingen voor kritieke apparaten en infrastructuur bij te houden. Azure Monitor biedt een metrische waarde met de naam Verbinding maken ed-apparaten die u kunt gebruiken om het aantal apparaten te bewaken dat is verbonden met uw IoT Hub en een waarschuwing te activeren wanneer dat aantal onder een statische drempelwaarde daalt.

Houd rekening met het volgende bij het bepalen of u Event Grid of Azure Monitor wilt gebruiken voor een bepaald scenario:

  • Latentie van waarschuwingen: IoT Hub-verbindingsevenementen worden veel sneller geleverd via Event Grid. Dit maakt Event Grid een betere keuze voor scenario's waarbij snelle meldingen wenselijk zijn.

  • Meldingen per apparaat: Event Grid biedt de mogelijkheid om verbindingen en verbindingen voor afzonderlijke apparaten bij te houden. Dit maakt Event Grid een betere keuze voor scenario's waarin u de verbindingen voor kritieke apparaten moet bewaken.

  • Lichtgewicht installatie: metrische waarschuwingen van Azure Monitor bieden een lichtgewicht installatie-ervaring waarvoor geen integratie met andere services nodig is om meldingen te verzenden via e-mail, sms, spraak en andere meldingen. Met Event Grid moet u integreren met andere Azure-services om meldingen te leveren. Beide services kunnen worden geïntegreerd met andere services om complexere acties te activeren.

Event Grid: Gebeurtenissen voor verbinding en verbinding verbreken bewaken

Als u de gebeurtenissen voor het verbinden en verbreken van apparaten in productie wilt bewaken, raden we u aan u te abonneren op de gebeurtenissen Device Verbinding maken ed en DeviceDisconnected in Event Grid om waarschuwingen te activeren en de status van de apparaatverbinding te bewaken. Event Grid biedt een lagere gebeurtenislatentie dan Azure Monitor en u kunt per apparaat bewaken. Deze factoren maken Event Grid de voorkeursmethode voor het bewaken van kritieke apparaten en infrastructuur.

Wanneer u Event Grid gebruikt om waarschuwingen op apparaten te bewaken of activeren, moet u ervoor zorgen dat u de periodieke verbroken verbindingen filtert vanwege het vernieuwen van SAS-tokens op apparaten die gebruikmaken van de Azure IoT SDK's. Zie het gedrag van de verbinding met MQTT-apparaten met Azure IoT SDK's voor meer informatie.

Bekijk de volgende artikelen voor meer informatie over het bewaken van apparaatverbindingsevenementen met Event Grid:

Azure Monitor: Verbindingsevenementen routeren naar logboeken

IoT Hub verzendt continu resourcelogboeken voor verschillende categorieën bewerkingen. Als u deze logboekgegevens wilt verzamelen, moet u echter een diagnostische instelling maken om deze naar een bestemming te routeren waar deze kunnen worden geanalyseerd of gearchiveerd. Een dergelijke bestemming is Azure Monitor-logboeken via een Log Analytics-werkruimte (zie prijzen), waar u de gegevens kunt analyseren met kusto-query's.

De categorie Verbindingen voor IoT Hub-resourcelogboeken verzendt bewerkingen en fouten die te maken hebben met apparaatverbindingen. In de volgende schermopname ziet u een diagnostische instelling voor het routeren van deze logboeken naar een Log Analytics-werkruimte:

Aanbevolen instelling voor het verzenden van connectiviteitslogboeken naar de Log Analytics-werkruimte.

We raden u aan om zo vroeg mogelijk een diagnostische instelling te maken nadat u uw IoT-hub hebt gemaakt, omdat, hoewel IoT Hub altijd resourcelogboeken verzendt, ze pas door Azure Monitor worden verzameld nadat u ze naar een bestemming hebt gerouteerd.

Zie Verzameling en routering voor meer informatie over routeringslogboeken naar een bestemming. Zie de zelfstudie Metrische gegevens en logboeken gebruiken voor gedetailleerde instructies voor het maken van een diagnostische instelling.

Azure Monitor: waarschuwingen voor metrische gegevens instellen voor de verbinding met apparaten

U kunt waarschuwingen instellen op basis van de metrische platformgegevens die door IoT Hub worden verzonden. Met metrische waarschuwingen kunt u personen informeren dat er een interessevoorwaarde is opgetreden en ook acties activeren die automatisch op die voorwaarde kunnen reageren.

De metrische gegevens van Verbinding maken ed apparaten (preview) geven aan hoeveel apparaten zijn verbonden met uw IoT Hub. U kunt waarschuwingen maken om te activeren als deze metrische waarde lager is dan een drempelwaarde:

Metrische waarschuwingslogica-instellingen voor verbonden apparaten.

U kunt waarschuwingsregels voor metrische gegevens gebruiken om te controleren op afwijkingen van de apparaatkoppeling op schaal. Gebruik waarschuwingen om te bepalen wanneer een aanzienlijk aantal apparaten onverwacht wordt verbroken. Wanneer dit wordt gedetecteerd, kunt u logboeken bekijken om het probleem op te lossen. Als u de verbinding per apparaat wilt bewaken, worden de verbindingen voor kritieke apparaten in bijna realtime verbroken, maar u moet Event Grid gebruiken.

Zie Waarschuwingen in IoT Hub bewaken voor meer informatie over waarschuwingen met IoT Hub. Zie de zelfstudie met metrische gegevens en logboeken gebruiken voor een overzicht van het maken van waarschuwingen in IoT Hub. Zie Overzicht van waarschuwingen in Microsoft Azure in de Documentatie van Azure Monitor voor een gedetailleerder overzicht van waarschuwingen.

Azure Monitor: Logboeken gebruiken om connectiviteitsfouten op te lossen

Wanneer u detecteert dat het apparaat wordt verbroken met behulp van metrische waarschuwingen van Azure Monitor of Event Grid, kunt u logboeken gebruiken om de reden op te lossen. In deze sectie wordt beschreven hoe u kunt zoeken naar veelvoorkomende problemen in Azure Monitor-logboeken. In de onderstaande stappen wordt ervan uitgegaan dat u al een diagnostische instelling hebt gemaakt om IoT Hub-Verbinding maken ions-logboeken naar een Log Analytics-werkruimte te verzenden.

Nadat u een diagnostische instelling hebt gemaakt om IoT Hub-resourcelogboeken naar Azure Monitor-logboeken te routeren, volgt u deze stappen om de logboeken in Azure Portal weer te geven.

  1. Navigeer naar uw IoT-hub in Azure Portal.

  2. Selecteer logboeken onder Bewaking in het linkerdeelvenster van uw IoT-hub.

  3. Als u connectiviteitsfoutlogboeken voor IoT Hub wilt isoleren, voert u de volgende query in de query-editor in en selecteert u Vervolgens Uitvoeren:

    AzureDiagnostics
    | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
    
  4. Als er resultaten zijn, zoekt OperationNameu naar , ResultType (foutcode) en ResultDescription (foutbericht) voor meer informatie.

    Voorbeeld van foutenlogboek

Gebruik de volgende handleidingen voor probleemoplossing voor hulp bij de meest voorkomende fouten:

Azure Monitor: logboeken gebruiken om de connectiviteit voor een specifiek apparaat te bewaken

Er kunnen situaties zijn waarin u Azure Monitor wilt gebruiken om connectiviteitsfouten en informatie voor een specifiek apparaat te zien. Als u connectiviteitsevenementen voor een apparaat wilt isoleren, kunt u dezelfde stappen volgen als in de vorige sectie, maar voert u de volgende query in. Vervang het testapparaat door de naam van uw apparaat.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "test-device"

De query retourneert zowel fout- als informatieve gebeurtenissen voor uw doelapparaat. In de volgende voorbeelduitvoer ziet u een informatieapparaat Verbinding maken gebeurtenis:

Schermopname van apparaat Verbinding maken gebeurtenis in logboeken.

Gedrag van de verbinding met MQTT-apparaten met Azure IoT SDK's

Azure IoT-apparaat-SDK's verbreken de verbinding met IoT Hub en maken vervolgens opnieuw verbinding wanneer ze SAS-tokens vernieuwen via het MQTT-protocol (en MQTT via WebSockets). In logboeken wordt dit weergegeven als de verbinding met een informatief apparaat en het verbinden van gebeurtenissen soms vergezeld van fout gebeurtenissen.

De levensduur van het token is standaard 60 minuten voor alle SDK's; Het kan echter worden gewijzigd door ontwikkelaars in sommige SDK's. De volgende tabel bevat een overzicht van de levensduur van het token, het vernieuwen van tokens en het vernieuwingsgedrag van tokens voor elk van de SDK's:

SDK Levensduur van token Token vernieuwen Verlengingsgedrag
.NET 60 minuten, configureerbaar 85% van de levensduur, configureerbaar SDK verbreekt en maakt opnieuw verbinding tijdens de levensduur van tokens plus een respijtperiode van 10 minuten. Informatieve gebeurtenissen en fouten die zijn gegenereerd in logboeken.
Java 60 minuten, configureerbaar 85% van de levensduur, niet configureerbaar SDK verbreekt en maakt opnieuw verbinding tijdens de levensduur van tokens plus een respijtperiode van 10 minuten. Informatieve gebeurtenissen en fouten die zijn gegenereerd in logboeken.
Node.js 60 minuten, configureerbaar Configureerbare DE SDK verbreekt en maakt opnieuw verbinding bij het vernieuwen van tokens. Alleen informatieve gebeurtenissen worden gegenereerd in logboeken.
Python 60 minuten, configureerbaar 120 seconden vóór de vervaldatum DE SDK verbreekt de verbinding en maakt opnieuw verbinding tijdens de levensduur van het token.

In de volgende schermopnamen ziet u het gedrag voor het vernieuwen van tokens in Azure Monitor-logboeken voor verschillende SDK's. De levensduur van het token en de drempelwaarde voor verlenging zijn gewijzigd van de standaardwaarden zoals vermeld.

  • .NET Device SDK met een levensduur van 1200 seconden (20 minuten) en verlenging ingesteld op 90% van de levensduur. wordt elke 30 minuten verbroken:

    Foutgedrag voor het vernieuwen van tokens via MQTT in Azure Monitor-logboeken met .NET SDK.

  • Java SDK met een levensduur van 300 seconden (5 minuten) en standaard 85% van de verlenging van de levensduur. De verbinding wordt elke 15 minuten verbroken:

    Foutgedrag voor het vernieuwen van tokens via MQTT in Azure Monitor-logboeken met Java SDK.

  • Node SDK met een levensduur van 300 seconden (5 minuten) en vernieuwing van tokens ingesteld op 3 minuten. De verbinding wordt verbroken bij het vernieuwen van tokens. Er zijn ook geen fouten, er worden alleen informatieve gebeurtenissen voor verbinding/verbinding verbroken verzonden:

    Foutgedrag voor het vernieuwen van tokens via MQTT in Azure Monitor-logboeken met Node SDK.

De volgende query is gebruikt om de resultaten te verzamelen. De query extraheert de SDK-naam en -versie uit de eigenschappentas. Zie de SDK-versie in IoT Hub-logboeken voor meer informatie.

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

Als ontwikkelaar of operator van IoT-oplossingen moet u op de hoogte zijn van dit gedrag om gebeurtenissen voor verbinding maken/verbreken en gerelateerde fouten in logboeken te interpreteren. Als u de levensduur of verlenging van het token voor apparaten wilt wijzigen, controleert u of het apparaat een apparaatdubbelinstelling of een apparaatmethode implementeert die dit mogelijk maakt.

Als u apparaatverbindingen met Event Hubs bewaakt, moet u ervoor zorgen dat u de periodieke verbroken verbindingen filtert vanwege het vernieuwen van het SAS-token. Activeer bijvoorbeeld geen acties op basis van verbroken verbindingen zolang de verbinding wordt gevolgd door een verbindingsevenement binnen een bepaalde periode.

Notitie

IoT Hub ondersteunt slechts één actieve MQTT-verbinding per apparaat. Elke nieuwe MQTT-verbinding namens dezelfde apparaat-id zorgt ervoor dat IoT Hub de bestaande verbinding neer zet.

400027 Verbinding maken ionForcefullyClosedOnNew Verbinding maken ion wordt aangemeld bij IoT Hub-logboeken

Ik heb de stappen geprobeerd, maar ze werkten niet

Als de vorige stappen niet hebben geholpen, probeert u het volgende:

Volgende stappen