Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
IoT Edge 1.5
Viktigt!
IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphör från och med den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.
Om du får problem med att köra Azure IoT Edge i din miljö använder du den här artikeln som en guide för felsökning och diagnostik.
Kör kommandot "check"
Ditt första steg när du felsöker IoT Edge bör vara att använda check kommandot, som kör en samling konfigurations- och anslutningstester för vanliga problem. Kommandot check är tillgängligt i version 1.0.7 och senare.
Kommentar
Felsökningsverktyget kan inte köra anslutningskontroller om IoT Edge-enheten finns bakom en proxyserver.
Du kan köra kommandot på check följande sätt eller inkludera --help flaggan för att se en fullständig lista med alternativ:
sudo iotedge check
Felsökningsverktyget kör många kontroller som är sorterade i följande tre kategorier:
- Konfigurationskontroller undersöker information som kan hindra IoT Edge-enheter från att ansluta till molnet, inklusive problem med konfigurationsfilen och containermotorn.
- Anslutningskontroller kontrollerar att IoT Edge-körningen kan komma åt portar på värdenheten och att alla IoT Edge-komponenter kan ansluta till IoT Hub. Den här uppsättningen kontroller returnerar fel om IoT Edge-enheten finns bakom en proxy.
- Produktionsberedskapskontroller letar efter rekommenderade metodtips för produktion, till exempel status för certifikat för enhetscertifikatutfärdare (CA) och konfiguration av modulloggfil.
IoT Edge-kontrollverktyget använder en container för att köra dess diagnostik. Containeravbildningen, mcr.microsoft.com/azureiotedge-diagnostics:latest, är tillgänglig via Microsoft Artifact Registry (MAR). Om du behöver köra en kontroll på en enhet utan direkt åtkomst till Internet behöver dina enheter åtkomst till containeravbildningen.
I ett scenario med kapslade IoT Edge-enheter kan du få åtkomst till diagnostikbilden på underordnade enheter genom att dirigera avbildningen genom de överordnade enheterna.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
Information om var och en av de diagnostiska kontroller som det här verktyget kör, inklusive vad du ska göra om du får ett fel eller en varning, finns i Inbyggda felsökningsfunktioner.
Samla in felsökningsinformation med kommandot "support-bundle"
När du behöver samla in loggar från en IoT Edge-enhet är det enklaste sättet att använda support-bundle kommandot. Som standard samlar det här kommandot in modulen, IoT Edge-säkerhetshanteraren och containermotorloggar, iotedge check JSON-utdata och annan användbar felsökningsinformation. Den komprimerar dem till en enda fil för enkel delning. Kommandot support-bundle är tillgängligt i version 1.0.9 och senare.
support-bundle Kör kommandot med --since flaggan för att ange hur länge från det förflutna du vill hämta loggar. Till exempel 6h hämtar loggar sedan de senaste sex timmarna, 6d sedan de senaste sex dagarna, 6m sedan de senaste sex minuterna och så vidare.
--help Ta med flaggan för att se en fullständig lista med alternativ.
sudo iotedge support-bundle --since 6h
Som standard support-bundle skapar kommandot en zip-fil med namnet support_bundle.zip i katalogen där kommandot anropas. Använd flaggan --output för att ange en annan sökväg eller ett annat filnamn för utdata.
Mer information om kommandot finns i hjälpinformationen.
iotedge support-bundle --help
Du kan också använda det inbyggda direktmetodanropet UploadSupportBundle för att ladda upp utdata från kommandot supportpaket till Azure Blob Storage.
Varning
Utdata från support-bundle kommandot kan innehålla värd, enhetsnamn, modulnamn och information som loggas av dina moduler. Tänk på detta om du delar utdata i ett offentligt forum.
Granska mått som samlats in från körningen
IoT Edge-runtime-modulerna skapar mått som hjälper dig att övervaka och förstå hälsotillståndet för dina IoT Edge-enheter. Lägg till modulen metrics-collector i dina distributioner för att hantera insamling av dessa mått och skicka dem till molnet för enklare övervakning.
Mer information finns i Samla in och transportera mått.
Kontrollera din IoT Edge-version
Om du kör en äldre version av IoT Edge kan uppgraderingen lösa problemet. Verktyget iotedge check kontrollerar att IoT Edge-säkerhetsdaemonen är den senaste versionen, men kontrollerar inte versionerna av IoT Edge-hubben och agentmodulerna. Om du vill kontrollera versionen av runtime-modulerna på enheten använder du kommandona iotedge logs edgeAgent och iotedge logs edgeHub. Versionsnumret skrivs ut i loggarna när modulen startas.
Anvisningar om hur du uppdaterar enheten finns i Uppdatera IoT Edge.
Kontrollera installationen av IoT Edge på dina enheter
Du kan kontrollera installationen av IoT Edge på dina enheter genom att övervaka edgeAgent-modultvillingen.
Om du vill hämta den senaste edgeAgent-modultvillingen kör du följande kommando från Azure Cloud Shell:
az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>
Det här kommandot matar ut alla rapporterade egenskaper för edgeAgent. Här är några användbara som övervakar enhetens status:
- körningsstatus
- starttid för körning
- körning senaste avslutstid
- antal omstarter av körning
Kontrollera statusen för IoT Edge-säkerhetshanteraren och dess loggar
IoT Edge-säkerhetshanteraren ansvarar för åtgärder som att initiera IoT Edge-systemet vid start och etablering av enheter. Om IoT Edge inte startar kan security manager-loggarna ge användbar information.
Visa status för IoT Edge-systemtjänsterna:
sudo iotedge system statusVisa loggarna för IoT Edge-systemtjänsterna:
sudo iotedge system logs -- -fAktivera loggar på felsökningsnivå för att visa mer detaljerade loggar för IoT Edge-systemtjänsterna:
Aktivera loggar på felsökningsnivå.
sudo iotedge system set-log-level debug sudo iotedge system restartVäxla tillbaka till standardloggarna på informationsnivå efter felsökning.
sudo iotedge system set-log-level info sudo iotedge system restart
Kontrollera om det finns problem i containerloggarna
När IoT Edge-säkerhetsdaemonen körs kan du titta på loggarna för containrarna för att identifiera problem. Börja med dina distribuerade containrar och titta sedan på de containrar som utgör IoT Edge-körningen: edgeAgent och edgeHub. IoT Edge-agentloggarna innehåller vanligtvis information om livscykeln för varje container. IoT Edge-hubbloggarna innehåller information om meddelanden och routning.
Du kan hämta containerloggarna från flera platser:
På IoT Edge-enheten kör du följande kommando för att visa loggar:
iotedge logs <container name>På Azure Portal använder du det inbyggda felsökningsverktyget. Mer information finns i Felsöka IoT Edge-enheter från Azure Portal.
Använd direct-metoden UploadModuleLogs för att ladda upp loggarna för en modul till Azure Blob Storage.
Rensa containerloggar
Som standard anger moby-containermotorn inte storleksbegränsningar för containerloggar. Med tiden kan omfattande loggar leda till att enheten fylls med loggar och att diskutrymmet börjar ta slut. Om stora containerloggar påverkar IoT Edge-enhetens prestanda använder du följande kommando för att tvinga bort containern tillsammans med dess relaterade loggar.
Om du fortfarande felsöker väntar du tills du har inspekterat containerloggarna för att ta det här steget.
Varning
Om du framtvingar att ta bort edgeHub-containern medan den har ett meddelande som inte har levererats och ingen värdlagring har konfigurerats går de olevererade meddelandena förlorade.
docker rm --force <container name>
Mer information om pågående loggunderhåll och produktionsscenarier finns i Konfigurera standardloggningsdrivrutin.
Visa meddelandena som går via IoT Edge-hubben
Du kan visa meddelanden som går via IoT Edge-hubben och samla in insikter från utförliga loggar från körningscontainrarna. Om du vill aktivera utförliga loggar på dessa containrar anger du RuntimeLogLevel miljövariabeln i distributionsmanifestet.
Om du vill visa meddelanden som går via IoT Edge-hubben anger du RuntimeLogLevel miljövariabeln till debug för edgeHub-modulen.
Både edgeHub- och edgeAgent-modulerna har den här miljövariabeln för körningsloggen, med standardvärdet inställt på info. Den här miljövariabeln kan ha följande värden:
- dödlig
- fel
- varning
- information
- felsökning
- utförlig
Du kan också kontrollera de meddelanden som skickas mellan IoT Hub- och IoT-enheter. Visa dessa meddelanden med hjälp av Azure IoT Hub-tillägget för Visual Studio Code. Mer information finns i Praktiskt verktyg när du utvecklar med Azure IoT.
Starta om containrar
När du har undersökt loggarna och meddelandena för information kan du prova att starta om containrar.
På IoT Edge-enheten använder du följande kommandon för att starta om moduler:
iotedge restart <container name>
Starta om IoT Edge-körningscontainrarna:
iotedge restart edgeAgent && iotedge restart edgeHub
Du kan också starta om moduler via fjärranslutning från Azure Portal. Mer information finns i Felsöka IoT Edge-enheter från Azure Portal.
Kontrollera konfigurationsreglerna för brandväggen och porten
Azure IoT Edge tillåter kommunikation från en lokal server till Azure-molnet med hjälp av IoT Hub-protokoll som stöds. Mer information finns i Välj ett protokoll för enhetskommunikation. För förbättrad säkerhet är kommunikationskanaler mellan Azure IoT Edge och Azure IoT Hub alltid konfigurerade för utgående trafik. Den här konfigurationen baseras på mönstret För tjänstassisterad kommunikation, vilket minimerar attackytan för en skadlig entitet att utforska. Inkommande kommunikation krävs endast för specifika scenarier där Azure IoT Hub behöver skicka meddelanden till Azure IoT Edge-enheten. Meddelanden från moln till enhet skyddas med säkra TLS-kanaler och kan skyddas ytterligare med X.509-certifikat och TPM-enhetsmoduler. Azure IoT Edge Security Manager styr hur den här kommunikationen kan upprättas. Mer information finns i Säkerhetshanteraren för Azure IoT Edge.
Även om IoT Edge ger förbättrad konfiguration för att skydda Azure IoT Edge-körning och distribuerade moduler, är det fortfarande beroende av den underliggande datorn och nätverkskonfigurationen. Därför är det absolut nödvändigt att se till att rätt nätverks- och brandväggsregler konfigureras för säker gräns-till-molnkommunikation. Följande tabell kan användas som en riktlinje när du konfigurerar brandväggsregler för de underliggande servrar där Azure IoT Edge-körningen finns:
| Protokoll | Hamn | Inkommande | Utgående | Vägledning |
|---|---|---|---|---|
| MQTT | 8883 | BLOCKERAD (standard) | BLOCKERAD (standard) |
|
| AMQP (Advanced Message Queuing Protocol) | 5671 | BLOCKERAD (standard) | ÖPPNA (standard) |
|
| HTTPS | 443 | BLOCKERAD (standard) | ÖPPNA (standard) |
|
Sista utväg: stoppa och återskapa alla containrar
Ibland kan ett system kräva betydande särskilda ändringar för att fungera med befintliga nätverks- eller operativsystembegränsningar. Ett system kan till exempel kräva en annan datadiskmontering och proxyinställningar. Om du har provat alla tidigare steg och fortfarande får containerfel kanske docker-systemet cachelagrar eller bevarade nätverksinställningar inte är uppdaterade med den senaste omkonfigurationen. I det här fallet är det sista alternativet att använda docker prune få en ren start från början.
Följande kommando stoppar IoT Edge-systemet (och därmed alla containrar), använder alternativet "alla" och "volym" för docker prune att ta bort alla containrar och volymer. Granska varningen om att kommandot har problem och bekräfta med y när det är klart.
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]
Starta systemet igen. För att vara säker använder du eventuell återstående konfiguration och startar systemet med ett kommando.
sudo iotedge config apply
Vänta några minuter och kontrollera igen.
sudo iotedge list
Nästa steg
Tror du att du har hittat ett fel i IoT Edge-plattformen? Skicka in ett problem så att vi kan fortsätta att förbättra.
Om du har fler frågor skapar du en supportbegäran om hjälp.