Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Connectiviteitsproblemen 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. Deze aanpak 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 verbindingsverbrekingen per apparaat, abonneert u zich op de verbinding en verbreking van apparaatgebeurtenissen die door IoT Hub worden uitgezonden, door Azure Event Grid te gebruiken. Met Azure Event Grid kunt u een van de volgende gebeurtenis-handlers gebruiken:
- Azure Functions
- Logic Apps
- Azure Automation
- WebHooks
- Wachtrijopslag
- 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 Verbonden 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 de volgende problemen 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 verbroken verbindingen voor afzonderlijke apparaten bij te houden. Dit maakt Event Grid een betere keuze voor scenario's waarbij 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 aansluiten en loskoppelen monitoren
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.
Notitie
Als u gebeurtenissen voor het aansluiten en verbreken van apparaatverbindingen in productie wilt bewaken, raden we u aan zich te abonneren op de DeviceConnected- en DeviceDisconnected-gebeurtenissen in Event Grid om waarschuwingen te activeren en de status van de apparaatverbinding te bewaken.
Wanneer u Event Grid gebruikt om apparaatverbindingen te bewaken of waarschuwingen bij verbreking te activeren, moet u ervoor zorgen dat u een manier heeft om de periodieke verbroken verbindingen door SAS-tokenvernieuwing op apparaten die gebruikmaken van de Azure IoT SDK's, uit te filteren. Zie het verbreken van de verbinding van 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:
Zie React to IoT Hub-gebeurtenissen met Event Grid voor een overzicht van het gebruik van Event Grid met IoT Hub. Let vooral op de sectie Beperkingen voor apparaatverbindingsstatussen .
Zie Apparaatverbindingsevenementen bestellen vanuit Azure IoT Hub met behulp van Azure Cosmos DB voor een zelfstudie over het bestellen van apparaatverbindingsevenementen.
Zie E-mailmeldingen verzenden over Azure IoT Hub-gebeurtenissen met behulp van Event Grid en Logic Apps in de Event Grid-documentatie voor een zelfstudie over het verzenden van e-mailmeldingen.
Azure Monitor: Logboeken gebruiken om connectiviteitsfouten op te lossen
Wanneer u apparaatverbindingen detecteert die worden onderbroken door Azure Monitor-metrische waarschuwingen of Event Grid, kunt u logboeken gebruiken om de reden te analyseren. In deze sectie wordt beschreven hoe u kunt zoeken naar veelvoorkomende problemen in Azure Monitor-logboeken. In de volgende stappen wordt ervan uitgegaan dat u al een diagnostische instelling hebt gemaakt voor het verzenden van IoT Hub-verbindingslogboeken naar een Log Analytics-werkruimte.
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.
Navigeer naar uw IoT-hub in Azure Portal.
Selecteer logboeken onder Bewaking in het linkerdeelvenster van uw IoT-hub.
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")Als er resultaten zijn, zoekt u naar
OperationName,ResultType(foutcode) enResultDescription(foutbericht) voor meer informatie.
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 informatieve deviceConnect-gebeurtenis :
Gedrag van MQTT-apparaatontkoppeling 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 informatieve gebeurtenissen van het loskoppelen en verbinden van apparaten, soms vergezeld van foutgebeurtenissen.
De levensduur van het token is standaard 60 minuten voor alle SDK's; Ontwikkelaars kunnen dit echter wijzigen in een aantal 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 de verbinding en maakt opnieuw verbinding na de levensduur van een token 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 de verbinding en maakt opnieuw verbinding na de levensduur van een token plus een respijtperiode van 10 minuten. Informatieve gebeurtenissen en fouten die zijn gegenereerd in logboeken. |
| Node.js | 60 minuten, configureerbaar | Configureerbaar | 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 verloop | 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, zoals hierboven vermeld, gewijzigd van de standaardwaarden.
.NET Device SDK met een tokenduur van 1200 seconden (20 minuten) en verlenging ingesteld op 90% van de levensduur. onderbrekingen gebeuren elke 30 minuten
Java SDK met een levensduur van 300 seconden (5 minuten) en standaard een verlenging van 85% van de levensduur. De verbinding wordt elke 15 minuten verbroken:
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. Alleen informatieve gebeurtenissen voor verbinding/verbinding verbreken worden verzonden:
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 van het token of vernieuwingsgedrag voor apparaten wilt wijzigen, controleert u of het apparaat een apparaatdubbelinstelling of een apparaatmethode implementeert die deze wijziging 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 het verbreken van de verbinding wordt gevolgd door een opnieuw verbinden evenement binnen een bepaalde tijdspanne.
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 ConnectionForcefullyClosedOnNewConnection 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:
Als u toegang hebt tot de problematische apparaten, fysiek of extern (zoals SSH), volgt u de handleiding voor probleemoplossing aan de apparaatzijde om door te gaan met het oplossen van problemen.
Controleer of uw apparaten zijn ingeschakeld in Azure Portal > uw IoT Hub > IoT-apparaten.
Als uw apparaat gebruikmaakt van het MQTT-protocol, controleert u of poort 8883 is geopend. Zie Verbinding maken met IoT Hub (MQTT) voor meer informatie.
Vraagpagina over Microsoft Q&A voor Azure IoT Hub, Stack Overflow of ondersteuning voor Azure.
Volgende stappen
Zie Tijdelijke foutafhandeling voor meer informatie over het oplossen van tijdelijke problemen.
Zie Patronen voor opnieuw proberen voor meer informatie over de SDK's voor Azure IoT-apparaten en het beheren van nieuwe pogingen.