Modül ikizlerini izleme
Şunlar için geçerlidir: IoT Edge 1.5 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.
Azure IoT Hub'daki modül ikizleri, IoT Edge dağıtımlarınızın bağlantısını ve sistem durumunu izlemeyi sağlar. Modül ikizleri, çalışan modüllerinizin performansı hakkında IoT hub'ınızda yararlı bilgiler depolar. IoT Edge aracısı ve IoT Edge hub çalışma zamanı modüllerinin her biri sırasıyla modül ikizlerini $edgeAgent
ve $edgeHub
öğesini korur:
$edgeAgent
hem IoT Edge aracısı hem de IoT Edge hub çalışma zamanı modülleri ve özel modülleriniz hakkında sistem durumu ve bağlantı verileri içerir. IoT Edge aracısı modülleri dağıtmak, izlemek ve Bağlantı durumunu Azure IoT hub'ınıza bildirmekle sorumludur.$edgeHub
bir cihazda çalışan IoT Edge hub'ı ile Azure IoT hub'ınız arasındaki iletişimler hakkındaki verileri içerir. Bu, aşağı akış cihazlarından gelen iletileri işlemeyi içerir. IoT Edge hub'ı, Azure IoT Hub ile IoT Edge cihazları ve modülleri arasındaki iletişimlerin işlenmesinden sorumludur.
Veriler, modül ikizlerinin JSON yapılarında istenen ve bildirilen özellik kümeleri ile birlikte meta veriler, etiketler halinde düzenlenir. deployment.json dosyanızda belirttiğiniz istenen özellikler modül ikizlerine kopyalanır. IoT Edge aracısı ve IoT Edge hub'larının her birinde modülleri için bildirilen özellikler güncelleştirilir.
Benzer şekilde, deployment.json dosyasındaki özel modülleriniz için belirtilen istenen özellikler modül ikizine kopyalanır, ancak çözümünüz bildirilen özellik değerlerini sağlamakla sorumludur.
Bu makalede Azure portalında, Azure CLI'da ve Visual Studio Code'da modül ikizlerinin nasıl gözden geçirilip incelendiği açıklanır. Cihazlarınızın dağıtımları nasıl aldığını izleme hakkında bilgi için bkz . IoT Edge dağıtımlarını izleme. Modül ikizleri kavramına genel bakış için bkz . IoT Hub'da modül ikizlerini anlama ve kullanma.
İpucu
Bir IoT Edge cihazının IoT hub'ı ile bağlantısı kesilirse çalışma zamanı modülünün bildirilen özellikleri eskimiş olabilir. Bağlantının $edgeAgent
kaybedilip kaybedildiğini belirlemek için modüle ping işlemi yapabilirsiniz.
Çalışma zamanı modülü ikizlerini izleme
Dağıtım bağlantısı sorunlarını gidermek için IoT Edge aracısını ve IoT Edge hub'ı çalışma zamanı modül ikizlerini gözden geçirin ve ardından diğer modüllerde detaya gidin.
IoT Edge aracı modül ikizlerini izleme
Aşağıdaki JSON, Visual Studio Code'da çoğu JSON bölümünün daraltıldığı modül ikizini gösterir $edgeAgent
.
{
"deviceId": "Windows109",
"moduleId": "$edgeAgent",
"etag": "AAAAAAAAAAU=",
"deviceEtag": "NzgwNjA1MDUz",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 53,
"properties": {
"desired": { "···" },
"reported": {
"schemaVersion": "1.0",
"version": { "···" },
"lastDesiredStatus": { "···" },
"runtime": { "···" },
"systemModules": {
"edgeAgent": { "···" },
"edgeHub": { "···" }
},
"lastDesiredVersion": 5,
"modules": {
"SimulatedTemperatureSensor": { "···" }
},
"$metadata": { "···" },
"$version": 48
}
}
}
JSON, yukarıdan başlayarak aşağıdaki bölümlerde açıklanabilir:
- Meta Veriler - Bağlantı verilerini içerir. İlginç bir şekilde, IoT Edge aracısının bağlantı durumu her zaman bağlantısız durumdadır:
"connectionState": "Disconnected"
. Bağlantı durumu olmasının nedeni cihazdan buluta (D2C) iletilerle ilgili ve IoT Edge aracısı D2C iletileri göndermez. - Özellikler - ve
reported
alt bölümlerini içerirdesired
. - Properties.desired - (daraltılmış olarak gösterilir) deployment.json dosyasında işleç tarafından ayarlanan beklenen özellik değerleri.
- Properties.reported - IoT Edge aracısı tarafından bildirilen en son özellik değerleri.
properties.desired
Hem hem de properties.reported
bölümleri benzer bir yapıya sahiptir ve şema, sürüm ve çalışma zamanı bilgileri için ek meta veriler içerir. Ayrıca, tüm özel modüllerin modules
(gibiSimulatedTemperatureSensor
) bölümü ve systemModules
ve çalışma zamanı modüllerinin $edgeHub
bölümü $edgeAgent
de dahildir.
Bildirilen özellik değerlerini istenen değerlerle karşılaştırarak, tutarsızlıkları belirleyebilir ve sorunları gidermenize yardımcı olabilecek bağlantı kesilmelerini belirleyebilirsiniz. Bu karşılaştırmaları yaparken, araştırdığınız özelliğin metadata
bölümündeki bildirilen değeri denetleyin$lastUpdated
.
Aşağıdaki özelliklerin sorun giderme için incelenmesi önemlidir:
exitcode - Sıfır dışındaki herhangi bir değer modülün bir hatayla durdurulduğunu gösterir. Ancak, bir modül kasıtlı olarak durduruldu durumuna ayarlandıysa 137 veya 143 hata kodları kullanılır.
lastStartTimeUtc - Kapsayıcının en son başlatıldığı DateTime değerini gösterir. Kapsayıcı başlatılmadıysa bu değer 0001-01-01T00:00:00Z'dir.
lastExitTimeUtc - Kapsayıcının son bitirmiş olduğu DateTime değerini gösterir. Kapsayıcı çalışıyorsa ve hiç durdurulmadıysa bu değer 0001-01-01T00:00:00Z'dir.
runtimeStatus - Aşağıdaki değerlerden biri olabilir:
Value Açıklama bilinmiyor Dağıtım oluşturulana kadar varsayılan durum. geri çekilme Modül başlatacak şekilde zamanlandı ancak şu anda çalışmıyor. Bu değer, yeniden başlatmada durum değişiklikleri yapılan bir modül için kullanışlıdır. Seyrek erişim süresi boyunca başarısız olan bir modül yeniden başlatmayı beklediğinde modül geri alma durumunda olur. çalışıyor Modülün şu anda çalıştığını gösterir. sağlıksız Sistem durumu yoklaması denetiminin başarısız olduğunu veya zaman aşımına uğradı olduğunu gösterir. durduruldu Modülden başarıyla çıkıldığını gösterir (sıfır çıkış koduyla). başarısız Modülden bir hata çıkış koduyla (sıfır olmayan) çıkıldığını gösterir. Modül, geçerli olan yeniden başlatma ilkesine bağlı olarak bu durumdan geri çekilmeye geçebilir. Bu durum modülün kurtarılamaz bir hatayla karşılaştığını gösterebilir. Hata, Microsoft Monitoring Agent 'ın (MMA) modülü yeniden kullanamaması ve yeni bir dağıtım gerektirmesi durumunda oluşur.
Ayrıntılar için bkz . EdgeAgent tarafından bildirilen özellikler .
IoT Edge hub modül ikizlerini izleme
Aşağıdaki JSON, Visual Studio Code'da çoğu JSON bölümünün daraltıldığı modül ikizini gösterir $edgeHub
.
{
"deviceId": "Windows109",
"moduleId": "$edgeHub",
"etag": "AAAAAAAAAAU=",
"deviceEtag": "NzgwNjA1MDU2",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Connected",
"lastActivityTime": "0001-01-01T00:00:00Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 102,
"properties": {
"desired": { "···" },
"reported": {
"schemaVersion": "1.0",
"version": { "···" },
"lastDesiredVersion": 5,
"lastDesiredStatus": { "···" },
"clients": {
"Windows109/SimulatedTemperatureSensor": {
"status": "Disconnected",
"lastConnectedTimeUtc": "2020-04-08T21:42:42.1743956Z",
"lastDisconnectedTimeUtc": "2020-04-09T07:02:42.1398325Z"
}
},
"$metadata": { "···" },
"$version": 97
}
}
}
JSON, yukarıdan başlayarak aşağıdaki bölümlerde açıklanabilir:
Meta Veriler - Bağlantı verilerini içerir.
Özellikler - ve
reported
alt bölümlerini içerirdesired
.Properties.desired - (daraltılmış olarak gösterilir) deployment.json dosyasında işleç tarafından ayarlanan beklenen özellik değerleri.
Properties.reported - IoT Edge hub'ı tarafından bildirilen en son özellik değerleri.
Aşağı akış cihazlarınızla ilgili sorunlarla karşılaşıyorsanız bu verileri incelemek iyi bir başlangıç olacaktır.
Özel modül ikizlerini izleme
Özel modüllerinizin bağlantısı hakkındaki bilgiler IoT Edge aracı modül ikizinde tutulur. Özel modülünüzün modül ikizi öncelikle çözümünüz için verileri korumak için kullanılır. deployment.json dosyanızda tanımladığınız istenen özellikler modül ikizine yansıtılır ve modülünüz bildirilen özellik değerlerini gerektiği gibi güncelleştirebilir.
Modül ikizindeki bildirilen özellik değerlerini modülünüzün uygulama koduna göre güncelleştirmek için Azure IoT Hub Cihaz SDK'larıyla tercih ettiğiniz programlama dilini kullanabilirsiniz. Aşağıdaki yordam, SimulatedTemperatureSensor modülündeki kodu kullanarak bunu yapmak için .NET için Azure SDK'sını kullanır:
CreateFromEnvironmentAysnc yöntemiyle ModuleClient örneğini oluşturun.
GetTwinAsync yöntemiyle modül ikizinin özelliklerinin bir koleksiyonunu alın.
SetDesiredPropertyUpdateCallbackAsync yöntemiyle istenen özelliklerde yapılan değişiklikleri yakalamak için bir dinleyici (geri arama geçirme) oluşturun.
Geri çağırma yönteminizde, modül ikizindeki bildirilen özellikleri UpdateReportedPropertiesAsync yöntemiyle güncelleştirin ve ayarlamak istediğiniz özellik değerlerinin TwinCollection değerini geçirin.
Modül ikizlerine erişme
Modül ikizleri için JSON'yi Azure IoT Hub'da, Visual Studio Code'da ve Azure CLI ile gözden geçirebilirsiniz.
Azure IoT Hub'da izleme
Modül ikizinin JSON'unu görüntülemek için:
Cihaz yönetimi menüsünün altında Cihazlar'ı seçin.
İzlemek istediğiniz modülleri içeren IoT Edge cihazının Cihaz Kimliği'ni seçin.
Modüller sekmesinden modül adını seçin ve ardından üst menü çubuğundan Modül Kimliği İkizi'ni seçin.
"Bu modül için modül kimliği yok" iletisini görürseniz, bu hata, kimliği ilk oluşturan arka uç çözümünün artık kullanılabilir olmadığını gösterir.
Visual Studio Code'da modül ikizlerini izleme
Modül ikizlerini gözden geçirmek ve düzenlemek için:
Henüz yüklü değilse Azure IoT Edge ve Azure IoT Hub uzantılarını yükleyin. Visual Studio Code uzantısı için Azure IoT Edge araçları bakım modundadır.
Gezgin'de Azure IoT Hub'ı genişletin ve ardından izlemek istediğiniz modülle cihazı genişletin.
Modüle sağ tıklayın ve Modül İkizini Düzenle'yi seçin. Modül ikizinin geçici bir dosyası bilgisayarınıza indirilir ve Visual Studio Code'da görüntülenir.
Değişiklik yaparsanız, IoT hub'ınızdaki değişiklikleri kaydetmek için düzenleyicideki kodun üzerindeki Modül İkizini Güncelleştir'i seçin.
Azure CLI'da modül ikizlerini izleme
IoT Edge'in çalışıp çalışmadığını görmek için az iot hub invoke-module-method komutunu kullanarak IoT Edge aracısına ping gönderin.
az iot hub module-twin yapısı şu komutları sağlar:
- az iot hub module-twin show - Modül ikizi tanımını gösterir.
- az iot hub module-twin update - Modül ikizi tanımını güncelleştirin.
- az iot hub module-twin replace - Modül ikizi tanımını hedef JSON ile değiştirin.
İpucu
Çalışma zamanı modüllerini CLI komutları ile hedeflemek için modül kimliğindeki karakterden $
kaçış yapmanız gerekebilir. Örneğin:
az iot hub module-twin show -m '$edgeAgent' -n <hub name> -d <device name>
Veya:
az iot hub module-twin show -m \$edgeAgent -n <hub name> -d <device name>
Sonraki adımlar
Yerleşik doğrudan yöntemleri kullanarak EdgeAgent ile nasıl iletişim kuracağınızı öğrenin.