Rozwiązywanie problemów z urządzeniem usługi IoT Edge
Dotyczy: IoT Edge 1.5 IoT Edge 1.4
Ważne
Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.
Jeśli wystąpią problemy z uruchamianiem usługi Azure IoT Edge w danym środowisku, skorzystaj z tego artykułu jako przewodnika po rozwiązywaniu problemów i diagnostyki.
Uruchom polecenie "check"
Pierwszym krokiem podczas rozwiązywania problemów z usługą IoT Edge powinno być użycie check
polecenia , które uruchamia kolekcję testów konfiguracji i łączności w przypadku typowych problemów. Polecenie check
jest dostępne w wersji 1.0.7 lub nowszej.
Uwaga
Narzędzie do rozwiązywania problemów nie może uruchomić funkcji łączności sprawdza, czy urządzenie usługi IoT Edge znajduje się za serwerem proxy.
Możesz uruchomić polecenie check
w następujący sposób lub dołączyć flagę --help
, aby wyświetlić pełną listę opcji:
sudo iotedge check
Narzędzie do rozwiązywania problemów uruchamia wiele testów posortowanych w następujących trzech kategoriach:
- Testy konfiguracji sprawdzają szczegóły, które mogą uniemożliwić urządzeniom usługi IoT Edge nawiązywanie połączenia z chmurą, w tym problemy z plikiem konfiguracji i aparatem kontenera.
- Sprawdzanie połączenia sprawdza, czy środowisko uruchomieniowe usługi IoT Edge może uzyskiwać dostęp do portów na urządzeniu hosta i czy wszystkie składniki usługi IoT Edge mogą łączyć się z usługą IoT Hub. Ten zestaw testów zwraca błędy, jeśli urządzenie usługi IoT Edge znajduje się za serwerem proxy.
- Testy gotowości produkcyjnej szukają zalecanych najlepszych rozwiązań produkcyjnych, takich jak stan certyfikatów urzędu certyfikacji urządzenia i konfiguracja pliku dziennika modułu.
Narzędzie do sprawdzania usługi IoT Edge używa kontenera do uruchamiania jego diagnostyki. Obraz kontenera, mcr.microsoft.com/azureiotedge-diagnostics:latest
, jest dostępny za pośrednictwem usługi Microsoft Container Registry. Jeśli musisz uruchomić kontrolę na urządzeniu bez bezpośredniego dostępu do Internetu, urządzenia będą potrzebować dostępu do obrazu kontenera.
W scenariuszu korzystającym z zagnieżdżonych urządzeń usługi IoT Edge można uzyskać dostęp do obrazu diagnostycznego na urządzeniach podrzędnych, rozsyłając obraz ściągnięty przez urządzenia nadrzędne.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
Aby uzyskać informacje na temat każdego z testów diagnostycznych uruchamianych przez to narzędzie, w tym czynności, które należy wykonać w przypadku wystąpienia błędu lub ostrzeżenia, zobacz Testy rozwiązywania problemów z usługą IoT Edge.
Zbieranie informacji o debugowaniu za pomocą polecenia "support-bundle"
Gdy musisz zebrać dzienniki z urządzenia usługi IoT Edge, najwygodniejszym sposobem jest użycie support-bundle
polecenia . Domyślnie to polecenie zbiera moduł, menedżera zabezpieczeń usługi IoT Edge i dzienniki aparatu kontenera, iotedge check
dane wyjściowe JSON i inne przydatne informacje debugowania. Kompresuje je do pojedynczego pliku w celu łatwego udostępniania. Polecenie support-bundle
jest dostępne w wersji 1.0.9 lub nowszej.
support-bundle
Uruchom polecenie z flagą , --since
aby określić, jak długo od przeszłości chcesz pobrać dzienniki. Na przykład 6h
pobiera dzienniki od ostatnich sześciu godzin, 6d
od ostatnich sześciu dni, 6m
od ostatnich sześciu minut itd. Dołącz flagę, --help
aby wyświetlić pełną listę opcji.
sudo iotedge support-bundle --since 6h
Domyślnie support-bundle
polecenie tworzy plik zip o nazwie support_bundle.zip w katalogu, w którym jest wywoływane polecenie. Użyj flagi --output
, aby określić inną ścieżkę lub nazwę pliku dla danych wyjściowych.
Aby uzyskać więcej informacji na temat polecenia, wyświetl jego informacje pomocy.
iotedge support-bundle --help
Możesz również użyć wbudowanej metody bezpośredniej wywołania UploadSupportBundle , aby przekazać dane wyjściowe polecenia support-bundle do usługi Azure Blob Storage.
Ostrzeżenie
Dane wyjściowe polecenia support-bundle
mogą zawierać nazwy hostów, urządzeń i modułów, informacje rejestrowane przez moduły itp. Pamiętaj o tym, jeśli udostępniasz dane wyjściowe na forum publicznym.
Przeglądanie metryk zebranych ze środowiska uruchomieniowego
Moduły środowiska uruchomieniowego usługi IoT Edge generują metryki ułatwiające monitorowanie i zrozumienie kondycji urządzeń usługi IoT Edge. Dodaj moduł moduł zbierający metryki do wdrożeń, aby obsługiwać zbieranie tych metryk i wysyłanie ich do chmury w celu łatwiejszego monitorowania.
Aby uzyskać więcej informacji, zobacz Zbieranie i transport metryk.
Sprawdzanie wersji usługi IoT Edge
Jeśli używasz starszej wersji usługi IoT Edge, uaktualnienie może rozwiązać problem. Narzędzie iotedge check
sprawdza, czy demon zabezpieczeń usługi IoT Edge jest najnowszą wersją, ale nie sprawdza wersji modułów centrum i agenta usługi IoT Edge. Aby sprawdzić wersję modułów środowiska uruchomieniowego na urządzeniu, użyj poleceń iotedge logs edgeAgent
i iotedge logs edgeHub
. Numer wersji jest deklarowany w dziennikach podczas uruchamiania modułu.
Aby uzyskać instrukcje dotyczące sposobu aktualizowania urządzenia, zobacz Aktualizowanie demona zabezpieczeń i środowiska uruchomieniowego usługi IoT Edge.
Weryfikowanie instalacji usługi IoT Edge na urządzeniach
Możesz zweryfikować instalację usługi IoT Edge na urządzeniach, monitorując bliźniaczą reprezentację modułu edgeAgent.
Aby uzyskać najnowszą reprezentację modułu edgeAgent, uruchom następujące polecenie w usłudze Azure Cloud Shell:
az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>
To polecenie zwraca wszystkie zgłoszone właściwości edgeAgent. Oto kilka przydatnych monitorów stanu urządzenia:
- stan środowiska uruchomieniowego
- czas rozpoczęcia środowiska uruchomieniowego
- czas ostatniego zakończenia środowiska uruchomieniowego
- liczba ponownych uruchomień środowiska uruchomieniowego
Sprawdzanie stanu menedżera zabezpieczeń usługi IoT Edge i jego dzienników
Menedżer zabezpieczeń usługi IoT Edge jest odpowiedzialny za operacje, takie jak inicjowanie systemu usługi IoT Edge podczas uruchamiania i aprowizowania urządzeń. Jeśli usługa IoT Edge nie uruchamia się, dzienniki menedżera zabezpieczeń mogą dostarczyć przydatnych informacji.
Wyświetl stan usług systemowych usługi IoT Edge:
sudo iotedge system status
Wyświetl dzienniki usług systemowych usługi IoT Edge:
sudo iotedge system logs -- -f
Włącz dzienniki na poziomie debugowania, aby wyświetlić bardziej szczegółowe dzienniki usług systemowych usługi IoT Edge:
Włącz dzienniki na poziomie debugowania.
sudo iotedge system set-log-level debug sudo iotedge system restart
Przejdź z powrotem do domyślnych dzienników na poziomie informacji po debugowaniu.
sudo iotedge system set-log-level info sudo iotedge system restart
Sprawdzanie dzienników kontenera pod kątem problemów
Po uruchomieniu demona zabezpieczeń usługi IoT Edge przyjrzyj się dziennikom kontenerów, aby wykryć problemy. Zacznij od wdrożonych kontenerów, a następnie przyjrzyj się kontenerom tworzącym środowisko uruchomieniowe usługi IoT Edge: edgeAgent i edgeHub. Dzienniki agenta usługi IoT Edge zwykle zawierają informacje na temat cyklu życia każdego kontenera. Dzienniki centrum usługi IoT Edge zawierają informacje dotyczące obsługi komunikatów i routingu.
Dzienniki kontenera można pobrać z kilku miejsc:
Na urządzeniu usługi IoT Edge uruchom następujące polecenie, aby wyświetlić dzienniki:
iotedge logs <container name>
W witrynie Azure Portal użyj wbudowanego narzędzia do rozwiązywania problemów. Monitorowanie i rozwiązywanie problemów z urządzeniami usługi IoT Edge w witrynie Azure Portal
Użyj metody bezpośredniej UploadModuleLogs, aby przekazać dzienniki modułu do usługi Azure Blob Storage.
Czyszczenie dzienników kontenerów
Domyślnie aparat kontenera Moby nie ustawia limitów rozmiaru dziennika kontenera. W czasie obszerne dzienniki mogą prowadzić do wypełnienia urządzenia dziennikami i wyczerpania miejsca na dysku. Jeśli duże dzienniki kontenerów wpływają na wydajność urządzenia usługi IoT Edge, użyj następującego polecenia, aby wymusić usunięcie kontenera wraz z powiązanymi dziennikami.
Jeśli nadal rozwiązujesz problemy, zaczekaj na sprawdzenie dzienników kontenerów, aby wykonać ten krok.
Ostrzeżenie
Jeśli wymusisz usunięcie kontenera edgeHub, gdy ma on nieuprawnione listy prac komunikatów i nie skonfigurowano magazynu hostów, niezaliczone komunikaty zostaną utracone.
docker rm --force <container name>
W przypadku bieżących scenariuszy konserwacji i produkcji dzienników skonfiguruj domyślny sterownik rejestrowania.
Wyświetlanie komunikatów przechodzących przez centrum usługi IoT Edge
Komunikaty przechodzące przez centrum usługi IoT Edge można wyświetlać i zbierać szczegółowe informacje z pełnych dzienników z kontenerów środowiska uruchomieniowego. Aby włączyć pełne dzienniki dla tych kontenerów, ustaw zmienną RuntimeLogLevel
środowiskową w manifeście wdrożenia.
Aby wyświetlić komunikaty przechodzące przez centrum usługi IoT Edge, ustaw zmienną RuntimeLogLevel
środowiskową na debug
wartość dla modułu edgeHub.
Zarówno moduły edgeHub, jak i edgeAgent mają tę zmienną środowiskową dziennika środowiska uruchomieniowego z wartością domyślną ustawioną na info
. Ta zmienna środowiskowa może przyjmować następujące wartości:
- śmiertelny
- error
- ostrzeżenie
- informacje o
- debug
- tryb pełny
Możesz również sprawdzić komunikaty wysyłane między usługą IoT Hub i urządzeniami IoT. Wyświetl te komunikaty przy użyciu rozszerzenia usługi Azure IoT Hub dla programu Visual Studio Code. Aby uzyskać więcej informacji, zobacz Handy tool when you develop with Azure IoT (Przydatne narzędzie podczas opracowywania za pomocą usługi Azure IoT).
Ponowne uruchamianie kontenerów
Po zbadaniu dzienników i komunikatów w celu uzyskania informacji możesz spróbować ponownie uruchomić kontenery.
Na urządzeniu usługi IoT Edge użyj następujących poleceń, aby ponownie uruchomić moduły:
iotedge restart <container name>
Uruchom ponownie kontenery środowiska uruchomieniowego usługi IoT Edge:
iotedge restart edgeAgent && iotedge restart edgeHub
Moduły można również ponownie uruchomić zdalnie w witrynie Azure Portal. Aby uzyskać więcej informacji, zobacz Monitorowanie i rozwiązywanie problemów z urządzeniami usługi IoT Edge w witrynie Azure Portal.
Sprawdzanie reguł konfiguracji zapory i portów
Usługa Azure IoT Edge umożliwia komunikację z serwera lokalnego do chmury platformy Azure przy użyciu obsługiwanych protokołów usługi IoT Hub. Aby uzyskać więcej informacji, zobacz wybieranie protokołu komunikacyjnego. W przypadku zwiększonych zabezpieczeń kanały komunikacyjne między usługą Azure IoT Edge i usługą Azure IoT Hub są zawsze skonfigurowane jako wychodzące. Ta konfiguracja jest oparta na wzorcu komunikacji asystowanej usług, który minimalizuje obszar ataków dla złośliwej jednostki do zbadania. Komunikacja przychodząca jest wymagana tylko w określonych scenariuszach , w których usługa Azure IoT Hub musi wypychać komunikaty do urządzenia usługi Azure IoT Edge. Komunikaty chmura-urządzenie są chronione przy użyciu bezpiecznych kanałów TLS i można je dodatkowo zabezpieczyć przy użyciu certyfikatów X.509 i modułów urządzeń TPM. Menedżer zabezpieczeń usługi Azure IoT Edge określa, w jaki sposób można ustanowić tę komunikację, zobacz Menedżer zabezpieczeń usługi IoT Edge.
Chociaż usługa IoT Edge zapewnia rozszerzoną konfigurację zabezpieczania środowiska uruchomieniowego usługi Azure IoT Edge i wdrożonych modułów, nadal zależy od podstawowej konfiguracji maszyny i sieci. W związku z tym konieczne jest upewnienie się, że skonfigurowano odpowiednie reguły sieci i zapory na potrzeby bezpiecznej komunikacji brzegowej z chmurą. Poniższa tabela może służyć jako wskazówka podczas konfigurowania reguł zapory dla serwerów bazowych, na których jest hostowane środowisko uruchomieniowe usługi Azure IoT Edge:
Protokół | Port | Przychodzący | Wychodzące | Wskazówki |
---|---|---|---|---|
MQTT | 8883 | ZABLOKOWANE (ustawienie domyślne) | ZABLOKOWANE (ustawienie domyślne) |
|
AMQP | 5671 | ZABLOKOWANE (ustawienie domyślne) | OPEN (ustawienie domyślne) |
|
HTTPS | 443 | ZABLOKOWANE (ustawienie domyślne) | OPEN (ustawienie domyślne) |
|
Ostateczność: zatrzymywanie i ponowne tworzenie wszystkich kontenerów
Czasami system może wymagać znacznej specjalnej modyfikacji w celu pracy z istniejącymi ograniczeniami sieci lub systemu operacyjnego. Na przykład system może wymagać innej instalacji dysku danych i ustawień serwera proxy. Jeśli próbowano wykonać wszystkie poprzednie kroki i nadal występują błędy kontenera, pamięć podręczna systemu platformy Docker lub utrwalone ustawienia sieciowe mogą nie być aktualne z najnowszą ponowną konfiguracją. W takim przypadku opcja ostateczności polega na korzystaniu z docker prune
opcji uzyskania czystego początku od podstaw.
Następujące polecenie zatrzymuje system usługi IoT Edge (a tym samym wszystkie kontenery), używa opcji "all" i "volume" w docker prune
celu usunięcia wszystkich kontenerów i woluminów. Przejrzyj ostrzeżenie, że polecenie powoduje problemy i potwierdź y
je, gdy wszystko będzie gotowe.
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]
Uruchom ponownie system. Aby zapewnić bezpieczeństwo, zastosuj dowolną potencjalnie pozostałą konfigurację i uruchom system za pomocą jednego polecenia.
sudo iotedge config apply
Poczekaj kilka minut i sprawdź ponownie.
sudo iotedge list
Następne kroki
Uważasz, że znaleziono usterkę platformy IoT Edge? Prześlij problem , abyśmy mogli kontynuować ulepszanie.
Jeśli masz więcej pytań, utwórz wniosek o pomoc techniczną, aby uzyskać pomoc.