Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
IoT Edge 1.1
Önemli
IoT Edge 1.1 destek sonu tarihi 13 Aralık 2022. Bu ürünün, hizmetin, teknolojinin veya API’nin nasıl desteklendiği hakkında bilgi edinmek için Microsoft Ürün Yaşam Döngüsü’ne göz atın. IoT Edge'in en son sürümüne güncelleme hakkında daha fazla bilgi için IoT Edge'i Güncelleştirin bölümüne bakın.
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ı nasıl bulacağınız hakkında bilgiye ihtiyacınız varsa, IoT Edge cihazınızı Sorun Giderme bağlantısına bakın.
Sağlama ve Dağıtım
IoT Edge modülü başarıyla dağıtılıyor ancak ardından cihazdan kayboluyor
Belirti -leri
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.
Nedeni
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 öncelikleri devreye girer ve cihazın istenen özelliklerini değiştirir.
Çö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. Artık cihaz ikizinin otomatik dağıtımın hedef açıklamasıyla eşleşmemesi için güncelleştirme yapabilirsiniz.
Daha fazla bilgi için Tek cihazlar veya büyük ölçekte IoT Edge otomatik dağıtımlarını anlama konusuna bakın.
Windows'da IoT Edge çalışma zamanı günlükleri alınamıyor
Belirti -leri
Windows'da Get-WinEvent kullanırken bir EventLogException alırsınız.
Nedeni
Get-WinEvent PowerShell komutu, belirli bir ProviderName tarafından günlükleri bulmak için gerekli olan bir kayıt defteri girdisinin mevcut olmasına dayanır.
Çözüm
IoT Edge daemon'ları için bir kayıt defteri girdisi ayarlayın. Aşağıdaki içeriğe sahip bir iotedge.reg dosyası oluşturun ve çift tıklayarak veya komutunu kullanarak Windows Kayıt Defteri'ne aktarın reg import iotedge.reg :
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\iotedged]
"CustomSource"=dword:00000001
"EventMessageFile"="C:\\ProgramData\\iotedge\\iotedged.exe"
"TypesSupported"=dword:00000007
DPS istemci hatası
Belirti -leri
IoT Edge hata iletisiyle başlatılamıyor failed to provision with IoT Hub, and no valid device backup was found dps client error.
Nedeni
Grup kaydı, IoT Hub'a IoT Edge cihazı sağlamak için kullanılır. IoT Edge cihazı farklı bir hub'a taşınır. Kayıt DPS'de silinir. Yeni hub için DPS'de yeni bir kayıt oluşturulur. Cihazın yeniden sağlanması yapılmadı.
Çözüm
- DPS kimlik bilgilerinizin doğru olduğunu doğrulayın.
- Yapılandırmanızı
sudo iotedge apply configkullanarak uygulayın. - Cihaz yeniden sağlanmamışsa, cihazı
sudo iotedge system restartkullanarak yeniden başlatın. - Cihaz yeniden sağlanmamışsa
sudo iotedge system reprovisionkullanarak yeniden sağlanmayı zorla yapın.
Otomatik olarak yeniden sağlama için cihaz yapılandırma dosyasında ayarlayın dynamic_reprovisioning: true . Bu bayrağın true olarak ayarlanması dinamik yeniden sağlama özelliğine katılım sağlar. IoT Edge, belirli hatalar için kendi IoT Hub bağlantısını izleyerek cihazın bulutta yeniden sağlanmış gibi göründüğü durumları algılar. IoT Edge, tüm Edge modüllerini ve kendisini kapatarak yanıt verir. Daemon bir sonraki başlatıldığında, yeni IoT Hub sağlama bilgilerini almak için bu cihazı Azure ile yeniden sağlamayı dener.
Dış sağlama kullanılırken, daemon kapatmadan önce dış sağlama uç noktasına yeniden sağlama olayı hakkında da bildirim gönderir. Daha fazla bilgi için bkz. IoT Hub cihazı yeniden sağlama kavramları.
IoT Edge çalışma zamanı
IoT Edge aracısı bir dakika sonra durur
Belirti -leri
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. IoT Edge aracısı, bu başarısız olduğunda çı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...
Nedeni
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
Belirti -leri
Cihaz, dağıtımda tanımlanan modülleri başlatırken sorun yaşıyor. Yalnızca edgeAgent çalışıyor ancak sürekli olarak 'boş yapılandırma dosyası...' bildiriyor.
Nedeni
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.
Çözüm
1. Seçenek: Kapsayıcı altyapısı ayarlarında DNS sunucusunu ayarlama
Ortamınız için DNS sunucusunu, altyapı tarafından başlatılan tüm kapsayıcı modülleri için geçerli olacak kapsayıcı altyapısı ayarlarında 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.
Platformunuz için doğru konuma yerleştirin daemon.json :
| Platforma | Yer |
|---|---|
| Linux | /etc/docker |
| Windows kapsayıcıları ile Windows ana bilgisayarı | C:\ProgramData\iotedge-moby\config |
Eğer konumda zaten bir daemon.json dosyası varsa, dosyaya dns anahtarını ekleyin ve kaydedin.
Güncellemelerin etkili olması için kapsayıcı motorunu yeniden başlatın.
| Platforma | Komut |
|---|---|
| Linux | sudo systemctl restart docker |
| Windows (Yönetici PowerShell) | Restart-Service iotedge-moby -Force |
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.
IoT Edge aracısı bir modülün görüntüsüne erişemiyor (403)
Belirti -leri
Kapsayıcı çalıştırılamıyor ve edgeAgent günlükleri bir 403 hatası bildiriyor.
Nedeni
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 merkezinin başlatılması başarısız oldu
Belirti -leri
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)
Veya
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)
Nedeni
Konak makinedeki başka bir işlem, edgeHub modülünün bağlamaya çalıştığı bir bağlantı noktasına bağlanmış durumda. 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:
IoT hub'ınıza gidin ve Cihaz yönetimi menüsünün altında Cihazlar'ı seçin.
Güncelleştirmek istediğiniz IoT Edge cihazını seçin.
Modülleri Ayarlama'yı seçin.
Çalışma Zamanı Ayarları'nı seçin.
Edge Hub modülü ayarlarında, Seçenekler Oluştur metin kutusundan her şeyi silin.
Değişikliklerinizi kaydedin ve dağıtımı oluşturun.
deployment.json dosyasında:
IoT Edge cihazınıza uyguladığınız deployment.json dosyasını açın.
edgeHubedgeAgent istenen özellikler bölümünde ayarları bulun:"edgeHub": { "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.1", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }, "type": "docker", "status": "running", "restartPolicy": "always" }createOptionssatırını ve ondan önce gelenimagesatırının sonundaki virgülü kaldırın."edgeHub": { "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.1" }, "type": "docker", "status": "running", "restartPolicy": "always" }Dosyayı kaydedin ve IoT Edge cihazınıza yeniden uygulayın.
IoT Edge modülü 404 hatasıyla edgeHub’a ileti gönderemiyor
Belirti -leri
Ö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 )
Nedeni
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 CMD komutu yerine ENTRYPOINT kullandığınızdan emin olun. 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ı
Belirti -leri
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.
Nedeni
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:
IoT Hub'ınızda IoT Edge cihazınızı seçin ve cihaz ayrıntıları sayfasından Modülleri Ayarla>Çalışma Zamanı Ayarları'nı seçin. IoT Edge hub modülü için OptimizeForPerformance adlı false olarak ayarlanmış bir ortam değişkeni oluşturun.
Dağıtım bildiriminde:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.1",
"createOptions": <snipped>
},
"env": {
"OptimizeForPerformance": {
"value": "false"
}
},
Güvenlik daemon'ı başarıyla başlatamadı
Belirti -leri
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)
Nedeni
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ı soket etkinleştirmeyi kullanmayacak şekilde değiştirir ancak URL'leri /var/run/iotedge/*.sock olarak bırakırsanız, iotedge kullanıcısı /var/run/iotedge'ye yazamadığı için kendisi yuvaları kilit açıp bağlayamaz.
Çözüm
Yuva etkinleştirmenin desteklendiği bir dağıtımda yuva etkinleştirmeyi devre dışı bırakmanız gerekmez. Ancak, soket etkinleştirmeyi hiç kullanmamak isterseniz, yuvaları /var/lib/iotedge/'nin içine koyun.
- Çalıştırın
systemctl disable iotedge.socket iotedge.mgmt.socketyuva birimlerini devre dışı bırakmak için, böylece systemd onları gereksiz yere başlatmaz - iotedge yapılandırmasını hem
/var/lib/iotedge/*.sockhem deconnectbölümlerinde kullanılacak şekildelistenolarak değiştirin. - Modülleriniz zaten varsa, eski
/var/run/iotedge/*.sockbağlamalara sahiptirler, bu nedenledocker rm -fbunlar.
İşletim sistemi uyuşmazlığı nedeniyle modül başlatılamadı
Semptom
EdgeHub modülü IoT Edge sürüm 1.1'de başlatılamıyor.
Nedeni
Windows modülü, konaktaki Windows sürümüyle uyumlu olmayan bir Windows sürümü kullanır. IoT Edge Windows sürümü 1809 derleme 17763, modül görüntüsü için temel katman olarak gereklidir, ancak farklı bir sürüm kullanılmaktadır.
Çözüm
Konak ve kapsayıcı görüntüsü uyuşmazlıklarıyla ilgili sorunları giderme bölümünde çeşitli Windows işletim sistemlerinizin sürümünü denetleyin. İşletim sistemleri farklıysa, bunları IoT Edge Windows sürüm 1809 derleme 17763'e güncelleştirin ve bu modül için kullanılan Docker görüntüsünü yeniden oluşturun.
Ağ Kurma
IoT Edge güvenlik daemon’u geçersiz ana bilgisayar adı nedeniyle başarısız oluyor
Belirti -leri
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
Nedeni
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.
Azure portalında sanal makinenizin genel bakış sayfasına gidin.
DNS adı altında Yapılandır'ı seçin. Sanal makinenizde zaten yapılandırılmış bir DNS adı varsa, yeni bir ad yapılandırmanız gerekmez.
DNS adı etiketi için bir değer sağlayın ve Kaydet'i seçin.
DNSnamelabel> biçiminde< olması gereken yeni DNS adını kopyalayın.<vmlocation.cloudapp.azure.com>.
Sanal makinenin içinde aşağıdaki komutu kullanarak IoT Edge çalışma zamanını DNS adınızla ayarlayın:
Linux'ta:
sudo nano /etc/iotedge/config.yamlWindows'da:
notepad C:\ProgramData\iotedge\config.yaml
IoT Edge modülü bağlantı hatası bildiriyor
Belirti -leri
Ç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.
Nedeni
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.
Windows'da:
Uygulamayı çalıştır'ı açın.
Metin kutusuna girin
regeditve Tamam'ı seçin.Kayıt Defteri Düzenleyicisi penceresinde HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parametersadresine gidin.
IPEnableRouter parametresini arayın.
Parametre varsa, parametresinin değerini 1 olarak ayarlayın.
Parametre yoksa, aşağıdaki ayarlarla yeni bir parametre olarak ekleyin:
Ayarlar Değer İsim IPEnableRouter Türü REG_DWORD Değer 1
Kayıt defteri düzenleyicisi penceresini kapatın.
Değişiklikleri uygulamak için sisteminizi yeniden başlatın.
Linux'ta:
sysctl.conf dosyasını açın.
sudo nano /etc/sysctl.confDosyaya aşağıdaki satırı ekleyin.
net.ipv4.ip_forward=1Dosyayı kaydedin ve kapatın.
Değişiklikleri uygulamak için ağ hizmetini ve Docker hizmetini yeniden başlatın.
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.