Azure IoT Edge için yaygın sorunların çözümleri

Dikkat

Bu makale, Kullanım Süresi Sonu (EOL) durumu olan bir Linux dağıtımı olan CentOS'a başvurur. Lütfen kullanımınızı ve buna uygun planlamayı göz önünde bulundurun. Daha fazla bilgi için bkz . CentOS Kullanım Süresi Sonu kılavuzu.

Şunlar için geçerlidir: IoT Edge 1.5 onay işareti IoT Edge 1.5 IoT Edge 1.4 onay işareti IoT Edge 1.4

Önemli

IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

IoT Edge çözümlerini kullanırken sık karşılaşılan sorunları belirlemek ve çözmek için bu makaleyi kullanın. IoT Edge cihazınızdan günlükleri ve hataları bulma hakkında bilgiye ihtiyacınız varsa bkz . IoT Edge cihazınızda sorun giderme.

Sağlama ve Dağıtım

IoT Edge modülü başarıyla dağıtılıyor ancak ardından cihazdan kayboluyor

Belirtiler

IoT Edge cihazı için modüller ayarlandıktan sonra modüller başarıyla dağıtılır ancak birkaç dakika sonra cihazdan ve Azure portalındaki cihaz ayrıntılarından kaybolur. Tanımlanan modüllerden başka modüller de cihazda görünebilir.

Neden

Bir otomatik dağıtım bir cihazı hedef alıyorsa, tek bir cihaz için modülleri el ile ayarlamaya göre öncelik alır. Azure portalında modülleri ayarla işlevi veya Visual Studio Code'da tek cihaz için dağıtım oluşturma işlevi bir an için geçerli olur. Tanımladığınız modüllerin cihazda başladığını görürsünüz. Ardından otomatik dağıtımın önceliği başlar ve cihazın istenen özelliklerinin üzerine yazılır.

Çözüm

Cihaz başına otomatik dağıtım veya tek tek cihaz dağıtımları olmak üzere yalnızca bir dağıtım mekanizması türü kullanın. Bir cihazı hedefleyen birden çok otomatik dağıtımınız varsa, belirli bir cihaza doğru dağıtımın uygulandığından emin olmak için öncelik veya hedef açıklamalarını değiştirebilirsiniz. Ayrıca cihaz ikizini artık otomatik dağıtımın hedef açıklamasıyla eşleşecek şekilde güncelleştirebilirsiniz.

Daha fazla bilgi için bkz . Tek cihazlar veya uygun ölçekte IoT Edge otomatik dağıtımlarını anlama.

IoT Edge çalışma zamanı

IoT Edge aracısı bir dakika sonra durur

Belirtiler

edgeAgent modülü yaklaşık bir dakika boyunca başarıyla başlatılır ve çalışır, ardından durur. Günlükler, IoT Edge aracısının AMQP üzerinden IoT Hub'a bağlanmayı denediğini ve ardından WebSocket üzerinden AMQP kullanarak bağlanmayı denediğini gösterir. Bu başarısız olduğunda IoT Edge aracısı çıkar.

Örnek edgeAgent günlükleri:

2017-11-28 18:46:19 [INF] - Starting module management agent.
2017-11-28 18:46:19 [INF] - Version - 1.0.7516610 (03c94f85d0833a861a43c669842f0817924911d5)
2017-11-28 18:46:19 [INF] - Edge agent attempting to connect to IoT Hub via AMQP...
2017-11-28 18:46:49 [INF] - Edge agent attempting to connect to IoT Hub via AMQP over WebSocket...

Neden

Konak ağındaki bir ağ yapılandırması, IoT Edge aracısının ağa ulaşmasını engelliyor. Aracı ilk olarak AMQP (5671 numaralı bağlantı noktası) üzerinden bağlanma girişiminde bulunur. Bağlantı başarısız olursa, WebSockets'i (bağlantı noktası 443) dener.

IoT Edge çalışma zamanı, her bir modül için iletişim kurulacak bir ağ ayarlar. Linux’ta bu ağ bir köprü ağıdır. Windows’da NAT kullanır. Bu sorun, NAT ağını kullanan Windows kapsayıcılarının kullanıldığı Windows cihazlarında daha yaygın olarak görülür.

Çözüm

Bu köprüye/NAT ağına atanmış IP adresleri için İnternet'e giden bir yol olduğundan emin olun. Bazen konaktaki VPN yapılandırması, IoT Edge ağını geçersiz kılar.

Edge Aracısı modülü “boş yapılandırma dosyası” bildiriyor ve cihazda hiçbir modül başlatılmıyor

Belirtiler

  • Cihaz, dağıtımda tanımlanan modülleri başlatırken sorun yaşıyor. Yalnızca edgeAgent çalışıyor, ancak boş yapılandırma dosyası bildiriyor....

  • Bir cihazda çalıştırdığınızda sudo iotedge check , Kapsayıcı altyapısının DNS sunucusu ayarıyla yapılandırılmadığını bildirir ve bu da IoT Hub bağlantısını etkileyebilir. En iyi yöntemler için lütfen bakın https://aka.ms/iotedge-prod-checklist-dns .

Neden

  • Varsayılan olarak, IoT Edge modülleri kendi yalıtılmış kapsayıcı ağında başlatır. Cihaz bu özel ağ içinde DNS ad çözümlemesiyle ilgili sorun yaşıyor olabilir.
  • IoT Edge'in anlık yüklemesini kullanıyorsanız Docker yapılandırma dosyası farklı bir konumdur. Bkz. çözüm seçeneği 3.

Çözüm

1. Seçenek: Kapsayıcı altyapısı ayarlarında DNS sunucusunu ayarlama

Altyapı tarafından başlatılan tüm kapsayıcı modülleri için geçerli olan kapsayıcı altyapısı ayarlarında ortamınız için DNS sunucusunu belirtin. adlı daemon.jsonbir dosya oluşturun ve kullanılacak DNS sunucusunu belirtin. Örneğin:

{
    "dns": ["1.1.1.1"]
}

Bu DNS sunucusu genel olarak erişilebilen bir DNS hizmetine ayarlanır. Ancak şirket ağları gibi bazı ağların kendi DNS sunucuları yüklüdür ve genel DNS sunucularına erişime izin vermez. Bu nedenle, uç cihazınız bir genel DNS sunucusuna erişemiyorsa, bunu erişilebilir bir DNS sunucusu adresiyle değiştirin.

Cihazınızda dizinine /etc/docker yerleştirindaemon.json.

Konum zaten bir daemon.json dosya içeriyorsa, dns anahtarını ekleyin ve dosyayı kaydedin.

Güncelleştirmelerin etkili olması için kapsayıcı altyapısını yeniden başlatın.

sudo systemctl restart docker

Seçenek 2: Modül başına IoT Edge dağıtımında DNS sunucusunu ayarlama

IoT Edge dağıtımında her modülün createOptions için DNS sunucusu ayarlayabilirsiniz. Örneğin:

"createOptions": {
  "HostConfig": {
    "Dns": [
      "x.x.x.x"
    ]
  }
}

Uyarı

Bu yöntemi kullanır ve yanlış DNS adresi belirtirseniz edgeAgent, IoT Hub ile bağlantıyı kaybeder ve sorunu çözmek için yeni dağıtımlar alamaz. Bu sorunu çözmek için IoT Edge çalışma zamanını yeniden yükleyebilirsiniz. IoT Edge'in yeni bir örneğini yüklemeden önce önceki yüklemeden edgeAgent kapsayıcılarını kaldırdığınızdan emin olun.

EdgeAgent ve edgeHub modülleri için de bu yapılandırmayı ayarladığınızdan emin olun.

Seçenek 3: Komutu denetlemek için docker yapılandırma dosyasının konumunu geçirin

IoT Edge tutturma olarak yüklendiyse Docker yapılandırma dosyasının konumunu belirtmek için parametresini kullanın --container-engine-config-file . Örneğin, Docker yapılandırma dosyası konumunda /var/snap/docker/current/config/daemon.jsonbulunuyorsa şu komutu çalıştırın: iotedge check --container-engine-config-file '/var/snap/docker/current/config/daemon.json'.

Şu anda, yapılandırma dosyası konumunu ayarladıktan sonra bile iotedge denetiminin çıkışında uyarı iletisi görünmeye devam eder. IoT Edge tutturma işleminin Docker tutturma işlemine okuma erişimi olmadığından hatayı raporlar. Sürüm işleminizde iotedge denetimi kullanıyorsanız parametresini kullanarak --ignore container-engine-dns container-engine-logrotate uyarı iletisini gizleyebilirsiniz.

LTE bağlantılı Edge Aracısı modülü 'boş kenar aracısı yapılandırması' bildirir ve 'geçici ağ hatasına' neden olur

Belirtiler

LTE bağlantısıyla yapılandırılan bir cihaz, dağıtımda tanımlanan modülleri başlatırken sorunlarla karşılaşıyor. edgeAgent, IoT Hub'a bağlanamıyor ve boş kenar aracısı yapılandırması ve geçici ağ hatası oluştuğu bildiriyor.

Neden

Bazı ağlarda, varsayılan docker ağı MTU'sunun (1500) çok yüksek olmasını ve paket parçalanmasının dış kaynaklara erişimi engellemesine neden olan paket yükü vardır.

Çözüm

  1. Docker ağınız için MTU ayarını denetleyin.

    docker network inspect <network name>

  2. Cihazınızdaki fiziksel ağ bağdaştırıcısı için MTU ayarını denetleyin.

    ip addr show eth0

Not

Docker ağı için MTU, cihazınız için MTU'dan yüksek olamaz. Daha fazla bilgi için ISS'nize başvurun.

Docker ağınız ve cihazınız için farklı bir MTU boyutu görürseniz aşağıdaki geçici çözümü deneyin:

  1. Yeni bir ağ oluşturun. Örneğin,

    docker network create --opt com.docker.network.driver.mtu=1430 test-mtu

    Örnekte, cihazın MTU ayarı 1430'dur. Bu nedenle, Docker ağı için MTU 1430 olarak ayarlanır.

  2. Azure ağını durdurun ve kaldırın.

    docker network rm azure-iot-edge

  3. Azure ağını yeniden oluşturun.

    docker network create --opt com.docker.network.driver.mtu=1430 azure-iot-edge

  4. Tüm kapsayıcıları kaldırın ve aziot edged hizmetini yeniden başlatın.

    sudo iotedge system stop && sudo docker rm -f $(docker ps -aq -f "label=net.azure-devices.edge.owner=Microsoft.Azure.Devices.Edge.Agent") && sudo iotedge config apply

IoT Edge aracısı bir modülün görüntüsüne erişemiyor (403)

Belirtiler

Kapsayıcı çalıştırılamıyor ve edgeAgent günlükleri bir 403 hatası bildirecek.

Neden

IoT Edge aracı modülünün bir modülün görüntüsüne erişme izinleri yoktur.

Çözüm

Kapsayıcı kayıt defteri kimlik bilgilerinizin cihaz dağıtım bildiriminizi doğru olduğundan emin olun.

IoT Edge aracısı aşırı kimlik çağrıları yapıyor

Belirtiler

IoT Edge aracısı, Azure IoT Hub'a aşırı kimlik çağrıları yapar.

Neden

Cihaz dağıtım bildiriminin yanlış yapılandırılması, cihazda başarısız bir dağıtıma neden olur. IoT Edge Aracısı yeniden deneme mantığı dağıtımı yeniden denemeye devam eder. Her yeniden deneme, dağıtım başarılı olana kadar kimlik çağrıları yapar. Örneğin, dağıtım bildirimi kapsayıcı kayıt defterinde olmayan veya yanlış yazılmış bir modül URI'si belirtirse, Dağıtım bildirimi düzeltilene kadar IoT Edge aracısı dağıtımı yeniden dener.

Çözüm

Azure portalında dağıtım bildirimini doğrulayın. Hataları düzeltin ve bildirimi cihaza yeniden dağıtın.

IoT Edge hub’ı başlatılamıyor

Belirtiler

edgeHub modülü başlatılamıyor. Günlüklerde aşağıdaki hatalardan birine benzer bir ileti görebilirsiniz:

One or more errors occurred.
(Docker API responded with status code=InternalServerError, response=
{\"message\":\"driver failed programming external connectivity on endpoint edgeHub (6a82e5e994bab5187939049684fb64efe07606d2bb8a4cc5655b2a9bad5f8c80):
Error starting userland proxy: Bind for 0.0.0.0:443 failed: port is already allocated\"}\n)

Or

info: edgelet_docker::runtime -- Starting module edgeHub...
warn: edgelet_utils::logging -- Could not start module edgeHub
warn: edgelet_utils::logging --     caused by: failed to create endpoint edgeHub on network nat: hnsCall failed in Win32:
        The process cannot access the file because it is being used by another process. (0x20)

Neden

Konak makinedeki başka bir işlem, edgeHub modülünün bağlamaya çalıştığı bir bağlantı noktasına bağlanmıştır. IoT Edge hub'ı ağ geçidi senaryolarında kullanılmak üzere 443, 5671 ve 8883 bağlantı noktalarını eşler. Başka bir işlem bu bağlantı noktalarından birine zaten bağlıysa modül başlatılamaz.

Çözüm

Bu sorunu iki şekilde çözebilirsiniz:

IoT Edge cihazı bir ağ geçidi cihazı olarak çalışıyorsa 443, 5671 veya 8883 numaralı bağlantı noktasını kullanan işlemi bulup durdurmanız gerekir. 443 numaralı bağlantı noktası hatası genellikle diğer işlemin bir web sunucusu olduğu anlamına gelir.

IoT Edge cihazını ağ geçidi olarak kullanmanız gerekmiyorsa edgeHub modül oluşturma seçeneklerinden bağlantı noktası bağlamalarını kaldırabilirsiniz. Oluşturma seçeneklerini Azure portalında veya doğrudan deployment.json dosyasında değiştirebilirsiniz.

Azure portalında:

  1. IoT hub'ınıza gidin ve Cihaz yönetimi menüsünün altında Cihazlar'ı seçin.

  2. Güncelleştirmek istediğiniz IoT Edge cihazını seçin.

  3. Modülleri Ayarlama'yı seçin.

  4. Çalışma Zamanı Ayarları'nı seçin.

  5. Edge Hub modül ayarlarında Kapsayıcı Oluşturma Seçenekleri metin kutusundan her şeyi silin.

  6. Değişikliklerinizi kaydetmek ve dağıtımı oluşturmak için Uygula'yı seçin.

deployment.json dosyasında:

  1. IoT Edge cihazınıza uyguladığınız deployment.json dosyasını açın.

  2. edgeHub edgeAgent istenen özellikler bölümünde ayarları bulun:

      "edgeHub": {
          "restartPolicy": "always",
          "settings": {
             "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
             "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
          },
          "status": "running",
          "type": "docker"
       }
    
  3. Satırın sonundaki createOptions satırı ve sonundaki virgülleri image kaldırın:

      "edgeHub": {
          "restartPolicy": "always",
          "settings": {
          "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
          "status": "running",
          "type": "docker"
    }
    
  4. IoT Edge cihazınıza yeniden uygulamak için Oluştur'u seçin.

IoT Edge modülü 404 hatasıyla edgeHub’a ileti gönderemiyor

Belirtiler

Özel bir IoT Edge modülü IoT Edge hub'ına 404 Module not found hatasıyla ileti gönderemiyor. IoT Edge çalışma zamanı aşağıdaki iletiyi günlüklere yazdırır:

Error: Time:Thu Jun  4 19:44:58 2018 File:/usr/sdk/src/c/provisioning_client/adapters/hsm_client_http_edge.c Func:on_edge_hsm_http_recv Line:364 executing HTTP request fails, status=404, response_buffer={"message":"Module not found"}u, 04 )

Neden

IoT Edge çalışma zamanı, güvenlik nedeniyle edgeHub'a bağlanan tüm modüller için işlem tanımlamayı zorunlu kılır. Bir modül tarafından gönderilen tüm iletilerin modülün ana işlem kimliğinden geldiğini doğrular. İlk oluşturulandan farklı bir işlem kimliğinden bir modül tarafından ileti gönderiliyorsa, 404 hata iletisiyle iletiyi reddeder.

Çözüm

1.0.7 sürümünden itibaren tüm modül işlemlerine bağlanma yetkisi veilmektedir. Daha fazla bilgi için bkz . 1.0.7 sürüm değişiklik günlüğü.

1.0.7 sürümüne yükseltmek mümkün değilse aşağıdaki adımları tamamlayın. EdgeHub'a ileti göndermek için özel IoT Edge modülü tarafından her zaman aynı işlem kimliğinin kullanıldığından emin olun. Örneğin, Docker dosyanızda komutu yerine bunu yaptığınızdan CMD emin olunENTRYPOINT. Komut, CMD modül için bir işlem kimliğine ve ana programı çalıştıran bash komutu için başka bir işlem kimliğine yol açar, ancak ENTRYPOINT tek bir işlem kimliğine yol açar.

Daha küçük cihazlardaki kararlılık sorunları

Belirtiler

Raspberry Pi gibi kaynak kısıtlanmış cihazlarda, özellikle ağ geçidi olarak kullanıldığında kararlılık sorunlarıyla karşılaşabilirsiniz. Belirtiler arasında IoT Edge hub modülündeki yetersiz bellek özel durumları, aşağı akış cihazlarının bağlanamaması veya cihazın birkaç saat sonra telemetri iletileri gönderememesi sayılabilir.

Neden

IoT Edge çalışma zamanının bir parçası olan IoT Edge hub'ı varsayılan olarak performans için iyileştirilmiştir ve büyük bellek öbekleri ayırmaya çalışır. Bu iyileştirme, kısıtlanmış uç cihazları için ideal değildir ve kararlılık sorunlarına neden olabilir.

Çözüm

IoT Edge hub'ı için OptimizeForPerformance ortam değişkenini false olarak ayarlayın. Ortam değişkenlerini ayarlamanın iki yolu vardır:

Azure portalında:

  1. IoT Hub'ınızda IoT Edge cihazınızı ve cihaz ayrıntıları sayfasında Modül Çalışma>Zamanı Ayarlarını Ayarla'yı seçin.

  2. IoT Edge hub modülü için, True/False türü False olarak ayarlanmış OptimizeForPerformance adlı bir ortam değişkeni oluşturun.

  3. Değişiklikleri kaydetmek için Uygula'yı ve ardından Gözden Geçir ve oluştur'u seçin.

    Ortam değişkeni artık dağıtım bildiriminin özelliğindedir edgeHub :

       "edgeHub": {
          "env": {
                "OptimizeForPerformance": {
                   "value": false
                }
          },
          "restartPolicy": "always",
          "settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
          },
          "status": "running",
          "type": "docker"
       }
    
  4. Değişikliklerinizi kaydetmek ve modülü dağıtmak için Oluştur'u seçin.

Güvenlik daemon'ı başarıyla başlatamadı

Belirtiler

Güvenlik daemon'ı başlatılamıyor ve modül kapsayıcıları oluşturulmuyor. edgeAgentve edgeHub diğer özel modüller IoT Edge hizmeti tarafından başlatılmaz. Günlüklerde aziot-edged şu hatayı görürsünüz:

  • Daemon başarıyla başlatılamadı: Yönetim hizmeti başlatılamadı
  • neden: /var/run/iotedge/mgmt.sock yolu için bir hata oluştu
  • neden: İzin reddedildi (İs hatası 13)

Neden

CentOS 7 dışındaki tüm Linux dağıtımları için IoT Edge'in varsayılan yapılandırması yuva etkinleştirmeyi kullanmaktır systemd . Yapılandırma dosyasını yuva etkinleştirmeyi kullanmayacak şekilde değiştirir ancak URL'leri olarak /var/run/iotedge/*.sockiotedge bırakırsanız, kullanıcı kilidini açamaz /var/run/iotedge ve yuvaların kendisini bağlayamaz anlamına gelir.

Çözüm

Yuva etkinleştirmenin desteklendiği bir dağıtımda yuva etkinleştirmeyi devre dışı bırakmanız gerekmez. Ancak, yuva etkinleştirmeyi hiç kullanmamak isterseniz, yuvaları içine /var/lib/iotedge/yerleştirin.

  1. Systemd'in gereksiz yere başlatmaması için yuva birimlerini devre dışı bırakmak için komutunu çalıştırın systemctl disable iotedge.socket iotedge.mgmt.socket
  2. iotedge yapılandırmasını hem hem de connect listen bölümlerinde kullanılacak şekilde /var/lib/iotedge/*.sock değiştirin
  3. Modülleriniz zaten varsa, eski /var/run/iotedge/*.sock bağlamalara sahiptirler, bu nedenle docker rm -f bunlar.

İleti kuyruğu temizleme işlemi yavaş

Belirtiler

İletiler işlendikten sonra ileti kuyruğu temizlenmiyor. İleti kuyruğu zaman içinde büyür ve sonunda IoT Edge çalışma zamanının belleğinin dolmasına neden olur.

Neden

İleti temizleme aralığı, istemci iletisi TTL (yaşam süresi) ve EdgeHub MessageCleanupIntervalSecs ortam değişkeni tarafından denetlenir . Varsayılan ileti TTL değeri iki saattir ve varsayılan MessageCleanupIntervalSecs değeri 30 dakikadır. Uygulamanız varsayılan değerden daha kısa bir TTL değeri kullanıyorsa ve MessageCleanupIntervalSecs değerini ayarlamazsanız, süresi dolan iletiler bir sonraki temizleme aralığına kadar temizlenmez.

Çözüm

Uygulamanızın varsayılan değerden daha kısa olan TTL değerini değiştirirseniz MessageCleanupIntervalSecs değerini de ayarlayın. MessageCleanupIntervalSecs değeri, istemcinin kullandığı en küçük TTL değerinden önemli ölçüde küçük olmalıdır. Örneğin, istemci uygulaması ileti üst bilgisinde beş dakikalık bir TTL tanımlıyorsa MessageCleanupIntervalSecs değerini bir dakika olarak ayarlayın. Bu ayarlar, iletilerin altı (5 + 1) dakika içinde temizlenmesini sağlar.

MessageCleanupIntervalSecs değerini yapılandırmak için IoT Edge hub modülü için dağıtım bildiriminde ortam değişkenini ayarlayın. Çalışma zamanı ortam değişkenlerini ayarlama hakkında daha fazla bilgi için bkz . Edge Aracısı ve Edge Hub Ortam Değişkenleri.

IoT Edge güvenlik daemon’u geçersiz ana bilgisayar adı nedeniyle başarısız oluyor

Belirtiler

IoT Edge güvenlik yöneticisi günlüklerini denetleme girişimi başarısız oluyor ve aşağıdaki iletiyi yazdırıyor:

Error parsing user input data: invalid hostname. Hostname cannot be empty or greater than 64 characters

Neden

IoT Edge çalışma zamanı yalnızca 64 karakterden kısa konak adlarını destekleyebilir. Fiziksel makinelerin genellikle uzun konak adları yoktur, ancak sorun bir sanal makinede daha yaygındır. Özellikle Azure'da barındırılan Windows sanal makineleri için otomatik olarak oluşturulan konak adları uzun olma eğilimindedir.

Çözüm

Bu hatayı gördüğünüzde, sanal makinenizin DNS adını yapılandırıp ardından kurulum komutunda DNS adını ana bilgisayar adı olarak ayarlayarak sorunu çözebilirsiniz.

  1. Azure portalında sanal makinenizin genel bakış sayfasına gidin.

  2. Yapılandırma panelini açmak için Yapılandırılmadı bağlantısını (sanal makineniz yeniyse) seçin veya Temel DNS>adı'nın altında mevcut DNS adınızı seçin. Sanal makinenizde zaten yapılandırılmış bir DNS adı varsa, yeni bir ad yapılandırmanız gerekmez.

  3. Henüz bir dns ad etiketiniz yoksa bir değer girin ve Kaydet'i seçin.

  4. Şu biçimde olması gereken yeni DNS adını kopyalayın:
    <DNSnamelabel>.<vmlocation.cloudapp.azure.com>.

  5. IoT Edge cihazında yapılandırma dosyasını açın.

    sudo nano /etc/aziot/config.toml
    
  6. değerini hostname DNS adınız ile değiştirin.

  7. Dosyayı kaydedip kapatın, ardından değişiklikleri IoT Edge'e uygulayın.

    sudo iotedge config apply
    

IoT Edge modülü bağlantı hatası bildiriyor

Belirtiler

Çalışma zamanı modülleri de dahil olmak üzere doğrudan bulut hizmetlerine bağlanan IoT Edge modülleri beklendiği gibi çalışmayı durdurur ve bağlantı veya ağ hataları ile ilgili hatalar döndürür.

Neden

Kapsayıcılar, bulut hizmetleriyle iletişim kurabilmeleri için İnternet'e bağlanmak için IP paketi iletmeyi kullanır. Docker'da IP paketi iletme varsayılan olarak etkindir, ancak devre dışı bırakılırsa bulut hizmetlerine bağlanan modüller beklendiği gibi çalışmaz. Daha fazla bilgi için Docker belgelerindeki Kapsayıcı iletişimini anlama bölümüne bakın.

Çözüm

IP paketi iletmeyi etkinleştirmek için aşağıdaki adımları kullanın.

  1. sysctl.conf dosyasını açın.

    sudo nano /etc/sysctl.conf
    
  2. Dosyaya aşağıdaki satırı ekleyin.

    net.ipv4.ip_forward=1
    
  3. Dosyayı kaydedip kapatın

  4. Değişiklikleri uygulamak için ağ hizmetini ve Docker hizmetini yeniden başlatın.

Ağ geçidinin arkasındaki IoT Edge, HTTP isteklerini gerçekleştiremiyor ve edgeAgent modülünü başlatamıyor

Belirtiler

IoT Edge çalışma zamanı geçerli bir yapılandırma dosyasıyla etkindir, ancak edgeAgent modülünü başlatamaz. Komut iotedge list boş bir liste döndürür. IoT Edge çalışma zamanı günlüklerde raporlar Could not perform HTTP request .

Neden

Bir ağ geçidinin arkasındaki IoT Edge cihazları, modül görüntülerini yapılandırma dosyasının alanında belirtilen parent_hostname üst IoT Edge cihazından alır. Hata, Could not perform HTTP request aşağı akış cihazının HTTP üzerinden üst cihazına ulaşamadığı anlamına gelir.

Çözüm

Üst IoT Edge cihazının aşağı akış IoT Edge cihazından gelen istekleri alabildiğinden emin olun. Aşağı akış cihazından gelen istekler için 443 ve 6617 bağlantı noktalarında ağ trafiğini açın.

Ağ geçidinin arkasındaki IoT Edge, HTTP isteklerini gerçekleştiremiyor ve edgeAgent modülünü başlatamıyor

Belirtiler

IoT Edge daemon geçerli bir yapılandırma dosyasıyla etkindir, ancak edgeAgent modülünü başlatamaz. Komut iotedge list boş bir liste döndürür. IoT Edge daemon günlükleri raporu Could not perform HTTP request.

Neden

Bir ağ geçidinin arkasındaki IoT Edge cihazları, modül görüntülerini yapılandırma dosyasının alanında belirtilen parent_hostname üst IoT Edge cihazından alır. Hata, Could not perform HTTP request aşağı akış cihazının HTTP üzerinden üst cihazına ulaşamadığı anlamına gelir.

Çözüm

Üst IoT Edge cihazının aşağı akış IoT Edge cihazından gelen istekleri alabildiğinden emin olun. Aşağı akış cihazından gelen istekler için 443 ve 6617 bağlantı noktalarında ağ trafiğini açın.

Bir ağ geçidinin arkasındaki IoT Edge, bir IoT hub'ından diğerine geçirildiğinde bağlanamıyor

Belirtiler

IoT Edge cihaz hiyerarşisini bir IoT hub'ından diğerine geçirmeye çalışırken, üst düzey üst IoT Edge cihazı IoT Hub'a bağlanabilir, ancak aşağı akış IoT Edge cihazları bağlanamaz. Günlükler raporu Unable to authenticate client downstream-device/$edgeAgent with module credentials.

Neden

Yeni IoT hub'ına geçiş gerçekleştiğinde aşağı akış cihazlarının kimlik bilgileri düzgün güncelleştirilmedi. Bu edgeAgent nedenle ve edgeHub modüller kimlik doğrulama türüne none sahip olacak şekilde ayarlanmıştır (açıkça ayarlanmadıysa varsayılan). Bağlantı sırasında, aşağı akış cihazlarında modüller eski kimlik bilgilerini kullanır ve kimlik doğrulamasının başarısız olmasına neden olur.

Çözüm

Yeni IoT hub'ına geçiş yaparken (DPS kullanmadığını varsayarak) şu adımları sırayla izleyin:

  1. Cihaz kimliklerini eski IoT hub'ından yenisine aktarmak ve içeri aktarmak için bu kılavuzu izleyin
  2. Yeni IoT hub'ında tüm IoT Edge dağıtımlarını ve yapılandırmalarını yeniden yapılandırma
  3. Yeni IoT hub'ında tüm üst-alt cihaz ilişkilerini yeniden yapılandırma
  4. Her cihazı yeni IoT hub ana bilgisayar adına işaret etmek için güncelleştirin (iothub_hostname içinde config.tomlaltında[provisioning])
  5. Cihaz dışarı aktarma sırasında kimlik doğrulama anahtarlarını dışlama seçeneğini belirlediyseniz, her cihazı yeni IoT hub'ı tarafından verilen yeni anahtarlarla yeniden yapılandırın (device_id_pk altında [provisioning.authentication] config.toml)
  6. Önce üst düzey üst Edge cihazını yeniden başlatın, çalışır durumda olduğundan emin olun
  7. Hiyerarşi düzeyindeki her cihazı yukarıdan aşağıya doğru düzeye göre yeniden başlatın

IoT Edge, Coğrafi olarak IoT Hub'dan uzak olduğunda düşük ileti aktarım hızına sahiptir

Belirtiler

Azure IoT Hub'dan coğrafi olarak uzak olan Azure IoT Edge cihazları beklenenden daha düşük ileti aktarım hızına sahiptir.

Neden

Cihaz ve IoT Hub arasındaki yüksek gecikme süresi beklenenden daha düşük bir ileti aktarım hızına neden olabilir. IoT Edge, 10 varsayılan ileti toplu iş boyutu kullanır. Bu, tek bir toplu işte gönderilen iletilerin sayısını sınırlar ve bu da cihaz ile IoT Hub arasındaki gidiş dönüş sayısını artırır.

Çözüm

IoT Edge Hub MaxUpstreamBatchSize ortam değişkenini artırmayı deneyin. Bu, cihaz ile IoT Hub arasındaki gidiş dönüş sayısını azaltan tek bir toplu işte daha fazla ileti gönderilmesini sağlar.

Azure portalında Azure Edge Hub ortam değişkenlerini ayarlamak için:

  1. IoT Hub'ınıza gidin ve Cihaz yönetimi menüsünün altında Cihazlar'ı seçin.
  2. Güncelleştirmek istediğiniz IoT Edge cihazını seçin.
  3. Modülleri Ayarlama'yı seçin.
  4. Çalışma Zamanı Ayarları'nı seçin.
  5. Edge Hub modülü ayarları sekmesinde, MaxUpstreamBatchSize ortam değişkenini 20 değerine sahip Sayı türüne ekleyin.
  6. Uygula’yı seçin.

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.