Mengekspor data IoT ke Blob Storage

Artikel ini menjelaskan cara mengonfigurasi ekspor data untuk mengirim data ke layanan Blob Storage.

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.

Misalnya, Anda dapat:

  • Terus mengekspor telemetri, perubahan properti, konektivitas perangkat, siklus hidup perangkat, siklus hidup templat perangkat, dan data log audit 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 memodifikasi bentuk dan kontennya.

Tip

Saat Anda mengaktifkan ekspor data, Anda hanya mendapatkan data sejak saat itu dan seterusnya. Untuk menyimpan lebih banyak data historis, aktifkan ekspor data lebih awal. Untuk mengekspor data secara manual dari waktu saat ekspor data dinonaktifkan, lihat Cara menggunakan REST API IoT Central untuk mengkueri perangkat.

Catatan

Dalam beberapa keadaan, dibutuhkan waktu hingga 60 detik agar pesan diekspor. Kali ini diukur dari ketika IoT Central menerima pesan dari hub IoT yang mendasar hingga kapan pesan dikirimkan ke titik akhir tujuan.

Prasyarat

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

Untuk mempelajari cara mengelola ekspor data dengan menggunakan REST API IoT Central, lihat Cara menggunakan REST API IoT Central untuk mengelola 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 Blob Storage memungkinkan Anda mengonfigurasi koneksi dengan string koneksi atau identitas terkelola.

Tip

Jika tujuan Blob Storage dilindungi oleh firewall, Anda harus menggunakan identitas terkelola untuk menyambungkannya.

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:

Perhatian

Untuk mengekspor ke penyimpanan blob, jangan gunakan Kontributor Akun Penyimpanan seperti yang ditunjukkan dalam video. Gunakan peran Kontributor Data Blob Penyimpanan sebagai gantinya.

Membuat lokasi destinasi Azure Blob Storage

Artikel ini memperlihatkan cara membuat identitas terkelola menggunakan Azure CLI. Anda juga dapat menggunakan portal Azure untuk membuat identitas yang di-manged.

Jika Anda tidak memiliki akun penyimpanan Azure yang sudah ada untuk diekspor, jalankan skrip berikut di lingkungan bash Azure Cloud Shell. Skrip membuat grup sumber daya, akun Azure Storage, dan kontainer blob. Skrip kemudian mengaktifkan identitas terkelola untuk aplikasi IoT Central Anda dan menetapkan peran yang diperlukan untuk mengakses akun penyimpanan Anda:

# Replace the storage account name with your own unique value.
SA=yourstorageaccount$RANDOM

# Replace the IoT Central app name with the name of your
# IoT Central application.
CA=your-iot-central-app

CN=exportdata
RG=centralexportresources
LOCATION=eastus

az group create -n $RG --location $LOCATION
SAID=$(az storage account create --name $SA --resource-group $RG --location $LOCATION --sku Standard_LRS --query "id" --output tsv)
az storage container create --account-name $SA --resource-group $RG --name $CN

# This assumes your IoT Central application is in the 
# default `IOTC` resource group.
az iot central app identity assign --name $CA --resource-group IOTC --system-assigned
PI=$(az iot central app identity show --name $CA --resource-group IOTC --query "principalId" --output tsv)

az role assignment create --assignee $PI --role "Storage Blob Data Contributor" --scope $SAID

az role assignment list --assignee $PI --all -o table

echo "Endpoint URI: https://$SA.blob.core.windows.net/"
echo "Container: $CN"

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 diketahui kompatibel:

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

Untuk lebih mengamankan kontainer blob Anda dan hanya mengizinkan akses dari layanan tepercaya dengan identitas terkelola, lihat Mengekspor data ke tujuan aman di Azure Virtual Network.

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 Identitas terkelola yang ditetapkan sistem sebagai jenis otorisasi.

  4. Masukkan URI titik akhir untuk akun penyimpanan Anda dan nama kontainer peka huruf besar/kecil. Sebuah titik akhir URI terlihat seperti: https://contosowaste.blob.core.windows.net.

  5. Pilih Simpan.

Jika Anda tidak melihat data yang tiba di layanan tujuan Anda, lihat Memecahkan masalah dengan ekspor data dari aplikasi Azure IoT Central Anda.

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
    Log audit Log pembaruan yang dimulai pengguna untuk entitas dalam aplikasi. Untuk mempelajari lebih lanjut, lihat Menggunakan log audit untuk melacak aktivitas di aplikasi IoT Central Anda Format pesan log audit
  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 aplikasi) dikirim dalam sekantong pasangan kunci-nilai pada setiap pesan telemetri. 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
    Log audit T/A
  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 dalam bagan di portal Azure dengan menggunakan, REST API, 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 lebih lanjut, 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 IoT Central menerima pesan ini.
  • 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 Blob Storage, 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 tanda 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 {i>cloud

  • 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 IoT Central mendeteksi perubahan ini.
  • 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 Blob Storage, pesan di-batch dan diekspor sekali per menit.

Cuplikan berikut menunjukkan pesan perubahan properti yang diekspor ke Blob Storage:

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

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 Blob Storage, 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 Blob Storage, 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 Blob Storage, 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"
  }
}

Format log audit

Setiap pesan log audit mewakili perubahan yang dimulai pengguna ke entitas yang dapat diaudit di dalam aplikasi IoT Central. Informasi dalam pesan yang diekspor meliputi:

  • actor: Informasi tentang pengguna yang memodifikasi entitas.
  • applicationId: ID aplikasi IoT Central.
  • messageSource: Sumber untuk pesan - audit.
  • messageType: Jenis perubahan yang terjadi. Salah satu dari: updated, created, deleted.
  • updated: Hanya ada jika messageType adalah updated. Memberikan detail selengkapnya tentang pembaruan.
  • resource: Detail entitas yang dimodifikasi.
  • schema: Nama dan versi skema muatan.
  • deviceId: ID perangkat yang diubah.
  • enqueuedTime: Waktu di mana perubahan ini terjadi di IoT Central.
  • enrichments: Setiap pengayaan yang disiapkan pada ekspor.

Contoh berikut menunjukkan pesan log audit yang diekspor yang diterima di Azure Blob Storage:

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

Langkah berikutnya

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