Problemen met uw IoT Edge-apparaat oplossen
Van toepassing op: IoT Edge 1.5 IoT Edge 1.4
Belangrijk
IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.
Als u problemen ondervindt met het uitvoeren van Azure IoT Edge in uw omgeving, gebruikt u dit artikel als richtlijn voor het oplossen van problemen en diagnostische gegevens.
Voer de opdracht 'check' uit
Uw eerste stap bij het oplossen van problemen met IoT Edge moet zijn om de check
opdracht te gebruiken, waarmee een verzameling configuratie- en connectiviteitstests voor veelvoorkomende problemen wordt uitgevoerd. De check
opdracht is beschikbaar in release 1.0.7 en hoger.
Notitie
Het hulpprogramma voor probleemoplossing kan geen connectiviteitscontroles uitvoeren als het IoT Edge-apparaat zich achter een proxyserver bevindt.
U kunt de check
opdracht als volgt uitvoeren of de --help
vlag opnemen om een volledige lijst met opties weer te geven:
sudo iotedge check
Het hulpprogramma voor probleemoplossing voert veel controles uit die in deze drie categorieën zijn gesorteerd:
- Configuratiecontroles onderzoeken details die kunnen voorkomen dat IoT Edge-apparaten verbinding maken met de cloud, inclusief problemen met het configuratiebestand en de containerengine.
- Verbindingscontroles controleren of de IoT Edge-runtime toegang heeft tot poorten op het hostapparaat en of alle IoT Edge-onderdelen verbinding kunnen maken met de IoT Hub. Deze set controles retourneert fouten als het IoT Edge-apparaat zich achter een proxy bevindt.
- Controles voor productiegereedheid zoeken naar aanbevolen best practices voor productie, zoals de status van ca-certificaten (device certificate authority) en configuratie van modulelogboekbestanden.
Het ioT Edge-controleprogramma maakt gebruik van een container om de diagnostische gegevens uit te voeren. De containerinstallatiekopieën, mcr.microsoft.com/azureiotedge-diagnostics:latest
zijn beschikbaar via Het Microsoft Container Registry. Als u een controle op een apparaat wilt uitvoeren zonder directe toegang tot internet, hebben uw apparaten toegang nodig tot de containerinstallatiekopieën.
In een scenario met geneste IoT Edge-apparaten kunt u toegang krijgen tot de diagnostische installatiekopie op downstreamapparaten door de installatiekopie te routeren die via de bovenliggende apparaten worden opgehaald.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
Zie IoT Edge-problemen oplossen voor informatie over elk van de diagnostische controles die door dit hulpprogramma worden uitgevoerd, inclusief wat u moet doen als u een fout of waarschuwing krijgt.
Foutopsporingsgegevens verzamelen met de opdracht 'support-bundle'
Wanneer u logboeken van een IoT Edge-apparaat wilt verzamelen, is het handigst om de support-bundle
opdracht te gebruiken. Met deze opdracht worden standaard module-, IoT Edge-beveiligingsbeheer- en containerenginelogboeken, iotedge check
JSON-uitvoer en andere nuttige foutopsporingsgegevens verzameld. Het comprimeert ze in één bestand voor eenvoudig delen. De support-bundle
opdracht is beschikbaar in release 1.0.9 en hoger.
Voer de support-bundle
opdracht uit met de --since
vlag om op te geven hoe lang u logboeken wilt ophalen uit het verleden. Haalt bijvoorbeeld 6h
logboeken op sinds de afgelopen zes uur, 6d
sinds de afgelopen zes dagen, 6m
sinds de afgelopen zes minuten enzovoort. Voeg de --help
vlag toe om een volledige lijst met opties weer te geven.
sudo iotedge support-bundle --since 6h
De opdracht maakt standaard een zip-bestand met de support-bundle
naam support_bundle.zip in de map waarin de opdracht wordt aangeroepen. Gebruik de vlag --output
om een ander pad of een andere bestandsnaam voor de uitvoer op te geven.
Bekijk de Help-informatie voor meer informatie over de opdracht.
iotedge support-bundle --help
U kunt ook de ingebouwde directe methode UploadSupportBundle aanroepen om de uitvoer van de opdracht support-bundle te uploaden naar Azure Blob Storage.
Waarschuwing
Uitvoer van de support-bundle
opdracht kan host-, apparaat- en modulenamen, informatie bevatten die door uw modules is geregistreerd, enzovoort. Houd er rekening mee als u de uitvoer deelt op een openbaar forum.
Metrische gegevens bekijken die zijn verzameld uit de runtime
De IoT Edge-runtimemodules produceren metrische gegevens om u te helpen bij het bewaken en begrijpen van de status van uw IoT Edge-apparaten. Voeg de module metrics-collector toe aan uw implementaties om het verzamelen van deze metrische gegevens af te handelen en deze naar de cloud te verzenden voor eenvoudigere bewaking.
Zie Metrische gegevens verzamelen en transporten voor meer informatie.
Uw IoT Edge-versie controleren
Als u een oudere versie van IoT Edge hebt, kunt u het probleem mogelijk oplossen door een upgrade uit te voeren. Het iotedge check
hulpprogramma controleert of de IoT Edge-beveiligingsdaemon de nieuwste versie is, maar controleert niet de versies van de IoT Edge-hub en agentmodules. Als u de versie van de runtimemodules op uw apparaat wilt controleren, gebruikt u de opdrachten iotedge logs edgeAgent
en iotedge logs edgeHub
. Het versienummer staat in de logboeken vermeld wanneer de module wordt gestart.
Zie De IoT Edge-beveiligingsdaemon en runtime bijwerken voor instructies over het bijwerken van uw apparaat.
De installatie van IoT Edge op uw apparaten controleren
U kunt de installatie van IoT Edge op uw apparaten controleren door de edgeAgent-moduledubbel te controleren.
Voer de volgende opdracht uit vanuit Azure Cloud Shell om de nieuwste edgeAgent-moduledubbel op te halen:
az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>
Met deze opdracht worden alle gerapporteerde eigenschappen van edgeAgent uitgevoerd. Hier volgen enkele nuttige functies die de status van het apparaat controleren:
- runtimestatus
- begintijd van runtime
- runtime laatste afsluittijd
- Aantal runtime-herstarts
Controleer de status van ioT Edge-beveiligingsbeheer en de bijbehorende logboeken
IoT Edge-beveiligingsbeheer is verantwoordelijk voor bewerkingen zoals het initialiseren van het IoT Edge-systeem bij het opstarten en inrichten van apparaten. Als IoT Edge niet wordt gestart, kunnen de beveiligingsbeheerlogboeken nuttige informatie bieden.
Bekijk de status van de IoT Edge-systeemservices:
sudo iotedge system status
Bekijk de logboeken van de IoT Edge-systeemservices:
sudo iotedge system logs -- -f
Schakel logboeken op foutopsporingsniveau in om gedetailleerdere logboeken van de IoT Edge-systeemservices weer te geven:
Schakel logboeken op foutopsporingsniveau in.
sudo iotedge system set-log-level debug sudo iotedge system restart
Ga terug naar de standaardlogboeken op informatieniveau na foutopsporing.
sudo iotedge system set-log-level info sudo iotedge system restart
Containerlogboeken controleren op problemen
Zodra de IoT Edge-beveiligingsdaemon wordt uitgevoerd, bekijkt u de logboeken van de containers om problemen te detecteren. Begin met uw geïmplementeerde containers en bekijk vervolgens de containers waaruit de IoT Edge-runtime bestaat: edgeAgent en edgeHub. De Logboeken van de IoT Edge-agent bieden doorgaans informatie over de levenscyclus van elke container. De IoT Edge-hublogboeken bieden informatie over berichten en routering.
U kunt de containerlogboeken ophalen van verschillende locaties:
Voer op het IoT Edge-apparaat de volgende opdracht uit om logboeken weer te geven:
iotedge logs <container name>
Gebruik in Azure Portal het ingebouwde hulpprogramma voor probleemoplossing. IoT Edge-apparaten bewaken en problemen oplossen vanuit Azure Portal
Gebruik de directe methode UploadModuleLogs om de logboeken van een module te uploaden naar Azure Blob Storage.
Containerlogboeken opschonen
De Moby-containerengine stelt standaard geen limieten in voor de grootte van containerlogboeken. In de loop van de tijd kunnen uitgebreide logboeken ertoe leiden dat het apparaat volloopt met logboeken en onvoldoende schijfruimte heeft. Als grote containerlogboeken van invloed zijn op de prestaties van uw IoT Edge-apparaat, gebruikt u de volgende opdracht om de container samen met de bijbehorende logboeken af te dwingen.
Als u nog steeds problemen ondervindt, wacht u totdat u de containerlogboeken hebt gecontroleerd om deze stap uit te voeren.
Waarschuwing
Als u afdwingen dat de EdgeHub-container wordt verwijderd terwijl deze een niet-bezorgde berichtenachterstand heeft en er geen hostopslag is ingesteld, gaan de niet-bezorgde berichten verloren.
docker rm --force <container name>
Voor doorlopende onderhouds- en productiescenario's stelt u het standaardstuurprogramma voor logboekregistratie in.
De berichten bekijken die via de IoT Edge-hub gaan
U kunt de berichten bekijken die via de IoT Edge-hub gaan en inzichten verzamelen uit uitgebreide logboeken van de runtimecontainers. Als u uitgebreide logboeken voor deze containers wilt inschakelen, stelt u de RuntimeLogLevel
omgevingsvariabele in het implementatiemanifest in.
Als u berichten wilt bekijken die via de IoT Edge-hub gaan, stelt u de RuntimeLogLevel
omgevingsvariabele debug
in op de edgeHub-module.
Zowel de edgeHub- als edgeAgent-modules hebben deze runtimelogboekomgevingsvariabele, waarbij de standaardwaarde is ingesteld op info
. Deze omgevingsvariabele kan de volgende waarden aannemen:
- noodlottig
- error
- waarschuwing
- Info
- foutopsporing
- uitgebreid
U kunt ook controleren of er berichten worden verzonden tussen IoT Hub- en IoT-apparaten. Bekijk deze berichten met behulp van de Azure IoT Hub-extensie voor Visual Studio Code. Zie Het handige hulpprogramma bij het ontwikkelen met Azure IoT voor meer informatie.
Containers opnieuw opstarten
Nadat u de logboeken en berichten voor informatie hebt onderzocht, kunt u proberen containers opnieuw te starten.
Gebruik op het IoT Edge-apparaat de volgende opdrachten om modules opnieuw op te starten:
iotedge restart <container name>
Start de IoT Edge-runtimecontainers opnieuw:
iotedge restart edgeAgent && iotedge restart edgeHub
U kunt modules ook extern opnieuw opstarten vanuit Azure Portal. Zie IoT Edge-apparaten bewaken en problemen oplossen vanuit Azure Portal voor meer informatie.
Uw firewall- en poortconfiguratieregels controleren
Met Azure IoT Edge kan communicatie van een on-premises server naar de Azure-cloud worden uitgevoerd met behulp van ondersteunde IoT Hub-protocollen. Zie het kiezen van een communicatieprotocol voor meer informatie. Voor verbeterde beveiliging zijn communicatiekanalen tussen Azure IoT Edge en Azure IoT Hub altijd geconfigureerd voor uitgaand verkeer. Deze configuratie is gebaseerd op het patroon Services Assisted Communication, waardoor het kwetsbaarheid voor aanvallen voor een kwaadwillende entiteit wordt geminimaliseerd om te verkennen. Binnenkomende communicatie is alleen vereist voor specifieke scenario's waarbij Azure IoT Hub berichten naar het Azure IoT Edge-apparaat moet pushen. Cloud-naar-apparaat-berichten worden beveiligd met behulp van beveiligde TLS-kanalen en kunnen verder worden beveiligd met X.509-certificaten en TPM-apparaatmodules. Azure IoT Edge Security Manager bepaalt hoe deze communicatie tot stand kan worden gebracht. Zie IoT Edge Security Manager.
Hoewel IoT Edge een verbeterde configuratie biedt voor het beveiligen van Azure IoT Edge-runtime en geïmplementeerde modules, is deze nog steeds afhankelijk van de onderliggende computer- en netwerkconfiguratie. Daarom is het noodzakelijk om ervoor te zorgen dat de juiste netwerk- en firewallregels zijn ingesteld voor beveiligde edge-naar-cloudcommunicatie. De volgende tabel kan worden gebruikt als richtlijn bij configuratiefirewallregels voor de onderliggende servers waarop Azure IoT Edge-runtime wordt gehost:
Protocol | Port | Binnenkomend | Uitgaand | Richtlijn |
---|---|---|---|---|
MQTT | 8883 | GEBLOKKEERD (standaard) | GEBLOKKEERD (standaard) |
|
AMQP | 5671 | GEBLOKKEERD (standaard) | OPENEN (standaard) |
|
HTTPS | 443 | GEBLOKKEERD (standaard) | OPENEN (standaard) |
|
Laatste redmiddel: alle containers stoppen en opnieuw maken
Soms kan een systeem aanzienlijke speciale aanpassingen vereisen om te kunnen werken met bestaande netwerk- of besturingssysteembeperkingen. Een systeem kan bijvoorbeeld een andere koppeling van gegevensschijven en proxyinstellingen vereisen. Als u alle vorige stappen hebt geprobeerd en nog steeds containerfouten hebt opgehaald, worden de docker-systeemcaches of permanente netwerkinstellingen mogelijk niet bijgewerkt met de meest recente herconfiguratie. In dit geval is de laatste redmiddeloptie om een volledig nieuwe start te maken docker prune
.
Met de volgende opdracht stopt u het IoT Edge-systeem (en dus alle containers), gebruikt u de optie 'all' en 'volume' om docker prune
alle containers en volumes te verwijderen. Bekijk de waarschuwing dat de opdracht problemen ondervindt en bevestig bij y
wanneer u klaar bent.
sudo iotedge system stop
docker system prune --all --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all volumes not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N]
Start het systeem opnieuw. Als u veilig wilt zijn, past u eventueel resterende configuratie toe en start u het systeem met één opdracht.
sudo iotedge config apply
Wacht een paar minuten en controleer het opnieuw.
sudo iotedge list
Volgende stappen
Denkt u dat u een fout op het IoT Edge-platform hebt gevonden? Dien een probleem in, zodat we kunnen blijven verbeteren.
Als u meer vragen hebt, maakt u een ondersteuningsaanvraag voor hulp.