IoT-adatok exportálása Blob Storage-ba

Ez a cikk azt ismerteti, hogyan konfigurálhatja az adatexportálást úgy, hogy adatokat küldjön a Blob Storage szolgáltatásnak.

Ezzel a funkcióval folyamatosan exportálhat szűrt és bővített IoT-adatokat az IoT Central-alkalmazásból. Az adatexportálás közel valós időben küldi el a változásokat a felhőalapú megoldás más részeire a melegúti elemzések, elemzések és tárolás érdekében.

Lehetőség van például a következőkre:

  • A telemetriai adatok, a tulajdonságváltozások, az eszközkapcsolatok, az eszköz életciklusa, az eszközsablonok életciklusa és a naplóadatok JSON formátumban történő folyamatos exportálása közel valós időben.
  • Szűrje az adatfolyamokat az egyéni feltételeknek megfelelő adatok exportálására.
  • Az adatfolyamok bővítése az eszközről származó egyéni értékekkel és tulajdonságértékekkel.
  • Alakítsa át az adatfolyamokat az alakzat és a tartalom módosításához.

Tipp.

Amikor bekapcsolja az adatexportálást, attól a pillanattól kezdve csak az adatokat kapja meg. Az adatok jelenleg nem kérhetők le arra az időre, amikor az adatexportálás ki volt kapcsolva. Az előzményadatok megőrzéséhez kapcsolja be az adatexportálást korán.

Feljegyzés

Bizonyos körülmények között akár 60 másodpercet is igénybe vehet az üzenetek exportálása. Ez az idő attól számítható ki, hogy az IoT Central mikor kapja meg az üzenetet a mögöttes IoT Hubtól a célvégpontra való kézbesítés időpontjáig.

Előfeltételek

Az adatexportálási funkciók használatához adatexportálási engedéllyel kell rendelkeznie.

Az adatexportálás IoT Central REST API-val történő kezeléséről az IoT Central REST API használata az adatexportok kezeléséhez című témakörben olvashat .

Blob Storage-exportálási célhely beállítása

Az IoT Central percenként egyszer exportálja az adatokat, és minden fájl tartalmazza az előző exportálás óta végrehajtott módosítások kötegét. Az exportált adatok JSON formátumban vannak mentve. A tárfiókban exportált adatok alapértelmezett elérési útjai a következők:

  • Telemetria: {container}/{app-id}/{partition_id}/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}
  • Tulajdonságváltozások: {container}/{app-id}/{partition_id}/{YYYY}/{MM}/{dd}/{hh}/{mm}/{filename}

Az exportált fájlok az Azure Portalon való tallózásához keresse meg a fájlt, és válassza a Blob szerkesztése lehetőséget.

Csatlakozás ion beállításai

A Blob Storage-célhelyek lehetővé teszik a kapcsolat konfigurálását egy kapcsolati sztring vagy egy felügyelt identitással.

Tipp.

Ha a Blob Storage-célhelyet tűzfal védi, a csatlakozáshoz felügyelt identitást kell használnia.

A felügyelt identitások biztonságosabbak, mert:

  • Nem tárolja az erőforrás hitelesítő adatait egy kapcsolati sztring az IoT Central-alkalmazásban.
  • A hitelesítő adatok automatikusan az IoT Central-alkalmazás élettartamához vannak kötve.
  • A felügyelt identitások rendszeresen automatikusan elforgatják a biztonsági kulcsokat.

Az IoT Central jelenleg rendszer által hozzárendelt felügyelt identitásokat használ.

Felügyelt identitás konfigurálásakor a konfiguráció hatókört és szerepkört tartalmaz:

  • A hatókör határozza meg, hogy hol használhatja a felügyelt identitást. Használhat például egy Azure-erőforráscsoportot hatókörként. Ebben az esetben az IoT Central-alkalmazásnak és a célnak ugyanabban az erőforráscsoportban kell lennie.
  • A szerepkör határozza meg, hogy az IoT Central-alkalmazás milyen engedélyeket kap a célszolgáltatásban. Például ahhoz, hogy egy IoT Central-alkalmazás adatokat küldjön egy eseményközpontba, a felügyelt identitásnak szüksége van az Azure Event Hubs Adatküldő szerepkör-hozzárendelésére.

Az alábbi videó további információt nyújt a rendszer által hozzárendelt felügyelt identitásokról:

Figyelem

A Blob Storage-ba való exportáláshoz ne használja a tárfiók-közreműködőt a videóban látható módon. Használja inkább a Storage Blob Data Közreműködő szerepkört.

Azure Blob Storage-célhely létrehozása

Ha nem rendelkezik meglévő Azure Storage-fiókkal, futtassa a következő szkriptet az Azure Cloud Shell bash-környezetben. A szkript létrehoz egy erőforráscsoportot, egy Azure Storage-fiókot és egy blobtárolót. Ezután kinyomtatja a kapcsolati sztring, amelyet az IoT Centralban való adatexportálás konfigurálásakor használ:

# Replace the storage account name with your own unique value
SA=yourstorageaccount$RANDOM
CN=exportdata
RG=centralexportresources
LOCATION=eastus

az group create -n $RG --location $LOCATION
az storage account create --name $SA --resource-group $RG --location $LOCATION --sku Standard_LRS
az storage container create --account-name $SA --resource-group $RG --name $CN

CS=$(az storage account show-connection-string --resource-group $RG --name $SA --query "connectionString" --output tsv)

echo "Storage connection string: $CS"

További információ az új Azure Blob Storage-fiókok vagy az Azure Data Lake Storage v2-tárfiókok létrehozásáról. Az adatexportálás csak olyan tárfiókokba tud adatokat írni, amelyek támogatják a blokkblobokat. Az alábbi táblázat az ismert kompatibilis tárfióktípusokat mutatja be:

Teljesítményszint Fiók típusa
Standard Általános célú V2
Standard Általános célú V1
Standard Blob Storage
Prémium Blobtároló letiltása

A Blob Storage célhelyének létrehozása az IoT Centralban az Adatexportálási oldalon:

  1. Válassza az + Új cél lehetőséget.

  2. Válassza ki az Azure Blob Storage-t céltípusként.

  3. Engedélyezési típusként válassza a Csatlakozás ion sztringet.

  4. Illessze be a Blob Storage-erőforrás kapcsolati sztring, és szükség esetén adja meg a kis- és nagybetűkre érzékeny tároló nevét.

  5. Válassza a Mentés lehetőséget.

Adatexportálás beállítása

Most, hogy már van egy célhely az adatok exportálásához, állítsa be az adatexportálást az IoT Central-alkalmazásban:

  1. Jelentkezzen be az IoT Central-alkalmazásba.

  2. A bal oldali panelen válassza az Adatexportálás lehetőséget.

    Tipp.

    Ha nem látja az adatexportálást a bal oldali panelen, akkor nincs engedélye az adatok exportálásának konfigurálására az alkalmazásban. Az adatexportálás beállításához forduljon egy rendszergazdához.

  3. Válassza az + Új exportálás lehetőséget.

  4. Adja meg az új exportálás megjelenítendő nevét, és győződjön meg arról, hogy az adatexportálás engedélyezve van.

  5. Válassza ki az exportálni kívánt adatok típusát. Az alábbi táblázat a támogatott adatexportálási típusokat sorolja fel:

    Adattípus Leírás Adatformátum
    Telemetria Telemetriaüzenetek exportálása közel valós időben az eszközökről. Minden exportált üzenet tartalmazza az eredeti, normalizált eszközüzenet teljes tartalmát. Telemetriai üzenet formátuma
    Tulajdonságváltozások Az eszköz- és felhőtulajdonságok változásainak exportálása közel valós időben. Írásvédett eszköztulajdonságok esetén a rendszer exportálja a jelentett értékek módosításait. Az olvasási-írási tulajdonságok esetében a jelentett és a kívánt értékek is exportálva lesznek. Tulajdonságmódosítás üzenetformátuma
    Eszközkapcsolatok Csatlakoztatott és leválasztott események exportálása. Eszközkapcsolati üzenet formátuma
    Az eszközök életciklusa Exportálja a regisztrált, törölt, kiépített, engedélyezett, letiltott, displayNameChanged és deviceTemplateChanged eseményeket. Az eszköz életciklusának változásai üzenetformátuma
    Eszközsablon életciklusa Exportálja a közzétett eszközsablon módosításait, beleértve a létrehozott, frissített és törölt módosításokat. Az eszközsablon életciklusa módosítja az üzenet formátumát
    Naplók Az alkalmazás entitásainak felhasználó által kezdeményezett frissítéseinek naplói. További információ: Naplók használata az IoT Central-alkalmazásban végzett tevékenységek nyomon követéséhez Naplóüzenet formátuma
  6. Szükség esetén szűrőket is hozzáadhat az exportált adatok mennyiségének csökkentéséhez. Az egyes adatexportálási típusokhoz különböző szűrőtípusok érhetők el:

    Adatok típusa Elérhető szűrők
    Telemetria
    • Szűrés eszköznév, eszközazonosító, eszközsablon alapján, és ha az eszköz szimulálva van
    • A stream szűrése csak olyan telemetriát tartalmaz, amely megfelel a szűrési feltételeknek
    • Stream szűrése a szűrőfeltételeknek megfelelő tulajdonságokkal rendelkező eszközök telemetriai adatainak szűréséhez
    • A stream szűrése csak olyan telemetriát tartalmaz, amelynek üzenettulajdonságai megfelelnek a szűrőfeltételnek. Az üzenettulajdonságok (más néven alkalmazástulajdonságok) minden telemetriai üzenetben kulcs-érték párokban jelennek meg. Üzenettulajdonság-szűrő létrehozásához írja be a keresett üzenettulajdonság-kulcsot, és adjon meg egy feltételt. Csak a megadott szűrőfeltételnek megfelelő tulajdonságokkal rendelkező telemetriai üzenetek lesznek exportálva. További információ az IoT Hub-dokumentumok alkalmazástulajdonságairól
    Tulajdonságváltozások
    • Szűrés eszköznév, eszközazonosító, eszközsablon alapján, és ha az eszköz szimulálva van
    • A stream szűrése csak a szűrési feltételeknek megfelelő tulajdonságmódosításokat tartalmazza
    Eszközkapcsolatok
    • Szűrés eszköznév, eszközazonosító, eszközsablon, szervezetek és az eszköz szimulálása alapján
    • A stream szűrése, hogy csak a szűrőfeltételeknek megfelelő tulajdonságokkal rendelkező eszközök módosításait tartalmazza
    Az eszközök életciklusa
    • Szűrés eszköznév, eszközazonosító, eszközsablon alapján, és ha az eszköz ki van építve, engedélyezve vagy szimulálva
    • A stream szűrése, hogy csak a szűrőfeltételeknek megfelelő tulajdonságokkal rendelkező eszközök módosításait tartalmazza
    Eszközsablon életciklusa
    • Szűrés eszközsablon alapján
    Naplók n/a
  7. Igény szerint bővítse az exportált üzeneteket további kulcs-érték pár metaadatokkal. A telemetria, a tulajdonságváltozások, az eszközkapcsolatok és az eszköz életciklusának adatexportálási típusaihoz a következő bővítések érhetők el:

    • Egyéni sztring: Minden üzenethez hozzáad egy egyéni statikus sztringet. Adjon meg bármilyen kulcsot, és adjon meg bármilyen sztringértéket.
    • Tulajdonság, amely hozzáadja az egyes üzeneteket:
      • Eszköz metaadatai, például eszköznév, eszközsablon neve, engedélyezve, szervezetek, kiépített és szimulált.
      • Az eszköz aktuálisan jelentett tulajdonsága vagy felhőtulajdonság-értéke minden üzenethez. Ha az exportált üzenet olyan eszközről származik, amely nem rendelkezik a megadott tulajdonságokkal, az exportált üzenet nem kapja meg a bővítést.

Az exportálási cél konfigurálása:

  1. Válassza a + Cél lehetőséget egy már létrehozott célhely hozzáadásához, vagy válassza az Új létrehozása lehetőséget.

  2. Az adatok exportálás előtti átalakításához válassza az + Átalakítás lehetőséget. További információ: Adatok átalakítása az IoT Central-alkalmazásban exportáláshoz.

  3. A + Cél lehetőséget választva legfeljebb öt célhelyet adhat hozzá egyetlen exportáláshoz.

  4. Amikor befejezte az exportálás beállítását, válassza a Mentés lehetőséget. Néhány perc elteltével az adatok megjelennek a célhelyeken.

Az exportálás figyelése

Az IoT Central Adatexportálási lapján ellenőrizheti az exportálások állapotát. Az Azure Monitor használatával azt is megtekintheti, hogy mennyi adatot exportál, és milyen exportálási hibákat tapasztal. Az exportálási és az eszközállapot-metrikákat az Azure Portal diagramjaiban a REST API, a PowerShell-lekérdezések vagy az Azure CLI használatával érheti el. Jelenleg a következő adatexportálási metrikákat figyelheti az Azure Monitorban:

  • Az exportálandó üzenetek száma a szűrők alkalmazása előtt.
  • A szűrőkön áthaladó üzenetek száma.
  • A célhelyekre sikeresen exportált üzenetek száma.
  • A talált hibák száma.

További információ: Alkalmazás állapotának figyelése.

Adatformátumok

Az alábbi szakaszok az exportált adatok formátumát ismertetik:

Telemetriai formátum

Minden exportált üzenet az eszköz által az üzenet törzsében küldött teljes üzenet normalizált formáját tartalmazza. Az üzenet JSON formátumban van, és UTF-8 formátumban van kódolva. Az egyes üzenetek információi a következők:

  • applicationId: Az IoT Central-alkalmazás azonosítója.
  • messageSource: Az üzenet forrása – telemetry.
  • deviceId: A telemetriai üzenetet küldő eszköz azonosítója.
  • schema: A hasznos adatséma neve és verziója.
  • templateId: Az eszközhöz rendelt eszközsablon azonosítója.
  • enqueuedTime: Az az időpont, amikor az IoT Central megkapta ezt az üzenetet.
  • enrichments: Az exportáláson beállított összes bővítés.
  • module: Az üzenetet küldő IoT Edge-modul. Ez a mező csak akkor jelenik meg, ha az üzenet egy IoT Edge-modulból származik.
  • component: Az üzenetet küldő összetevő. Ez a mező csak akkor jelenik meg, ha az üzenetben küldött képességeket az eszközsablon összetevőjeként modellezték
  • messageProperties: Egyéb tulajdonságok, amelyeket az eszköz küldött az üzenettel. Ezeket a tulajdonságokat néha alkalmazástulajdonságoknak is nevezik. További információ az IoT Hub-dokumentumokból.

A Blob Storage esetében az üzenetek kötegelve vannak, és percenként egyszer exportálódnak.

Az alábbi példa egy exportált telemetriai üzenetet mutat be:


{
    "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
    "messageSource": "telemetry",
    "deviceId": "1vzb5ghlsg1",
    "schema": "default@v1",
    "templateId": "urn:qugj6vbw5:___qbj_27r",
    "enqueuedTime": "2020-08-05T22:26:55.455Z",
    "telemetry": {
        "Activity": "running",
        "BloodPressure": {
            "Diastolic": 7,
            "Systolic": 71
        },
        "BodyTemperature": 98.73447010562934,
        "HeartRate": 88,
        "HeartRateVariability": 17,
        "RespiratoryRate": 13
    },
    "enrichments": {
      "userSpecifiedKey": "sampleValue"
    },
    "module": "VitalsModule",
    "component": "DeviceComponent",
    "messageProperties": {
      "messageProp": "value"
    }
}

Üzenet tulajdonságai

A telemetriai üzenetek a metaadatokhoz és a telemetriai hasznos adatokhoz is rendelkeznek tulajdonságokkal. Az előző kódrészlet példákat mutat be a rendszerüzenetekre, például deviceId és enqueuedTime. A rendszerüzenetek tulajdonságaival kapcsolatos további információkért lásd a D2C IoT Hub-üzenetek rendszertulajdonságait.

Ha egyéni metaadatokat szeretne hozzáadni a telemetriai üzenetekhez, tulajdonságokat adhat hozzá a telemetriai üzenetekhez. Ha például az eszköz létrehozza az üzenetet, időbélyeget kell hozzáadnia.

Az alábbi kódrészlet bemutatja, hogyan adhatja hozzá a iothub-creation-time-utc tulajdonságot az üzenethez, amikor létrehozza az eszközön:

Fontos

Az időbélyeg formátumának utc-nek kell lennie, és nincs időzónára vonatkozó információ. Például 2021-04-21T11:30:16Z érvényes, 2021-04-21T11:30:16-07:00 érvénytelen.

async function sendTelemetry(deviceClient, index) {
  console.log('Sending telemetry message %d...', index);
  const msg = new Message(
    JSON.stringify(
      deviceTemperatureSensor.updateSensor().getCurrentTemperatureObject()
    )
  );
  msg.properties.add("iothub-creation-time-utc", new Date().toISOString());
  msg.contentType = 'application/json';
  msg.contentEncoding = 'utf-8';
  await deviceClient.sendEvent(msg);
}

Tulajdonságmódosítások formátuma

Minden üzenet vagy rekord az eszköz- és felhőtulajdonságok változásait jelöli. Az exportált üzenet tartalma:

  • applicationId: Az IoT Central-alkalmazás azonosítója.
  • messageSource: Az üzenet forrása – properties.
  • messageType: Vagy cloudPropertyChange, devicePropertyDesiredChangevagy devicePropertyReportedChange.
  • deviceId: A telemetriai üzenetet küldő eszköz azonosítója.
  • schema: A hasznos adatséma neve és verziója.
  • enqueuedTime: Az az időpont, amikor az IoT Central észlelte ezt a változást.
  • templateId: Az eszközhöz rendelt eszközsablon azonosítója.
  • properties: Megváltozott tulajdonságok tömbje, beleértve a módosított tulajdonságok és értékek nevét. Az összetevő és a modul adatai akkor jelennek meg, ha a tulajdonság egy összetevőben vagy egy IoT Edge-modulban van modellelve.
  • enrichments: Az exportáláson beállított összes bővítés.

A Blob Storage esetében az üzenetek kötegelve vannak, és percenként egyszer exportálódnak.

Az alábbi kódrészlet egy Blob Storage-ba exportált tulajdonságmódosítási üzenetet jelenít meg:

{
    "applicationId": "fb74969c-8682-4708-af01-33499a7f7d98",
    "messageSource": "properties",
    "deviceId": "Pepjmh1Hcc",
    "enqueuedTime": "2023-03-02T10:35:39.281Z",
    "enrichments": {},
    "messageType": "devicePropertyReportedChange",
    "schema": "default@v1",
    "templateId": "dtmi:azureiot:ddzig4ascxz",
    "properties": [
        {
            "component": "device_info",
            "name": "swVersion",
            "value": "12"
        },
        {
            "component": "device_info",
            "name": "osName",
            "value": "Android"
        },
        {
            "component": "device_info",
            "name": "processorArchitecture",
            "value": "arm64-v8a"
        },
        {
            "component": "device_info",
            "name": "processorManufacturer",
            "value": "unknown"
        }
    ]
}

Eszközkapcsolat-módosítások formátuma

Minden üzenet vagy rekord egyetlen eszköz kapcsolati eseményét jelöli. Az exportált üzenet tartalma:

  • applicationId: Az IoT Central-alkalmazás azonosítója.
  • messageSource: Az üzenet forrása – deviceConnectivity.
  • messageType: Vagy connected .disconnected
  • deviceId: A módosított eszköz azonosítója.
  • schema: A hasznos adatséma neve és verziója.
  • templateId: Az eszközhöz rendelt eszközsablon azonosítója.
  • enqueuedTime: A változás időpontja az IoT Centralban.
  • enrichments: Az exportáláson beállított összes bővítés.

A Blob Storage esetében az üzenetek kötegelve vannak, és percenként egyszer exportálódnak.

Az alábbi példa egy exportált eszközkapcsolati üzenetet mutat be, amely az Azure Blob Storage-ban érkezett.

{
  "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
  "messageSource": "deviceConnectivity",
  "messageType": "connected",
  "deviceId": "1vzb5ghlsg1",
  "schema": "default@v1",
  "templateId": "urn:qugj6vbw5:___qbj_27r",
  "enqueuedTime": "2021-04-05T22:26:55.455Z",
  "enrichments": {
    "userSpecifiedKey": "sampleValue"
  }
}

Az eszköz életciklusának változásai formátuma

Minden üzenet vagy rekord egyetlen eszközre történő módosítást jelöl. Az exportált üzenet tartalma:

  • applicationId: Az IoT Central-alkalmazás azonosítója.
  • messageSource: Az üzenet forrása – deviceLifecycle.
  • messageType: A bekövetkezett változás típusa. Az alábbiak egyike: registered, deleted, provisioned, enabled, disabled, displayNameChangedés deviceTemplateChanged.
  • deviceId: A módosított eszköz azonosítója.
  • schema: A hasznos adatséma neve és verziója.
  • templateId: Az eszközhöz rendelt eszközsablon azonosítója.
  • enqueuedTime: A változás időpontja az IoT Centralban.
  • enrichments: Az exportáláson beállított összes bővítés.

A Blob Storage esetében az üzenetek kötegelve vannak, és percenként egyszer exportálódnak.

Az alábbi példa az Azure Blob Storage-ban fogadott exportált eszközéletciklus-üzenetet mutatja be.

{
  "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
  "messageSource": "deviceLifecycle",
  "messageType": "registered",
  "deviceId": "1vzb5ghlsg1",
  "schema": "default@v1",
  "templateId": "urn:qugj6vbw5:___qbj_27r",
  "enqueuedTime": "2021-01-01T22:26:55.455Z",
  "enrichments": {
    "userSpecifiedKey": "sampleValue"
  }
}

Az eszközsablon életciklusának változásainak formátuma

Minden üzenet vagy rekord egyetlen közzétett eszközsablonra való módosítást jelöl. Az exportált üzenet tartalma:

  • applicationId: Az IoT Central-alkalmazás azonosítója.
  • messageSource: Az üzenet forrása – deviceTemplateLifecycle.
  • messageType: Vagy created, updatedvagy deleted.
  • schema: A hasznos adatséma neve és verziója.
  • templateId: Az eszközhöz rendelt eszközsablon azonosítója.
  • enqueuedTime: A változás időpontja az IoT Centralban.
  • enrichments: Az exportáláson beállított összes bővítés.

A Blob Storage esetében az üzenetek kötegelve vannak, és percenként egyszer exportálódnak.

Az alábbi példa az Azure Blob Storage-ban fogadott exportált eszközéletciklus-üzenetet mutatja be.

{
  "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
  "messageSource": "deviceTemplateLifecycle",
  "messageType": "created",
  "schema": "default@v1",
  "templateId": "urn:qugj6vbw5:___qbj_27r",
  "enqueuedTime": "2021-01-01T22:26:55.455Z",
  "enrichments": {
    "userSpecifiedKey": "sampleValue"
  }
}

Auditnapló formátuma

Minden auditnapló-üzenet egy felhasználó által kezdeményezett módosítást jelöl az IoT Central-alkalmazáson belül egy naplózható entitáson. Az exportált üzenet tartalma:

  • actor: Az entitást módosító felhasználó adatai.
  • applicationId: Az IoT Central-alkalmazás azonosítója.
  • messageSource: Az üzenet forrása – audit.
  • messageType: A bekövetkezett változás típusa. Az egyik: updated, created, deleted.
  • updated: Csak akkor jelen van, ha messageType van updated. További részleteket tartalmaz a frissítésről.
  • resource: A módosított entitás részletei.
  • schema: A hasznos adatséma neve és verziója.
  • deviceId: A módosított eszköz azonosítója.
  • enqueuedTime: A változás időpontja az IoT Centralban.
  • enrichments: Az exportáláson beállított összes bővítés.

Az alábbi példa egy exportált naplóüzenetet mutat be, amely az Azure Blob Storage-ban érkezett:

{
  "actor": {
    "id": "test-audit",
    "type": "apiToken"
    },
  "applicationId": "570c2d7b-1111-2222-abcd-000000000000",
  "enqueuedTime": "2022-07-25T21:54:40.000Z",
  "enrichments": {},
  "messageSource": "audit",
  "messageType": "created",
  "resource": {
    "displayName": "Sensor 1",
    "id": "sensor",
    "type": "device"    
  },
  "schema": "default@v1"
}

Következő lépések

Most, hogy már tudja, hogyan exportálhat a Blob Storage-ba, a következő javasolt lépés az exportálás a Service Busba elsajátítása.