IoT Edge-modulok üzembe helyezése és monitorozása nagy méretekben az Azure CLI használatával
A következőkre vonatkozik: IoT Edge 1.5
Fontos
Az IoT Edge 1.5 LTS a támogatott kiadás. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.
Azure IoT Edge-alapú automatikus üzembe helyezés létrehozása az Azure CLI használatával számos eszköz folyamatos üzembe helyezésének egyidejű kezeléséhez. Az IoT Edge automatikus üzembe helyezései az Azure IoT Hub eszközfelügyeleti funkciójának részét képezik. Az üzembe helyezés olyan dinamikus folyamatok, amelyek lehetővé teszik több modul több eszközön való üzembe helyezését, a modulok állapotának és állapotának nyomon követését, valamint szükség esetén a módosítások elvégzését.
Ebben a cikkben az Azure CLI-t és az IoT-bővítményt állítja be. Ezután megtudhatja, hogyan helyezhet üzembe modulokat az IoT Edge-eszközök egy csoportjában, és hogyan figyelheti az előrehaladást a rendelkezésre álló CLI-parancsokkal.
Előfeltételek
IoT Hub az Azure-előfizetésben.
Egy vagy több IoT Edge-eszköz.
Ha nincs beállítva IoT Edge-eszköz, létrehozhat egyet egy Azure-beli virtuális gépen. Kövesse az alábbi rövid útmutatók lépéseit: Virtuális Linux-eszköz létrehozása vagy virtuális Windows-eszköz létrehozása.
Az Azure CLI a környezetben. Az Azure CLI-verziónak 2.0.70-es vagy újabb verziónak kell lennie. A verziószámot az
az --version
paranccsal ellenőrizheti. Ez a verzió támogatja az „az” bővítményparancsokat, és ebben a verzióban került bevezetésre a Knack parancskeretrendszer.Az Azure CLI IoT-bővítménye.
Üzembehelyezési jegyzék konfigurálása
Az üzembehelyezési jegyzék egy JSON-dokumentum, amely leírja, hogy mely modulokat kell üzembe helyezni, hogyan áramlik az adatforgalom a modulok között, valamint a modul ikerpéldányainak kívánt tulajdonságait. További információ: Modulok üzembe helyezése és útvonalak létrehozása az IoT Edge-ben.
Ha modulokat szeretne üzembe helyezni az Azure CLI használatával, mentse az üzembehelyezési jegyzékfájlt helyileg .txt fájlként. A következő szakaszban található fájl elérési útját használja a parancs futtatásakor a konfiguráció eszközre való alkalmazásához.
Íme egy alapszintű üzembehelyezési jegyzék egy modullal, példaként:
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.1",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.5",
"createOptions": "{}"
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
}
}
},
"modules": {
"SimulatedTemperatureSensor": {
"version": "1.5",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.1",
"routes": {
"upstream": "FROM /messages/* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Feljegyzés
Ez a minta üzembehelyezési jegyzék az IoT Edge-ügynökhöz és -központhoz az 1.1-es sémaverziót használja. A séma 1.1-es verziója az IoT Edge 1.0.10-es verziójával együtt jelent meg. Lehetővé teszi az olyan funkciókat, mint a modul indítási sorrendje és az útvonalak rangsorolása.
Rétegzett üzembe helyezés
A rétegzett üzemelő példányok olyan automatikus üzembe helyezési típusok, amelyek egymásra halmozottak. A rétegzett üzemelő példányokról további információt az IoT Edge automatikus üzembe helyezésének ismertetése önálló eszközökhöz vagy nagy méretekben című témakörben talál.
A rétegzett üzemelő példányok az Azure CLI-vel hozhatók létre és kezelhetők, mint bármely automatikus üzembe helyezés, mindössze néhány különbséggel. A rétegzett üzembe helyezés létrehozása után az Azure CLI ugyanúgy működik a rétegzett üzemelő példányok esetében, mint bármely üzembe helyezésnél. Rétegzett üzembe helyezés létrehozásához adja hozzá a --layered
jelölőt a létrehozási parancshoz.
A második különbség az üzembehelyezési jegyzék felépítése. Míg a standard automatikus üzembe helyezésnek a felhasználói modulokon kívül tartalmaznia kell a rendszer futtatókörnyezeti moduljait, a rétegzett központi telepítések csak felhasználói modulokat tartalmazhatnak. A rétegzett üzemelő példányoknak szabványos automatikus üzembe helyezésre is szükségük van egy eszközön, hogy minden IoT Edge-eszköz szükséges összetevőit, például a rendszer futtatókörnyezeti moduljait ellássa.
Íme egy alapszintű rétegzett üzembehelyezési jegyzék egy modullal, példaként:
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired.modules.SimulatedTemperatureSensor": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.5"
}
},
"$edgeHub": {
"properties.desired.routes.upstream": "FROM /messages/* INTO $upstream"
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Feljegyzés
Ez a rétegzett üzembehelyezési jegyzék kissé eltér a szabványos üzembehelyezési jegyzéktől. A futtatókörnyezeti modulok kívánt tulajdonságai össze vannak csukva, és pont jelölést használnak. Ez a formázás szükséges ahhoz, hogy az Azure Portal felismerjen egy rétegzett üzembe helyezést. Példa:
properties.desired.modules.<module_name>
properties.desired.routes.<route_name>
Az előző példa egy modul rétegzett üzembehelyezési beállítását properties.desired
mutatta be. Ha ez a réteges üzembe helyezés egy olyan eszközt céloz meg, amelyen már alkalmazták ugyanazt a modult, felülírná a meglévő kívánt tulajdonságokat. Ha felülírás helyett frissíteni szeretné a kívánt tulajdonságokat, definiálhat egy új alszakaszt. Példa:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"SendData": true,
"SendInterval": 5
}
}
Ugyanez kifejezhető a következőkkel is:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties.SendData" : true,
"properties.desired.layeredProperties.SendInterval": 5
}
Feljegyzés
Jelenleg minden réteges üzembe helyezésnek tartalmaznia kell egy edgeAgent
érvényesnek tekinthető objektumot. Még akkor is, ha egy rétegzett üzembe helyezés csak a modul tulajdonságait frissíti, tartalmazzon egy üres objektumot. Például: "$edgeAgent":{}
Az üres edgeAgent
objektummal rendelkező rétegzett üzembe helyezés a modul ikerpéldányában edgeAgent
célzottkéntjelenik meg, nem alkalmazva.
Összefoglalva, rétegzett üzembe helyezés létrehozása:
- Adja hozzá a jelzőt
--layered
az Azure CLI létrehozási parancsához. - Ne tartalmazzon rendszermodulokat.
- Használjon teljes pont jelölést az
$edgeAgent
and$edgeHub
.
A modulok ikerpéldányainak réteges telepítésekben való konfigurálásával kapcsolatos további információkért lásd a rétegzett üzembe helyezést ismertető témakört.
Eszközök azonosítása címkék használatával
Mielőtt létrehozna egy üzembe helyezést, meg kell adnia, hogy mely eszközöket szeretné érinteni. Az Azure IoT Edge az ikereszköz címkéivel azonosítja az eszközöket.
Minden eszköz több olyan címkét is tartalmazhat, amelyet bármilyen módon definiálhat, ami logikus a megoldáshoz. Ha például intelligens épületek campusát felügyeli, az alábbi címkéket adhat hozzá egy eszközhöz:
"tags":{
"location":{
"building": "20",
"floor": "2"
},
"roomtype": "conference",
"environment": "prod"
}
Az ikereszközökről és címkékről további információt az IoT Hubban található ikereszközök ismertetése és használata című témakörben talál.
Üzembe helyezés létrehozása
A modulokat a céleszközökre úgy helyezheti üzembe, hogy létrehoz egy üzembe helyezési jegyzékből és más paraméterekből álló üzembe helyezést.
Az az iot edge deployment create paranccsal hozzon létre egy üzembe helyezést:
az iot edge deployment create --deployment-id [deployment id] --hub-name [hub name] --content [file path] --labels "[labels]" --target-condition "[target query]" --priority [int]
Használja ugyanazt a parancsot a --layered
jelölővel egy rétegzett üzembe helyezés létrehozásához.
Az üzembe helyezési parancs a következő paramétereket használja:
- --rétegzett. Választható jelző az üzembe helyezés rétegzett üzemelő példányként való azonosításához.
-
--deployment-id. Az IoT Hubban létrehozandó üzembe helyezés neve. Adjon egyedi nevet az üzembe helyezésnek, amely legfeljebb 128 kisbetűs lehet. Kerülje a szóközöket és a következő érvénytelen karaktereket:
& ^ [ ] { } \ | " < > /
. Ez a paraméter kötelező. - --tartalom. Az üzembehelyezési jegyzék JSON-fájljának elérési útja. Ez a paraméter kötelező.
-
--hub-name. Annak az IoT Hubnak a neve, amelyben az üzembe helyezés létrejön. A központnak az aktuális előfizetésben kell lennie. Módosítsa az aktuális előfizetését a
az account set -s [subscription name]
parancs használatával. -
--labels. Név-érték párok, amelyek leírják és nyomon követik az üzemelő példányokat. A címkék JSON-formázást használnak a nevekhez és értékekhez. Például:
{"HostPlatform":"Linux", "Version:"3.0.1"}
-
--célfeltétel. Az a feltétel, amely meghatározza, hogy az üzembe helyezés mely eszközöket célozza meg. A feltétel az ikereszköz-címkéken vagy az ikereszköz jelentett tulajdonságain alapul, és meg kell egyeznie a kifejezés formátumával. Például:
tags.environment='test' and properties.reported.devicemodel='4000x'
Ha a célfeltétel nincs megadva, akkor az üzembe helyezés egyetlen eszközre sem lesz alkalmazva. - --priority. Pozitív egész szám. Ha ugyanazon az eszközön két vagy több üzembe helyezés van megcélzva, a legmagasabb numerikus értékkel rendelkező üzembe helyezés lesz érvényben.
-
--metrikák. Metrikák, amelyek lekérdezik a
edgeHub
jelentett tulajdonságokat az üzemelő példány állapotának nyomon követéséhez. A metrikák JSON-bemenetet vagy fájlelérési utat vesznek igénybe. Például:'{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'
Ha az Azure CLI használatával szeretne monitorozni egy üzembe helyezést, tekintse meg az IoT Edge-környezetek monitorozását.
Feljegyzés
Új IoT Edge-telepítés létrehozásakor néha akár 5 percet is igénybe vehet, amíg az IoT Hub feldolgozzák az új konfigurációt, és propagálja az új kívánt tulajdonságokat a megcélzott eszközökre.
Központi telepítés módosítása
Az üzembe helyezés módosításakor a módosítások azonnal replikálódnak az összes megcélzott eszközre.
Ha frissíti a célfeltételt, a következő frissítések történnek:
- Ha egy eszköz nem felel meg a régi célfeltételnek, de megfelel az új célfeltételnek, és ez az üzembe helyezés az adott eszköz legmagasabb prioritása, akkor a rendszer ezt az üzembe helyezést alkalmazza az eszközre.
- Ha egy jelenleg az üzemelő példányt futtató eszköz már nem felel meg a célfeltételnek, eltávolítja ezt az üzembe helyezést, és a következő legmagasabb prioritású üzembe helyezést veszi igénybe.
- Ha egy jelenleg az üzemelő példányt futtató eszköz már nem felel meg a célfeltételnek, és nem felel meg a többi központi telepítés célfeltételének, akkor az eszközön nem történik változás. Az eszköz továbbra is a jelenlegi állapotában futtatja az aktuális moduljait, de az üzembe helyezés részeként már nem kezelik. Miután az eszköz megfelel bármely más üzembe helyezés célfeltételének, eltávolítja ezt az üzembe helyezést, és felveszi az újat.
Nem frissítheti az üzembe helyezés tartalmát, amely tartalmazza az üzembe helyezési jegyzékben meghatározott modulokat és útvonalakat. Ha frissíteni szeretné az üzembe helyezés tartalmát, hozzon létre egy új üzembe helyezést, amely ugyanazokat az eszközöket célozza meg magasabb prioritással. Egy meglévő modul bizonyos tulajdonságait módosíthatja, beleértve a célfeltételt, a címkéket, a metrikákat és a prioritást.
Az az iot edge deployment update paranccsal frissítheti az üzemelő példányt:
az iot edge deployment update --deployment-id [deployment id] --hub-name [hub name] --set [property1.property2='value']
Az üzembehelyezési frissítési parancs a következő paramétereket használja:
- --deployment-id. Az IoT Hubban található üzembe helyezés neve.
-
--hub-name. Annak az IoT Hubnak a neve, amelyben az üzembe helyezés létezik. A központnak az aktuális előfizetésben kell lennie. Váltson a kívánt előfizetésre a parancs használatával
az account set -s [subscription name]
. -
--set. Frissítsen egy tulajdonságot az üzembe helyezés során. A következő tulajdonságokat frissítheti:
-
targetCondition
(például:targetCondition=tags.location.state='Oregon'
) labels
priority
-
- --add. Adjon hozzá egy új tulajdonságot az üzembe helyezéshez, beleértve a célfeltételeket vagy címkéket.
- --remove. Meglévő tulajdonság eltávolítása, beleértve a célfeltételeket vagy címkéket.
Üzembe helyezés törlése
Az üzembe helyezés törlésekor minden eszköz a következő legmagasabb prioritású üzembe helyezést veszi igénybe. Ha az eszközök nem felelnek meg a többi üzembe helyezés célfeltételének, a modulok nem törlődnek az üzembe helyezés törlésekor.
Az az iot edge deployment delete paranccsal törölhet egy üzembe helyezést:
az iot edge deployment delete --deployment-id [deployment id] --hub-name [hub name]
A deployment delete
parancs a következő paramétereket használja:
- --deployment-id. Az IoT Hubban található üzembe helyezés neve.
-
--hub-name. Annak az IoT Hubnak a neve, amelyben az üzembe helyezés létezik. A központnak az aktuális előfizetésben kell lennie. Váltson a kívánt előfizetésre a parancs használatával
az account set -s [subscription name]
.
Következő lépések
További információ a modulok IoT Edge-eszközökön való üzembe helyezéséről.