Konfigurasi metrik menentukan kampanye telemetri yang dijalankan oleh layanan Telemetri. Konfigurasi metrik adalah instance pesan buffer protokol (protobuf) MetricsConfig. Konfigurasi metrik menentukan cara
mengumpulkan, memproses, dan melaporkan data. OEM dapat mengaktifkan konfigurasi metrik
melalui API layanan Telemetri. Beberapa konfigurasi dapat berjalan
secara bersamaan.
Sebelum memulai, pahami arsitektur SDV, yang merupakan arsitektur berorientasi layanan yang memublikasikan data sebagai pesan protobuf. Pesan ini berkomunikasi menggunakan stack komunikasi SDV melalui RPC atau publish-subscribe.
Istilah utama
Konfigurasi metrik mengatur pengumpulan data dengan menentukan sumber data, aturan pemrosesan, dan mekanisme pelaporan. Salah satu manfaat utama pemrosesan edge ini adalah berkurangnya penggunaan data seluler. Dengan memproses data frekuensi tinggi di perangkat dan hanya mengupload agregat atau insight, Anda secara signifikan mengurangi jumlah data yang ditransmisikan ke cloud.
Definisi konfigurasi metrik dimulai dengan mencantumkan sumber data yang akan digunakan dalam konfigurasi. Ini adalah layanan yang menyediakan data melalui stack komunikasi SDV. Saat Anda mengaktifkan konfigurasi, layanan Telemetri akan terhubung ke sumber ini untuk mengalirkan atau mengambil data sesuai kebutuhan.
Inti dari konfigurasi adalah kemampuan pemrosesan data edge, yang dikelola melalui pengumpul data stateful. Setiap penggabung menggunakan pembangun pesan yang mempertahankan instance pesan proto stateful. Setiap kolom dalam pesan ini diisi dengan mengevaluasi ekspresi, yang menentukan data mana yang akan dibaca dari sumber data atau pengagregasi lain dan operasi matematika, logika, atau agregasi mana yang akan diterapkan ke data. Anda dapat menerapkan agregasi tambahan ke hasil ekspresi.
Pemicu sangat penting untuk mengontrol proses ini. Fungsi ini dapat diaktifkan secara berkala, sebagai respons terhadap data baru, atau saat kondisi berbasis data terpenuhi. Pemicu menentukan kapan penggabung mengevaluasi pembuat pesan, kapan laporan metrik dibuat, dan dapat memengaruhi siklus proses konfigurasi, misalnya, dengan memulai atau menghentikan pengumpulan data.
Laporan metrik adalah output akhir. Setiap laporan menyertakan payload data yang ditentukan oleh pembuat pesan, beserta metadata seperti stempel waktu dan ID laporan. Anda dapat membuat laporan pada momen siklus proses konfigurasi tertentu, seperti saat konfigurasi diaktifkan atau dinonaktifkan. Laporan yang dibuat disimpan dalam memori, dan klien akan diberi tahu untuk mengambilnya melalui saluran notifikasi status laporan.
Gambar berikut memberikan contoh konseptual tentang cara komponen dapat berinteraksi dalam konfigurasi metrik:
Gambar 1. Sumber data, pemrosesan, dan pelaporan dalam konfigurasi metrik.
Komponen konfigurasi metrik
Anda dapat menggunakan konfigurasi metrik untuk menentukan tugas pengumpulan data dan pipeline pemrosesan di perangkat yang kompleks. Bagian ini menjelaskan komponen inti yang digunakan untuk menentukan kampanye metrik. Komponen ditampilkan dalam urutan aliran data melalui sistem, dari input hingga output. Anda dapat menentukan komponen ini dalam urutan apa pun. Memproses data dengan pengagregat dan pengelolaan siklus proses bersifat opsional.
- Menentukan sumber data
- Memproses data dengan pengagregasi
- Mengontrol alur eksekusi dengan pemicu
- Membuat laporan metrik
- Mengelola siklus proses pengumpulan data
Menentukan sumber data
Dasar dari setiap kampanye metrik adalah data. Dalam konfigurasi metrik, mekanisme penerimaan data diabstraksi dan Anda hanya perlu menentukan nama yang digunakan untuk mengidentifikasi sumber data dan mode koneksi (berlangganan atau sesuai permintaan). Sumber data dapat berupa layanan apa pun yang menyediakan data melalui stack komunikasi SDV atau mendaftarkan dirinya di Configurable Publisher Registry, yang memungkinkan pengumpulan data dari aplikasi yang tidak memiliki middleware SDV. Setiap sumber data harus memiliki nama unik dalam konfigurasi sehingga dapat dirujuk oleh komponen konfigurasi metrik lainnya seperti pemicu atau penggabung. Anda dapat mengonfigurasi cara koneksinya, seberapa sering ia menerima data, dan memberikan objek konfigurasi khusus layanan.
Konfigurasi sumber data
Layanan Telemetri dapat terhubung ke sumber data dengan dua cara:
- Pengambil: Metode ini mengambil data sesuai permintaan setiap kali ekspresi yang ditentukan dalam konfigurasi metrik perlu membaca data dari sumber ini. Hal ini berguna untuk sumber data yang tidak menyediakan aliran data berkelanjutan atau saat Anda memerlukan snapshot data yang jarang.
- Langganan: Ini adalah metode default. Tindakan ini membuat aliran data berkelanjutan dari sumber. Jenis koneksi ini diperlukan jika Anda ingin menggunakan pemicu data yang dipicu saat pesan baru tiba dari sumber ini.
Saat menggunakan langganan, Anda dapat mengonfigurasi:
- Subsampling: Untuk menghindari penyerapan data terlalu sering, Anda dapat menentukan interval waktu minimum antara pesan berurutan dari sumber yang sama. Jika sumber memublikasikan data lebih cepat dari interval ini, layanan Telemetri akan membatasi notifikasi, dan pemicu data hanya diaktifkan untuk pesan yang diterima setelah pembatasan. Hal ini secara efektif melakukan subsampling data.
- Pengambilan pesan awal: Anda dapat mengonfigurasi layanan untuk mengambil pesan terbaru dari sumber saat layanan membuat langganan. Akibatnya, sumber data akan langsung diisi dengan nilai jika ada, bukan menunggu pesan baru pertama dipublikasikan. Hal ini berguna dalam pemicu atau agregator bersyarat yang memerlukan status awal atau saat sumber data jarang dipublikasikan.
Terlepas dari jenisnya, pesan di-cache secara internal. Jika beberapa ekspresi atau penggabung memerlukan data dari sumber yang sama selama satu siklus evaluasi, sistem hanya mengambil data satu kali, baik dari cache jika ada pesan baru yang tiba menggunakan langganan, atau menggunakan satu panggilan sesuai permintaan.
Memproses data dengan pengagregasi
Meskipun sumber data menyediakan data mentah, penggabung melakukan pemrosesan data edge stateful. Mereka menggunakan data dari sumber data atau penggabung lainnya, mengubahnya, dan membuat hasilnya tersedia untuk dibaca oleh laporan metrik atau diproses lebih lanjut oleh penggabung lainnya. Hal ini memungkinkan pembuatan pipeline pemrosesan multi-tahap, misalnya, menghitung statistik kecepatan dalam satu agregator dan menggunakan statistik tersebut dalam komponen lain yang mendeteksi pola perilaku mengemudi.
Agregator dipicu untuk melakukan perhitungannya oleh satu atau beberapa pemicu. Setiap kali salah satu pemicunya diaktifkan, penggabung akan mengevaluasi aturannya dan memperbarui status internalnya.
Anda dapat mengonfigurasi penggabung untuk mereset statusnya setelah nilainya dibaca oleh komponen lain, yang berguna untuk menghitung statistik selama periode waktu yang tidak tumpang-tindih.
Pembangun pesan menentukan struktur dan logika agregator. Pembangun pesan menentukan cara membuat instance pesan proto dengan menjelaskan cara membuat data untuk setiap kolomnya. Untuk setiap kolom, ekspresi menentukan cara membaca data dari sumber data dan penggabung serta menerapkan operasi ke data ini. Selain itu, Anda dapat menerapkan agregasi, yang merupakan operasi penghitungan atau pengumpulan yang diterapkan ke hasil ekspresi dari waktu ke waktu.
Jenis agregasi berikut didukung:
- Matematis: Menghitung statistik (rata-rata, minimum, maksimum, jumlah, deviasi standar, dan delta) atas nilai yang ditampilkan oleh ekspresi pada setiap pemicu. Delta adalah perbedaan antara nilai numerik saat ini dan sebelumnya yang ditampilkan oleh ekspresi.
- Daftar: Mengumpulkan nilai yang ditampilkan oleh ekspresi ke dalam daftar. Anda dapat membatasi ukuran daftar untuk membuat periode berjalan (buffer ring) dari nilai terbaru.
- Jumlah: Kasus khusus saat tidak ada ekspresi yang ditentukan. Menghitung berapa kali kolom dievaluasi (yaitu, berapa kali agregator atau laporan dipicu).
- Terusan: Menggunakan hasil ekspresi secara langsung, tanpa menerapkan agregasi. Hal ini berguna dalam konfigurasi laporan untuk mengakses nilai akhir dari penggabung.
Gambar berikut adalah diagram konseptual yang menggambarkan evaluasi penggabung:
Gambar 2. Evaluasi agregator.
Melakukan penghitungan atau menentukan kondisi menggunakan ekspresi
Ekspresi digunakan dalam pembuat pesan dan pemicu bersyarat untuk melakukan
penghitungan atau menentukan kondisi. Saat menggunakan Pembuat Konfigurasi Metrik (MCG) untuk membuat objek JSON Konfigurasi Metrik, ekspresi ditulis sebagai string yang mudah dibaca manusia yang menggunakan notasi titik untuk mengakses kolom sumber data (misalnya, vehicle_speed.speed_value) dan menerapkan berbagai operasi. MCG menerjemahkan string ini ke dalam struktur hierarki yang dioptimalkan, yang serupa dengan pohon sintaksis abstrak (AST), untuk evaluasi yang efisien di perangkat dalam pesan protobuf MetricsConfig akhir.
Operator dan fungsi
Ekspresi mendukung kumpulan operator dan fungsi berikut:
- Aritmatika: Mendukung penambahan, pengurangan (biner dan uner), perkalian, pembagian, modulo, dan pangkat.
- Logis: Mendukung AND, OR, NOT, dan XOR.
- Relasional: Mendukung pemeriksaan kesetaraan dan perbandingan lebih besar dari dan kurang dari.
- Daftar: Memeriksa apakah daftar berisi atau tidak berisi nilai tertentu.
- Stempel waktu: Menampilkan stempel waktu pada saat evaluasi dalam mikrodetik. Jenis clock dapat berupa clock real-time, waktu monoton sejak boot (termasuk waktu penangguhan), atau waktu monoton sejak boot atau resume terakhir.
- Nilai absolut: Menampilkan nilai absolut dari sebuah angka.
- Pembulatan: Membulatkan ke bilangan bulat terdekat (
round), menampilkan bilangan bulat terbesar yang kurang dari atau sama dengan suatu angka (floor), atau menampilkan bilangan bulat terkecil yang lebih besar dari atau sama dengan suatu angka (ceil).
Berikut adalah contoh ekspresi yang membaca dari dua sumber data dan dievaluasi ke
true jika kecepatan kendaraan melebihi 100 km/jam dan tidak ada peringatan
tekanan ban:
(vehicle_speed.speed_value * 3.6) > 100 && tire_pressure.warning == false
Mengontrol alur eksekusi dengan pemicu
Pemicu adalah pengelola konfigurasi metrik; pemicu mengontrol kapan data diproses dan kapan laporan dibuat. Setiap pemicu harus memiliki nama unik.
Ada tiga jenis pemicu:
- Pemicu data: Diaktifkan saat sumber data dengan koneksi langganan memublikasikan pesan baru (setelah subsampling, jika dikonfigurasi).
- Pemicu berkala: Diaktifkan pada interval waktu tetap.
- Pemicu bersyarat: Diaktifkan saat kondisi logis tertentu terpenuhi.
Pemicu bersyarat
Pemicu bersyarat memproses pemicu lain (data, berkala, atau pemicu bersyarat lainnya) dan, saat salah satu pemicu tersebut diaktifkan, mengevaluasi ekspresi. Pemicu bersyarat hanya diaktifkan jika hasil ekspresi memenuhi kondisi tertentu.
Anda dapat mengonfigurasi pemicu bersyarat untuk diaktifkan berdasarkan beberapa jenis kondisi:
- Nilai: Jika ekspresi dievaluasi ke
true(atau bukan nol) ataufalse(atau nol). - Tepi naik: Saat ekspresi boolean berubah dari
falsemenjaditrue, atau nilai numerik meningkat. - Tepi turun: Saat ekspresi boolean berubah dari
truemenjadifalse, atau nilai numerik menurun. - Saat perubahan: Setiap kali hasil ekspresi berbeda dari nilai sebelumnya.
Memfilter perubahan status yang berisik
Untuk pemicu berbasis tepi atau saat perubahan, Anda dapat memfilter perubahan status singkat atau berisik (glitches) dengan mewajibkan kondisi tetap dalam status baru selama durasi minimum sebelum pemicu diaktifkan.
Misalnya, Anda dapat mengonfigurasi pemicu agar hanya diaktifkan jika vehicle_speed > 100
berubah menjadi true dan tetap true selama minimal 5 detik. Hal ini mencegah pemicu
diaktifkan karena lonjakan sesaat dalam pembacaan kecepatan. Anda juga dapat
mewajibkan agar semua nilai yang terlihat selama durasi penahanan ini sama persis.
Membuat laporan metrik
Setelah data diproses, Anda menentukan cara dan waktu data dikemas ke dalam laporan.
Laporan ditentukan menggunakan konfigurasi laporan metrik, yang menggunakan pembuat pesan untuk menentukan struktur dan konten outputnya. Saat salah satu pemicu laporan diaktifkan, pembuat pesan akan mengevaluasi penetapan kolomnya untuk membuat payload data laporan.
Setiap laporan yang dihasilkan adalah instance pesan Protobuf MetricsReport,
yang membungkus output pembuat pesan di kolom payload dan menambahkan
metadata. Layanan Telemetri secara otomatis menambahkan metadata berikut ke setiap MetricsReport:
- ID unik universal (UUID) untuk laporan
- Nomor laporan berurutan, yang bertambah untuk setiap laporan yang dibuat oleh konfigurasi laporan ini
- Stempel waktu saat laporan dibuat
- Alasan pembuatan (misalnya, dipicu oleh aturan, atau dibuat saat penonaktifan)
- UUID dan versi konfigurasi metrik yang membuat laporan
- Nama konfigurasi laporan metrik
Kontrol pembuatan laporan
Meskipun laporan biasanya dibuat sebagai respons terhadap pemicu, Anda juga dapat mengonfigurasinya agar dibuat pada momen siklus proses tertentu dari konfigurasi metrik:
- Laporkan saat aktivasi: Jika diaktifkan, sistem akan membuat laporan awal segera setelah konfigurasi metrik diaktifkan.
- Laporan akhir: Jika diaktifkan, sistem akan membuat laporan akhir saat pengumpulan data dijeda atau dihentikan, atau saat layanan Telemetri dimatikan. Laporan ini berisi data yang diagregasi hingga saat itu, sehingga membantu memastikan tidak ada data yang hilang di akhir sesi.
Mengelola siklus proses pengumpulan data
Secara default, konfigurasi metrik mulai mengumpulkan dan memproses data segera setelah diaktifkan oleh klien dan berlanjut hingga dinonaktifkan oleh klien. Namun, Anda dapat mengontrol siklus proses ini secara lebih terperinci dengan menentukan pemicu yang memulai atau menghentikan pengumpulan data atau konfigurasi metrik:
- Pemicu mulai: Jika ditentukan, pengumpulan data hanya dimulai saat pemicu ini diaktifkan. Jika pengumpulan gambar telah dijeda oleh pemicu berhenti, pemicu mulai akan melanjutkannya.
- Pemicu berhenti: Jika ditentukan, pemicu ini akan menjeda pengumpulan data. Agregasi dan pembuatan laporan akan berhenti hingga pemicu mulai diaktifkan kembali.
- Pemicu penonaktifan: Pemicu ini menonaktifkan konfigurasi metrik dengan cara yang sama seperti panggilan
deactivate_metrics_configdari klien.
Misalnya, Anda dapat menentukan pemicu bersyarat yang diaktifkan saat
vehicle_state berubah menjadi DRIVING sebagai pemicu mulai, dan pemicu lain yang
diaktifkan saat vehicle_state berubah menjadi PARKED sebagai pemicu berhenti. Hal ini membantu
memastikan bahwa data hanya dikumpulkan saat kendaraan sedang bergerak.