IoT Edge cihazınızın sorunlarını giderme
Şunlar için geçerlidir: IoT Edge 1.5
Önemli
IoT Edge 1.5 LTS desteklenen sürümdür. IoT Edge 1.4 LTS, 12 Kasım 2024 itibarıyla kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.
Ortamınızda Azure IoT Edge'i çalıştırırken sorun yaşıyorsanız, sorun giderme ve tanılama için kılavuz olarak bu makaleyi kullanın.
'check' komutunu çalıştırın
IoT Edge sorunlarını giderirken ilk adımınız, yaygın sorunlar için bir yapılandırma ve bağlantı testleri koleksiyonu çalıştıran komutunu kullanmak check
olmalıdır. Komut check
1.0.7 ve sonraki sürümlerde kullanılabilir.
Not
Sorun giderme aracı, IoT Edge cihazının ara sunucunun arkasında olup olmadığını denetleyemiyor.
Komutu aşağıdaki gibi çalıştırabilir veya seçeneklerin check
--help
tam listesini görmek için bayrağını ekleyebilirsiniz:
sudo iotedge check
Sorun giderme aracı, şu üç kategoriye göre sıralanmış birçok denetim çalıştırır:
- Yapılandırma denetimleri , yapılandırma dosyası ve kapsayıcı altyapısıyla ilgili sorunlar da dahil olmak üzere IoT Edge cihazlarının buluta bağlanmasını engelleyebilecek ayrıntıları inceler.
- Bağlantı denetimleri , IoT Edge çalışma zamanının konak cihazdaki bağlantı noktalarına erişebildiğini ve tüm IoT Edge bileşenlerinin IoT Hub'a bağlanabildiğini doğrular. Bu denetim kümesi, IoT Edge cihazı bir ara sunucu arkasındaysa hatalar döndürür.
- Üretime hazır olma denetimleri , cihaz sertifika yetkilisi (CA) sertifikalarının durumu ve modül günlük dosyası yapılandırması gibi önerilen en iyi üretim yöntemlerini arar.
IoT Edge denetim aracı, tanılamasını çalıştırmak için bir kapsayıcı kullanır. kapsayıcı görüntüsü, mcr.microsoft.com/azureiotedge-diagnostics:latest
Microsoft Container Registry aracılığıyla kullanılabilir. İnternet'e doğrudan erişimi olmayan bir cihazda denetim çalıştırmanız gerekiyorsa, cihazlarınızın kapsayıcı görüntüsüne erişmesi gerekir.
İç içe IoT Edge cihazlarının kullanıldığı bir senaryoda, görüntüyü üst cihazlar aracılığıyla yönlendirerek aşağı akış cihazlarında tanılama görüntüsüne erişebilirsiniz.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.2
Hata veya uyarı alırsanız yapmanız gerekenler de dahil olmak üzere bu aracın çalıştığı tanılama denetimlerinin her biri hakkında bilgi için bkz . IoT Edge sorun giderme denetimleri.
'support-bundle' komutuyla hata ayıklama bilgilerini toplama
Bir IoT Edge cihazından günlükleri toplamanız gerektiğinde, en uygun yol komutunu kullanmaktır support-bundle
. Varsayılan olarak, bu komut modül, IoT Edge güvenlik yöneticisi ve kapsayıcı altyapısı günlükleri, iotedge check
JSON çıkışı ve diğer yararlı hata ayıklama bilgilerini toplar. Kolay paylaşım için bunları tek bir dosyaya sıkıştırır. Komut support-bundle
1.0.9 ve sonraki sürümlerde kullanılabilir.
Geçmişten support-bundle
günlükleri ne kadar süreyle almak istediğinizi belirtmek için komutunu bayrağıyla --since
çalıştırın. Örneğin 6h
, son altı saatten bu yana, 6d
son altı günden 6m
, son altı dakikadan bu yana vb. günlükleri alır. Seçeneklerin --help
tam listesini görmek için bayrağını ekleyin.
sudo iotedge support-bundle --since 6h
Varsayılan olarak komut, komutun support-bundle
çağrıldığı dizinde support_bundle.zip adlı bir zip dosyası oluşturur. Çıkış için farklı bir yol veya dosya adı belirtmek için bayrağını --output
kullanın.
Komut hakkında daha fazla bilgi için yardım bilgilerini görüntüleyin.
iotedge support-bundle --help
Ayrıca, support-bundle komutunun çıkışını Azure Blob Depolama yüklemek için UploadSupportBundle yerleşik doğrudan yöntem çağrısını da kullanabilirsiniz.
Uyarı
Komutun support-bundle
çıkışı konak, cihaz ve modül adlarını, modülleriniz tarafından günlüğe kaydedilen bilgileri vb. içerebilir. Çıktıyı genel bir forumda paylaşıyorsanız lütfen bunu unutmayın.
Çalışma zamanından toplanan ölçümleri gözden geçirme
IoT Edge çalışma zamanı modülleri, IoT Edge cihazlarınızın durumunu izlemenize ve anlamanıza yardımcı olacak ölçümler oluşturur. Bu ölçümleri toplamayı ve daha kolay izleme için buluta göndermeyi işlemek için dağıtımlarınıza ölçüm toplayıcı modülünü ekleyin.
Daha fazla bilgi için bkz . Ölçümleri toplama ve taşıma.
IoT Edge sürümünüzü denetleyin
IoT Edge'in eski bir sürümünü çalıştırıyorsanız, yükseltme yapmak sorununuzu çözebilir. Araç, iotedge check
IoT Edge güvenlik daemon'unun en son sürüm olup olmadığını denetler, ancak IoT Edge hub'ı ve aracı modüllerinin sürümlerini denetlemez. Cihazınızdaki çalışma zamanı modüllerinin sürümünü denetlemek için ve iotedge logs edgeHub
komutlarını iotedge logs edgeAgent
kullanın. Modül başlatıldığında sürüm numarası günlüklerde bildirilir.
Cihazınızı güncelleştirme yönergeleri için bkz . IoT Edge güvenlik daemon'unu ve çalışma zamanını güncelleştirme.
Cihazlarınıza IoT Edge yüklemesini doğrulama
EdgeAgent modül ikizini izleyerek cihazlarınıza IoT Edge yüklemesini doğrulayabilirsiniz.
En son edgeAgent modül ikizini almak için Azure Cloud Shell'den aşağıdaki komutu çalıştırın:
az iot hub module-twin show --device-id <edge_device_id> --module-id '$edgeAgent' --hub-name <iot_hub_name>
Bu komut, edgeAgent tarafından bildirilen tüm özelliklerin çıkışını oluşturur. Cihazın durumunu izleyen bazı yararlı cihazlar şunlardır:
- çalışma zamanı durumu
- çalışma zamanı başlangıç saati
- çalışma zamanı son çıkış saati
- çalışma zamanı yeniden başlatma sayısı
IoT Edge güvenlik yöneticisinin ve günlüklerinin durumunu denetleyin
IoT Edge güvenlik yöneticisi, IoT Edge sistemini başlangıçta başlatma ve cihazları sağlama gibi işlemlerde sorumludur. IoT Edge başlatılmıyorsa güvenlik yöneticisi günlükleri yararlı bilgiler sağlayabilir.
IoT Edge sistem hizmetlerinin durumunu görüntüleyin:
sudo iotedge system status
IoT Edge sistem hizmetlerinin günlüklerini görüntüleyin:
sudo iotedge system logs -- -f
IoT Edge sistem hizmetlerinin daha ayrıntılı günlüklerini görüntülemek için hata ayıklama düzeyi günlükleri etkinleştirin:
Hata ayıklama düzeyi günlüklerini etkinleştirin.
sudo iotedge system set-log-level debug sudo iotedge system restart
Hata ayıklamadan sonra varsayılan bilgi düzeyi günlüklerine geri dönün.
sudo iotedge system set-log-level info sudo iotedge system restart
Kapsayıcı günlüklerini denetle
IoT Edge güvenlik daemon'ı çalıştırıldıktan sonra, sorunları algılamak için kapsayıcıların günlüklerine bakın. Dağıtılan kapsayıcılarınızla başlayın, ardından IoT Edge çalışma zamanını oluşturan kapsayıcılara bakın: edgeAgent ve edgeHub. IoT Edge aracı günlükleri genellikle her kapsayıcının yaşam döngüsü hakkında bilgi sağlar. IoT Edge hub günlükleri mesajlaşma ve yönlendirme hakkında bilgi sağlar.
Kapsayıcı günlüklerini çeşitli yerlerden alabilirsiniz:
IoT Edge cihazında günlükleri görüntülemek için aşağıdaki komutu çalıştırın:
iotedge logs <container name>
Azure portalında yerleşik sorun giderme aracını kullanın. Azure portalından IoT Edge cihazlarını izleme ve sorunlarını giderme
Bir modülün günlüklerini Azure Blob Depolama yüklemek için UploadModuleLogs doğrudan yöntemini kullanın.
Kapsayıcı günlüklerini temizleme
Moby kapsayıcı altyapısı varsayılan olarak kapsayıcı günlüğü boyutu sınırlarını ayarlamaz. Zaman içinde kapsamlı günlükler cihazın günlüklerle dolmasına ve disk alanının bitmesine neden olabilir. Büyük kapsayıcı günlükleri IoT Edge cihaz performansınızı etkiliyorsa, kapsayıcıyı ilgili günlükleriyle birlikte kaldırmaya zorlamak için aşağıdaki komutu kullanın.
Sorun gidermeye devam ediyorsanız, bu adımı atmak için kapsayıcı günlüklerini inceleyene kadar bekleyin.
Uyarı
Teslim edilmemiş ileti kapsamına sahipken edgeHub kapsayıcısını kaldırmaya zorlarsanız ve konak depolama alanı ayarlanmamışsa, teslim edilmemiş iletiler kaybolur.
docker rm --force <container name>
Devam eden günlük bakımı ve üretim senaryoları için Varsayılan günlük sürücüsünü ayarlayın.
IoT Edge hub'ına giden iletileri görüntüleme
IoT Edge hub'ından geçen iletileri görüntüleyebilir ve çalışma zamanı kapsayıcılarından ayrıntılı günlüklerden içgörüler toplayabilirsiniz. Bu kapsayıcılarda ayrıntılı günlükleri açmak için dağıtım bildiriminde RuntimeLogLevel
ortam değişkenini ayarlayın.
IoT Edge hub'ına giden iletileri görüntülemek için edgeHub modülü için ortam değişkenini debug
olarak ayarlayınRuntimeLogLevel
.
Hem edgeHub hem de edgeAgent modülleri, varsayılan değeri olarak ayarlanmış olan bu çalışma zamanı günlük ortamı değişkenine info
sahiptir. Bu ortam değişkeni aşağıdaki değerleri alabilir:
- ölümcül
- hata
- uyarı
- Bilgi
- hata ayıkla
- ayrıntılı
IoT Hub ile IoT cihazları arasında gönderilen iletileri de de kontrol edebilirsiniz. Visual Studio Code için Azure IoT Hub uzantısını kullanarak bu iletileri görüntüleyin. Daha fazla bilgi için bkz . Azure IoT ile geliştirme yaparken kullanışlı araç.
Kapsayıcıları yeniden başlatma
Bilgi için günlükleri ve iletileri araştırdıktan sonra kapsayıcıları yeniden başlatmayı deneyebilirsiniz.
IoT Edge cihazında modülleri yeniden başlatmak için aşağıdaki komutları kullanın:
iotedge restart <container name>
IoT Edge çalışma zamanı kapsayıcılarını yeniden başlatın:
iotedge restart edgeAgent && iotedge restart edgeHub
Modülleri Azure portalından uzaktan da yeniden başlatabilirsiniz. Daha fazla bilgi için bkz . Azure portalından IoT Edge cihazlarını izleme ve sorunlarını giderme.
Güvenlik duvarınızı ve bağlantı noktası yapılandırma kurallarınızı denetleme
Azure IoT Edge, desteklenen IoT Hub protokollerini kullanarak şirket içi sunucudan Azure bulutuyla iletişime olanak tanır. Daha fazla bilgi için bkz . İletişim protokolü seçme. Gelişmiş güvenlik için, Azure IoT Edge ile Azure IoT Hub arasındaki iletişim kanalları her zaman Giden olarak yapılandırılır. Bu yapılandırma, kötü amaçlı bir varlığın keşfedilmesi için saldırı yüzeyini en aza indiren Hizmetler Destekli İletişim düzenini temel alır. Gelen iletişim yalnızca Azure IoT Hub'ın Azure IoT Edge cihazına ileti göndermesi gereken belirli senaryolar için gereklidir. Buluttan cihaza iletiler güvenli TLS kanalları kullanılarak korunur ve X.509 sertifikaları ve TPM cihaz modülleri kullanılarak daha da güvenli hale getirilebilir. Bu iletişimin nasıl kurulabileceğini Azure IoT Edge Güvenlik Yöneticisi yönetir. Bkz . IoT Edge Güvenlik Yöneticisi.
IoT Edge, Azure IoT Edge çalışma zamanının ve dağıtılan modüllerin güvenliğini sağlamak için gelişmiş yapılandırma sağlarken, temel alınan makineye ve ağ yapılandırmasına bağımlıdır. Bu nedenle, güvenli kenardan buluta iletişim için uygun ağ ve güvenlik duvarı kurallarının ayarlandığından emin olmak zorunlu olur. Aşağıdaki tablo, Azure IoT Edge çalışma zamanının barındırıldığı temel sunucular için güvenlik duvarı kurallarını yapılandırma yönergeleri olarak kullanılabilir:
Protokol | Bağlantı noktası | Gelen | Giden | Rehber |
---|---|---|---|---|
MQTT | 8883 | ENGELLİ (Varsayılan) | ENGELLİ (Varsayılan) |
|
AMQP | 5671 | ENGELLİ (Varsayılan) | AÇ (Varsayılan) |
|
HTTPS | 443 | ENGELLİ (Varsayılan) | AÇ (Varsayılan) |
|
Son çare: tüm kapsayıcıları durdurma ve yeniden oluşturma
Bazen bir sistem, mevcut ağ veya işletim sistemi kısıtlamalarıyla çalışmak için önemli ölçüde özel değişiklikler gerektirebilir. Örneğin, bir sistem farklı bir veri diski bağlama ve ara sunucu ayarları gerektirebilir. Önceki tüm adımları denediyseniz ve yine de kapsayıcı hataları aldıysanız, docker sistemi önbellekleri veya kalıcı ağ ayarları en son yeniden yapılandırmayla güncel olmayabilir. Bu durumda, son çare seçeneği sıfırdan temiz bir başlangıç yapmaktır docker prune
.
Aşağıdaki komut IoT Edge sistemini (ve dolayısıyla tüm kapsayıcıları) durdurur ve tüm kapsayıcıları ve birimleri kaldırmak için docker prune
"tümü" ve "birim" seçeneğini kullanır. Komutun sorun olduğu uyarısını gözden geçirin ve hazır olduğunuzda ile onaylayın y
.
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]
Sistemi yeniden başlatın. Güvenli olmak için, kalan olası yapılandırmaları uygulayın ve sistemi tek bir komutla başlatın.
sudo iotedge config apply
Birkaç dakika bekleyin ve yeniden kontrol edin.
sudo iotedge list
Sonraki adımlar
IoT Edge platformunda bir hata bulduğunuzu düşünüyor musunuz? İyileştirmeye devam edebilmemiz için bir sorun gönderin.
Daha fazla sorunuz varsa yardım için bir Destek isteği oluşturun.