Mengekspor data IoT ke blob Storage

Artikel ini menjelaskan cara mengonfigurasi ekspor data untuk mengirim data ke blob Storage service.

Gunakan fitur ini untuk terus mengekspor data IoT yang difilter dan diperkaya dari aplikasi IoT Central Anda. Ekspor data mendorong perubahan secara hampir real time ke bagian lain dari solusi cloud Anda untuk wawasan, analitik, dan penyimpanan jalur hangat.

Sebagai contoh, Anda dapat:

  • Terus ekspor telemetri, perubahan properti, konektivitas perangkat, siklus hidup perangkat, dan data siklus hidup templat perangkat dalam format JSON mendekati real time.
  • Memfilter aliran data untuk mengekspor data yang sesuai dengan kondisi kustom.
  • Perkaya aliran data dengan nilai kustom dan nilai properti dari perangkat.
  • Ubah aliran data untuk mengubah bentuk dan kontennya.

Tip

Saat Anda mengaktifkan ekspor data, Anda hanya mendapatkan data sejak saat itu dan seterusnya. Saat ini, data tidak dapat diambil saat ekspor data nonaktif. Untuk menyimpan lebih banyak data historis, aktifkan ekspor data lebih awal.

Prasyarat

Untuk menggunakan fitur ekspor data, Anda harus memiliki izin ekspor Data .

Menyiapkan tujuan ekspor Blob Storage

IoT Central mengekspor data sekali per menit, dengan setiap file berisi batch perubahan sejak ekspor sebelumnya. Data yang diekspor disimpan dalam format JSON. Jalur default ke data yang diekspor di akun penyimpanan Anda adalah:

  • Telemetri: {container}/{app-id}/{partition_id}/{YYYY}/{MM}/{dd}/{hh}/{mm}/{nama berkas}
  • Perubahan properti: {container}/{app-id}/{partition_id}/{YYYY}/{MM}/{dd}/{hh}/{mm}/{nama berkas}

Untuk menelusuri file yang diekspor di portal Azure, navigasi ke file dan pilih Edit blob.

Opsi koneksi

Tujuan Storage blob memungkinkan Anda mengonfigurasi koneksi dengan string koneksi atau identitas terkelola.

Identitas terkelola lebih aman karena:

  • Anda tidak menyimpan kredensial sumber daya dalam string koneksi di aplikasi IoT Central Anda.
  • Kredensial dikaitkan secara otomatis dengan masa pakai aplikasi IoT Central Anda.
  • Identitas terkelola memutar secara otomatis kunci keamanan mereka secara berkala.

IoT Central saat ini menggunakan identitas terkelola yang ditetapkan sistem.

Saat Anda mengonfigurasikan identitas terkelola, konfigurasi tersebut termasuk ruang lingkup dan peran:

  • Ruang lingkup mendefinisikan tempat Anda dapat menggunakan identitas terkelola. Misalnya, Anda dapat menggunakan grup sumber daya Azure sebagai ruang lingkup. Dalam hal ini, aplikasi IoT Central dan tujuan harus berada dalam grup sumber daya yang sama.
  • Peran ini mendefinisikan izin apa yang diberikan aplikasi IoT Central dalam layanan tujuan. Misalnya, pada aplikasi IoT Central untuk mengirim data ke hub peristiwa, identitas terkelola membutuhkan penugasan peran Pengirim Data Azure Event Hubs.

Video berikut ini menyediakan informasi selengkapnya tentang identitas terkelola yang ditetapkan sistem:

Artikel ini memperlihatkan cara membuat identitas terkelola di portal Microsoft Azure. Anda juga dapat menggunakan Azure CLI untuk membuat identitas terkelola. Untuk informasi selengkapnya, lihat Menetapkan akses identitas terkelola ke sumber daya menggunakan Azure CLI.


Membuat lokasi destinasi Azure Blob Storage

Jika Anda tidak memiliki akun penyimpanan Azure yang sudah ada untuk diekspor, jalankan skrip berikut di lingkungan Azure Cloud Shell bash. Skrip membuat grup sumber daya, akun Azure Storage, dan kontainer blob. Kemudian mencetak string koneksi untuk digunakan saat Anda mengonfigurasi ekspor data di IoT Central:

# 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"

Anda dapat mempelajari selengkapnya tentang membuat akun Azure Blob Storage baru atau akun penyimpanan Azure Data Lake Storage v2. Ekspor data hanya dapat menulis data ke akun penyimpanan yang mendukung blob blokir. Tabel berikut ini memperlihatkan jenis akun penyimpanan yang kompatibel yang diketahui:

Tingkat Performa Jenis Akun
Standard Tujuan Umum V2
Standard Tujuan Umum V1
Standard Penyimpanan blob
Premium Blokir penyimpanan Blob

Untuk membuat tujuan Blob Storage di IoT Central pada halaman Ekspor data:

  1. Pilih + Tujuan baru.

  2. Pilih Azure Blob Storage sebagai jenis tujuan.

  3. Pilih String koneksi sebagai jenis otorisasi.

  4. Tempelkan string koneksi untuk sumber daya Blob Storage Anda, dan masukkan nama kontainer peka huruf besar/kecil jika perlu.

  5. Pilih Simpan.

Menyiapkan ekspor data

Sekarang setelah Anda memiliki tujuan untuk mengekspor data Anda, menyiapkan ekspor data di aplikasi IoT Central Anda:

  1. Masuk ke aplikasi IoT Central Anda.

  2. Pilih Ekspor data di panel kiri.

    Tip

    Jika Anda tidak melihat Ekspor data di panel kiri, maka Anda tidak memiliki izin untuk mengonfigurasi ekspor data di aplikasi Anda. Minta administrator untuk menyiapkan ekspor data.

  3. Pilih + Ekspor baru.

  4. Masukkan nama tampilan untuk ekspor baru Anda, dan pastikan ekspor data Diaktifkan.

  5. Pilih tipe data yang akan diekspor. Tabel berikut ini mencantumkan tipe ekspor data yang didukung:

    Jenis data Deskripsi Format data
    Telemetri Ekspor pesan telemetri dari perangkat dalam waktu mendekati real time. Setiap pesan yang diekspor mengandung isi lengkap pesan dari perangkat asli, yang ternormalisasi. Format pesan telemetri
    Perubahan properti Ekspor perubahan ke properti perangkat dan cloud dalam waktu mendekati realtime. Untuk properti perangkat read-only, perubahan pada nilai yang dilaporkan diekspor. Untuk properti read-write, nilai yang dilaporkan dan diinginkan diekspor. Properti mengubah format pesan
    Konektivitas perangkat Peristiwa tersambung dan terputusnya perangkat eksport. Format pesan konektivitas perangkat
    Siklus hidup perangkat Ekspor perangkat yang terdaftar, dihapus, disediakan, diaktifkan, dinonaktifkan, displayNameChanged, dan deviceTemplateChanged events. Siklus hidup perangkat mengubah format pesan
    Siklus hidup templat perangkat Ekspor perubahan templat perangkat yang dipublikasikan termasuk dibuat, diperbarui, dan dihapus. Siklus hidup templat perangkat, mengubah format pesan
  6. Secara opsional, tambahkan filter untuk mengurangi jumlah data yang diekspor. Ada berbagai jenis filter yang tersedia untuk setiap tipe ekspor data:

    Tipe data Filter yang tersedia
    Telemetri
    • Filter menurut nama perangkat, ID perangkat, templat perangkat, dan apakah perangkat disimulasikan
    • Filter stream untuk hanya berisi telemetri yang memenuhi kondisi filter
    • Filter stream hanya untuk yang berisi telemetri dari perangkat dengan properti yang cocok dengan kondisi filter
    • Aliran filter hanya berisi telemetri yang memiliki properti pesan yang memenuhi kondisi filter. Properti pesan (juga dikenal sebagai properti aplikas) dikirim dalam kantong pasangan kunci-nilai pada setiap pesan telemetri yang secara opsional dikirim oleh perangkat yang menggunakan SDK perangkat. Untuk membuat filter properti pesan, masukkan kunci properti pesan yang Anda cari, dan tentukan kondisi. Hanya pesan telemetri dengan properti yang cocok dengan kondisi filter yang ditentukan yang diekspor. Pelajari selengkapnya tentang properti aplikasi dari dokumen IoT Hub
    Perubahan properti
    • Filter menurut nama perangkat, ID perangkat, templat perangkat, dan apakah perangkat disimulasikan
    • Filter stream untuk hanya berisi perubahan properti yang memenuhi kondisi filter
    Konektivitas perangkat
    • Filter menurut nama perangkat, ID perangkat, template perangkat, organisasi, dan jika perangkat disimulasikan
    • Filter stream untuk hanya berisi perubahan dari perangkat dengan properti yang cocok dengan kondisi filter
    Siklus hidup perangkat
    • Memfilter menurut nama perangkat, ID perangkat, templat perangkat, dan apakah perangkat telah disediakan, diaktifkan, atau disimulasikan
    • Filter stream untuk hanya berisi perubahan dari perangkat dengan properti yang cocok dengan kondisi filter
    Siklus hidup templat perangkat
    • Memfilter menurut templat perangkat
  7. Secara opsional, perkaya pesan yang diekspor dengan metadata pasangan nilai kunci tambahan. Pengayaan berikut tersedia untuk jenis ekspor data telemetri, properti, konektivitas perangkat, dan siklus hidup perangkat:

    • String kustom: Menambahkan string statis kustom ke setiap pesan. Masukkan kunci apa pun, dan masukkan nilai string apa pun.
    • Properti, yang menambahkan ke setiap pesan:
      • Metadata perangkat seperti nama perangkat, nama template perangkat, diaktifkan, organisasi, disediakan, dan disimulasikan.
      • Properti yang dilaporkan perangkat saat ini atau nilai properti awan untuk setiap pesan. Jika pesan yang diekspor berasal dari perangkat yang tidak memiliki properti yang ditentukan, pesan yang diekspor tidak mendapatkan pengayaan.

Konfigurasikan tujuan ekspor:

  1. Pilih + Tujuan untuk menambahkan tujuan yang telah Anda buat atau pilih Buat yang baru.

  2. Untuk mengubah data Anda sebelum diekspor, pilih + Transformasi. Untuk mempelajari lebih lanjut, lihat Mengubah data di dalam aplikasi IoT Central Anda untuk diekspor.

  3. Pilih + Tujuan untuk menambahkan hingga lima tujuan ke satu ekspor.

  4. Setelah selesai menyiapkan ekspor, pilih Simpan. Setelah beberapa menit, data Anda muncul di destinasi Anda.

Memantau ekspor Anda

Di IoT Central, halaman Ekspor data memungkinkan Anda memeriksa status ekspor Anda. Anda juga dapat menggunakan Azure Monitor untuk melihat jumlah data yang Anda ekspor dan kesalahan ekspor apa pun. Anda dapat mengakses metrik ekspor dan kesehatan perangkat di bagan di portal Azure, dengan REST API, atau dengan kueri di PowerShell atau Azure CLI. Saat ini, Anda dapat memantau metrik ekspor data berikut di Azure Monitor:

  • Jumlah pesan yang masuk untuk diekspor sebelum filter diterapkan.
  • Jumlah pesan yang melewati filter.
  • Jumlah pesan berhasil diekspor ke destinasi.
  • Jumlah kesalahan yang ditemukan.

Untuk mempelajari selengkapnya, lihat Memantau kesehatan aplikasi.

Format data

Bagian berikut ini menjelaskan format data yang diekspor:

Format telemetri

Setiap pesan yang diekspor berisi bentuk normal dari pesan lengkap perangkat yang dikirim dalam isi pesan. Pesan dalam format JSON dan dikodekan sebagai UTF-8. Informasi dalam setiap pesan meliputi:

  • applicationId: ID aplikasi IoT Central.
  • messageSource: Sumber untuk pesan - telemetry.
  • deviceId: ID perangkat yang mengirim pesan telemetri.
  • schema: Nama dan versi skema muatan.
  • templateId: ID templat perangkat yang ditetapkan ke perangkat.
  • enqueuedTime: Waktu di mana pesan ini diterima oleh IoT Central.
  • enrichments: Setiap pengayaan yang disiapkan pada ekspor.
  • module: Modul IoT Edge yang mengirim pesan ini. Bidang ini hanya muncul jika pesan berasal dari modul IoT Edge.
  • component: Komponen yang mengirim pesan ini. Bidang ini hanya muncul jika kemampuan yang dikirim dalam pesan dimodelkan sebagai komponen dalam templat perangkat
  • messageProperties: Properti lain yang dikirim perangkat dengan pesan. Properti ini kadang-kadang disebut sebagai properti aplikasi. Pelajari lebih lanjut dari dokumen IoT Hub.

Untuk Storage Blob, pesan di-batch dan diekspor sekali per menit.

Contoh berikut memperlihatkan pesan telemetri yang diekspor:


{
    "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"
    }
}

Properti pesan

Pesan telemetri memiliki properti untuk metadata serta payload telemetri. Cuplikan sebelumnya menunjukkan contoh pesan sistem seperti deviceId dan enqueuedTime. Untuk mempelajari selengkapnya tentang properti pesan sistem, lihat Properti Sistem pesan Hub IoT D2C.

Anda dapat menambahkan properti ke pesan telemetri jika Perlu menambahkan metadata kustom ke pesan telemetri Anda. Misalnya, Anda perlu menambahkan cap waktu saat perangkat membuat pesan.

Cuplikan kode berikut menunjukkan cara menambahkan iothub-creation-time-utc properti ke pesan saat Anda membuatnya di perangkat:

Penting

Format cap waktu ini harus UTC tanpa informasi zona waktu. Misalnya, 2021-04-21T11:30:16Z valid, 2021-04-21T11:30:16-07:00 tidak valid.

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);
}

Format perubahan properti

Setiap pesan atau rekaman mewakili satu perubahan pada perangkat atau properti cloud. Informasi dalam pesan yang diekspor meliputi:

  • applicationId: ID aplikasi IoT Central.
  • messageSource: Sumber untuk pesan - properties.
  • messageType: Antara cloudPropertyChange, devicePropertyDesiredChange, atau devicePropertyReportedChange.
  • deviceId: ID perangkat yang mengirim pesan telemetri.
  • schema: Nama dan versi skema muatan.
  • enqueuedTime: Waktu di mana perubahan ini terdeteksi oleh IoT Central.
  • templateId: ID templat perangkat yang ditetapkan ke perangkat.
  • properties: Larik properti yang berubah, termasuk nama-nama properti dan nilai-nilai yang berubah. Informasi komponen dan modul disertakan jika properti dimodelkan dalam komponen atau modul IoT Edge.
  • enrichments: Setiap pengayaan yang disiapkan pada ekspor.

Untuk Storage Blob, pesan di-batch dan diekspor sekali per menit.

Cuplikan berikut menunjukkan properti ini dalam pesan yang diekspor ke Blob Storage:

{
  "applicationId":"5782ed70-b703-4f13-bda3-1f5f0f5c678e",
  "messageSource":"telemetry",
  "deviceId":"sample-device-01",
  "schema":"default@v1",
  "templateId":"urn:modelDefinition:mkuyqxzgea:e14m1ukpn",
  "enqueuedTime":"2021-01-29T16:45:39.143Z",
  "telemetry":{
    "temperature":8.341033560421833
  },
  "messageProperties":{
    "iothub-creation-time-utc":"2021-01-29T16:45:39.021Z"
  },
  "enrichments":{}
}

Format perubahan konektivitas perangkat

Setiap pesan atau rekaman mewakili peristiwa konektivitas dari satu perangkat. Informasi dalam pesan yang diekspor meliputi:

  • applicationId: ID aplikasi IoT Central.
  • messageSource: Sumber untuk pesan - deviceConnectivity.
  • messageType: Antara connected atau disconnected.
  • deviceId: ID perangkat yang diubah.
  • schema: Nama dan versi skema muatan.
  • templateId: ID templat perangkat yang ditetapkan ke perangkat.
  • enqueuedTime: Waktu di mana perubahan ini terjadi di IoT Central.
  • enrichments: Setiap pengayaan yang disiapkan pada ekspor.

Untuk Storage Blob, pesan di-batch dan diekspor sekali per menit.

Contoh berikut menunjukkan pesan konektivitas perangkat terekspor yang diterima di Azure Blob Storage.

{
  "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"
  }
}

Format perubahan siklus hidup perangkat

Setiap pesan atau rekaman mewakili satu perubahan pada satu perangkat. Informasi dalam pesan yang diekspor meliputi:

  • applicationId: ID aplikasi IoT Central.
  • messageSource: Sumber untuk pesan - deviceLifecycle.
  • messageType: Jenis perubahan yang terjadi. Salah satu: registered, deleted, provisioned, enabled, disabled, displayNameChanged, dan deviceTemplateChanged.
  • deviceId: ID perangkat yang diubah.
  • schema: Nama dan versi skema muatan.
  • templateId: ID templat perangkat yang ditetapkan ke perangkat.
  • enqueuedTime: Waktu di mana perubahan ini terjadi di IoT Central.
  • enrichments: Setiap pengayaan yang disiapkan pada ekspor.

Untuk Storage Blob, pesan di-batch dan diekspor sekali per menit.

Contoh berikut menunjukkan pesan siklus hidup perangkat terekspor yang diterima di Azure Blob Storage.

{
  "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"
  }
}

Format perubahan siklus hidup templat perangkat

Setiap pesan atau rekaman mewakili satu perubahan pada satu templat perangkat yang diterbitkan. Informasi dalam pesan yang diekspor meliputi:

  • applicationId: ID aplikasi IoT Central.
  • messageSource: Sumber untuk pesan - deviceTemplateLifecycle.
  • messageType: Antara created, updated, atau deleted.
  • schema: Nama dan versi skema muatan.
  • templateId: ID templat perangkat yang ditetapkan ke perangkat.
  • enqueuedTime: Waktu di mana perubahan ini terjadi di IoT Central.
  • enrichments: Setiap pengayaan yang disiapkan pada ekspor.

Untuk Storage Blob, pesan di-batch dan diekspor sekali per menit.

Contoh berikut menunjukkan pesan siklus hidup perangkat terekspor yang diterima di Azure Blob Storage.

{
  "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"
  }
}

Langkah berikutnya

Sekarang setelah Anda tahu cara mengekspor ke Blob Storage, langkah selanjutnya yang disarankan adalah mempelajari Ekspor ke Bus Layanan.