IoT Edge cihazınızda sorun giderme

Şunun için geçerlidir:IoT Edge 1.6 onay işareti IoT Edge 1.6

Önemli

IoT Edge 1.6 LTS desteklenen sürümdür. IoT Edge 1.5 LTS desteği 10 Kasım 2026'da sona erer; IoT Edge 1.4 LTS, 12 Kasım 2024'te ömrünün sonuna ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.

Ortamınızda Azure IoT Edge ç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

sorun giderme IoT Edge ilk adımınız check komutunu kullanmak olmalıdır. Yaygın sorunlar için yapılandırma ve bağlantı testlerinden oluşan bir koleksiyon çalıştırır. check komutu release 1.0.7 ve sonraki sürümlerinde kullanılabilir.

Not

Sorun giderme aracı, IoT Edge cihazının bir proxy sunucunun arkasında olması durumunda bağlantı kontrollerini gerçekleştiremiyor.

Komutu aşağıdaki gibi çalıştırın veya seçeneklerin check--help tam listesini görmek için bayrağını ekleyin:

sudo iotedge check

Sorun giderme aracı, bu üç kategoriye göre sıralandığından birçok denetim çalıştırır:

  • Configuration checks - Araç, IoT Edge cihazların buluta bağlanmasını engelleyebilecek ayrıntıları inceler. Yapılandırma dosyası ve kapsayıcı motoruyla ilgili sorunları içerir.
  • Bağlantı denetimleri - Araç, IoT Edge çalışma zamanının konak cihazdaki bağlantı noktalarına erişebildiğini doğrular. Ayrıca tüm IoT Edge bileşenlerinin IoT hub'ına 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 - Araç önerilen en iyi üretim yöntemlerini arar. Cihaz sertifika yetkilisi (CA) sertifikalarının durumunu ve modül günlük dosyası yapılandırmasını denetler.

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:latestMicrosoft Artifact Registry (MAR) 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ı kullanan bir senaryoda, alt cihazlarda tanılama görüntüsüne erişmek için görüntü çekimi işlemini üst cihazlar aracılığıyla yönlendirebilirsiniz.

sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:<port_for_api_proxy_module>/azureiotedge-diagnostics:1.6

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. Built-in sorun giderme işlevselliği.

support-bundle komutunu kullanarak hata ayıklama bilgilerini toplama

IoT Edge bir cihazdan günlükleri toplamanız gerektiğinde, en uygun yol support-bundle komutunu kullanmaktır. Varsayılan olarak, bu komut modül, IoT Edge güvenlik yöneticisi ve kapsayıcı altyapısı günlüklerini, iotedge check JSON çıkışını ve diğer yararlı hata ayıklama bilgilerini toplar. Kolay paylaşım için bunları tek bir dosyaya sıkıştırır. support-bundle komutu release 1.0.9 ve sonraki sürümlerde kullanılabilir.

support-bundle komutunu --since bayrağıyla çalıştırarak geçmişten günlükleri ne kadar süreyle almak istediğinizi belirtin. Örneğin, 6h son altı saatin günlüklerini alır, 6d son altı günün günlüklerini alır ve 6m son altı dakikadaki 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, support-bundle komut komutunu çalıştırdığınız dizinde support_bundle.zip adlı bir zip dosyası oluşturur. --output bayrağını, çıkış için farklı bir yol veya dosya adı belirtmek amacıyla 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ı

Komut support-bundle çıktısı, konak ve cihaz adları, modül adları ve modülleriniz tarafından günlüğe kaydedilen bilgileri içerebilir. Çıktıyı genel bir forumda paylaşıyorsanız bu eklemeye dikkat edin.

Ç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, sorununuzu çözebilir. iotedge check aracı, 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ü kontrol etmek için iotedge logs edgeAgent ve iotedge logs edgeHub komutlarını kullanın. Modül başlatıldığında sürüm numarası günlüklerde görüntülenir.

Cihazınızı güncelleştirme yönergeleri için bkz. Update IoT Edge.

Cihazlarınıza IoT Edge yüklemesini doğrulama

IoT Edge yüklemesinin cihazlarınızdaki doğruluğunu, edgeAgent modülü ikizini izleyerek kontrol edebilirsiniz.

En son edgeAgent modül ikizini almak için Azure Cloud Shell'dan 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 izlemek için bazı yararlı olanlar şunlardır:

  • çalışma süresi durumu
  • çalıştırma süresi 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 başlangıçta IoT Edge sistemini başlatma ve cihazları sağlama gibi işlemleri işler. 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:

    1. Debug seviyesi logları etkinleştirin.

      sudo iotedge system set-log-level debug
      sudo iotedge system restart
      
    2. 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
      

Konteyner günlüklerini sorunlar için kontrol et

IoT Edge güvenlik daemon'u başlatıldıktan sonra, sorunları bulmak için kapsayıcıların günlüklerini denetleyin. Dağıtılan kapsayıcılarınızla başlayın ve IoT Edge çalışma zamanını oluşturan kapsayıcıları denetleyin: edgeAgent ve edgeHub. IoT Edge aracısı günlükleri genellikle her bir kapsayıcının yaşam döngüsü hakkında bilgi sağlar. IoT Edge hub günlükleri size mesajlaşma ve yönlendirme hakkında bilgi verir.

Kapsayıcı günlüklerini çeşitli yerlerden alabilirsiniz:

Kapsayıcı günlüklerini temizle

Varsayılan olarak, Moby kapsayıcı motoru, kapsayıcı günlük boyutu sınırlandırmalarını ayarlamaz. Zaman içinde, kapsamlı günlükler cihazı doldurabilir ve disk alanının dolması nedeniyle cihaz çalışamaz hale gelebilir. Büyük kapsayıcı günlükleri IoT Edge cihaz performansınızı etkiliyorsa, kapsayıcıyı ve ilgili günlüklerini zorla kaldırmak 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ş mesaj birikimi varken kapsayıcıyı edgeHub zorla kaldırırsanız ve yapılandırılmış konak depolama alanı yoksa, teslim edilmemiş mesajlar kaybolur.

docker rm --force <container name>

Devam eden günlük bakımı ve üretim senaryoları hakkında daha fazla bilgi için bkz. Varsayılan günlük sürücüsünü ayarlama.

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 alınan 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 manifestosunda ortam değişkenini RuntimeLogLevel olarak ayarlayın.

IoT Edge hub'ına giden iletileri görüntülemek için edgeHub modülü için RuntimeLogLevel ortam değişkenini debug olarak ayarlayın.

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 infosahiptir. Bu ortam değişkeni aşağıdaki değerleri alabilir:

  • ölümcül
  • hata
  • uyarı
  • Bilgi
  • hata ayıklama
  • fazla sözcüklü

ayrıca IoT Hub ve IoT cihazları arasında gönderilen iletileri de 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ştirirken Handy araç.

Kapsayıcıları yeniden başlat

Bilgi toplamak amacıyla 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ın 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 buluta iletişimi destekler. Daha fazla bilgi için bkz. Cihaz iletişim protokolü seçme. Gelişmiş güvenlik için her zaman Azure IoT Edge ile Azure IoT Hub arasındaki iletişim kanallarını giden olarak yapılandırın. Hizmet Destekli İletişim desenini temel alan bu yapılandırma, kötü amaçlı bir varlık için saldırı yüzeyini en aza indirir. Gelen iletişim, yalnızca Azure IoT Hub'ın Azure IoT Edge cihazına ileti göndermesi gerektiği 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. Azure IoT Edge Güvenlik Yöneticisi bu iletişimin nasıl kurulabileceğini denetler. Daha fazla bilgi için bkz. Azure 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ğlasa da, temel alınan makine ve ağ yapılandırmasına bağımlıdır. Buluttan uca güvenli iletişim için uygun ağ ve güvenlik duvarı kurallarının ayarlandığından emin olun. Azure IoT Edge çalışma zamanının barındırıldığı temel sunucular için güvenlik duvarı kurallarını yapılandırırken kılavuz olarak aşağıdaki tabloyu kullanın:

Protokol Bağlantı noktası Gelen Giden Kılavuz
MQTT 8883 ENGELLİ (Varsayılan) ENGELLİ (Varsayılan)
  • İletişim protokolü olarak MQTT kullanılırken Giden (Giden) öğesini Açık olacak şekilde yapılandırın.
  • IoT Edge, MQTT için 1883 numaralı bağlantı noktasını desteklemez.
  • Gelen bağlantılar engellenmelidir.
AMQP 5671 ENGELLİ (Varsayılan) AÇ (Varsayılan)
  • IoT Edge için varsayılan iletişim protokolü.
  • Azure IoT Edge diğer desteklenen protokoller için yapılandırılmadıysa veya AMQP istenen iletişim protokolüyse Açık olarak yapılandırılmalıdır.
  • IoT Edge AMQP için 5672 numaralı bağlantı noktasını desteklemez.
  • Azure IoT Edge farklı bir IoT Hub desteklenen protokol kullandığında bu bağlantı noktasını engelleyin.
  • Gelen bağlantılar engellenmelidir.
HTTPS 443 ENGELLİ (Varsayılan) AÇ (Varsayılan)
  • Dışa giden trafiği IoT Edge sağlama için 443 numaralı portta açık olacak şekilde yapılandırın. El ile betikler veya Azure IoT Cihaz Sağlama Hizmeti (DPS) kullanılırken bu yapılandırma gereklidir.
  • Gelen (Gelen) bağlantı yalnızca belirli senaryolar için Açık olmalıdır:
    • Yöntem istekleri gönderebilen aşağı akış cihazlarına sahip saydam bir ağ geçidiniz varsa. Bu durumda, 443 numaralı bağlantı noktasının IoT Hub bağlanmak veya Azure IoT Edge aracılığıyla IoT Hub hizmetleri sağlamak için dış ağlara açık olması gerekmez. Bu nedenle, gelen kural yalnızca iç ağdan gelen (İçeri) trafiği açmakla sınırlandırılabilir.
    • İstemciden Cihaza (C2D) senaryoları için.
  • IoT Edge HTTP için 80 numaralı bağlantı noktasını desteklemez.
  • KURULUŞta HTTP dışı protokoller (örneğin AMQP veya MQTT) yapılandırılamıyorsa; iletiler WebSockets üzerinden gönderilebilir. Bu durumda WebSocket iletişimi için 443 numaralı bağlantı noktası kullanılır.

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ı dener ve yine de kapsayıcı hataları alırsanız, docker sistemi önbellekleri veya kalıcı ağ ayarları en son yeniden yapılandırmayla güncel olmayabilir. Bu durumda, sıfırdan temiz bir başlangıç yapmak için kullanın 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 all için volume ve docker prune seçeneklerini kullanır. Komutun verdiği uyarıyı gözden geçirin ve hazır olduğunuzda y kullanarak onaylayın.

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 mu düşünüyorsunuz? Submit an issue böylece ekip platformu geliştirmeye devam edebilir.

Daha fazla sorunuz varsa yardım için bir Destek isteği oluşturun.