Pasar global untuk solusi Internet of Things (IoT) berkembang pesat. Semakin banyak perangkat IoT cerdas digunakan dalam kehidupan sehari-hari, seperti router pintar, TV dongle, Tmall Genie, dan robot penyedot debu. Namun, model pengembangan tertanam di industri perangkat lunak tradisional menimbulkan tantangan besar bagi industri IoT. Misalnya, solusi pencatatan perangkat tradisional tidak dapat memenuhi persyaratan karena banyaknya perangkat IoT yang tersebar luas di berbagai lokasi dan sulit untuk di-debug atau diskalakan.
Untuk mengatasi tantangan ini, Simple Log Service menyediakan C Producer Library berdasarkan pengalaman bertahun-tahun dalam mengembangkan Logtail. C Producer Library adalah solusi pengumpulan log yang disesuaikan untuk perangkat IoT.

Persyaratan dalam pengembangan perangkat lunak tertanam
Pengembang perangkat lunak IoT atau tertanam harus memiliki pengetahuan mendalam dan pengalaman yang luas untuk mengelola, memantau, dan menyelesaikan masalah pada banyak perangkat IoT. Pengembangan perangkat lunak tertanam memiliki persyaratan berikut:
Pengumpulan data: Kumpulkan data dari jutaan atau puluhan juta perangkat yang tersebar di seluruh dunia secara real-time.
Debugging: Gunakan satu set solusi untuk mengumpulkan data secara online dan melakukan debugging perangkat lunak secara real-time.
Pemecahan masalah online: Identifikasi lokasi perangkat IoT online dan tentukan penyebab kesalahan jika terjadi masalah pada perangkat.
Pemantauan: Pantau jumlah, status, dan lokasi perangkat IoT online, serta konfigurasikan aturan peringatan untuk perangkat tersebut.
Analisis data real-time: Visualisasikan data yang dihasilkan oleh perangkat IoT untuk membuat profil pengguna dengan menghubungkan perangkat dengan platform komputasi real-time dan gudang data besar.

Tantangan utama di bidang IoT
Solusi pengembangan perangkat lunak tradisional tidak dapat memenuhi persyaratan yang disebutkan di atas dalam industri IoT karena tantangan berikut:
Banyak perangkat IoT diterapkan. Dalam pemeliharaan tradisional, mengelola 10.000 server adalah tantangan besar. Namun, di industri IoT, mengelola 100.000 perangkat IoT online hanya merupakan persyaratan dasar.
Perangkat IoT tersebar luas di berbagai tempat di dalam suatu negara atau di seluruh dunia.
Perangkat IoT sering berada dalam status tidak diketahui dan sulit diakses serta di-debug.
Perangkat IoT dilengkapi dengan perangkat keras rendah untuk mengurangi biaya. Misalnya, perangkat IoT mungkin memiliki total ukuran memori sebesar 32 MB. Akibatnya, solusi pengumpulan log tradisional untuk PC tidak berlaku untuk perangkat IoT.
C Producer
Solusi pengumpulan data log yang disesuaikan oleh Simple Log Service.
Logtail adalah Agen dari Simple Log Service dan diterapkan pada jutaan server x86. . Selain itu, Simple Log Service menyediakan berbagai solusi pengumpulan:
Mobile SDK: Anda dapat menggunakan SDK untuk mengumpulkan data dari platform Android atau iOS dengan puluhan juta Pengguna aktif harian (DAU).
Pelacakan web (JavaScript): Pelacakan web adalah solusi ringan yang mirip dengan Baidu Tongji dan Google Analytics. Anda dapat menggunakan pelacakan web untuk mengumpulkan data tanpa tanda tangan.
Dalam solusi-solusi ini, C Producer Library adalah solusi yang disesuaikan berdasarkan Logtail untuk mengumpulkan data log dari perangkat IoT. Solusi ini kompatibel dengan CPU, memori, disk, jaringan, dan mode aplikasi perangkat IoT. Gambar berikut menunjukkan fitur-fitur dari solusi-solusi ini.

Fitur C Producer Library
C Producer Library berfungsi sebagai Logtail ringan untuk menawarkan stabilitas tinggi, performa tinggi, dan konsumsi sumber daya rendah. Dibandingkan dengan Logtail, C Producer Library tidak mendukung manajemen konfigurasi real-time. Namun, C Producer Library mewarisi fitur-fitur berikut dari Logtail:
Multi-penyewa: C Producer Library dapat memproses berbagai jenis log seperti Metric, DebugLog, dan ErrorLog berdasarkan prioritas mereka. Anda dapat mengonfigurasi beberapa klien untuk C Producer Library. Anda juga dapat mengonfigurasi prioritas pengumpulan, Proyek tujuan, dan Logstore tujuan untuk setiap klien.
Pencarian kontekstual: Log yang dihasilkan oleh klien yang sama berada dalam konteks yang sama. Anda dapat melihat log relevan sebelum dan sesudah log tertentu.
Pengiriman bersamaan dan unggah yang dapat dilanjutkan: Anda dapat mengatur ukuran cache maksimum. Jika ukuran log yang di-cache mencapai batas atas, tidak ada lagi log yang dapat ditulis ke cache.
Selain itu, C Producer Library menyediakan fitur-fitur berikut yang spesifik untuk perangkat IoT:
Debugging lokal: Anda dapat mengekspor log ke perangkat lokal. Anda dapat mengonfigurasi rotasi log, jumlah log, dan ukuran rotasi.
Kontrol sumber daya granular: Anda dapat mengatur ukuran cache dan mode agregat untuk berbagai jenis data atau log.
Kompresi cache log: Jika data log gagal dikirim ke Logstores, data log dapat dikompresi untuk mengurangi penggunaan memori perangkat IoT.

Keuntungan C Producer Library
Sebagai solusi kustom untuk perangkat IoT, C Producer Library memiliki keuntungan berikut:

Lalu lintas tulis bersamaan tinggi: Anda dapat mengonfigurasi kolam thread klien untuk menulis ratusan ribu log per detik ke Simple Log Service. Untuk informasi lebih lanjut, lihat bagian "Uji performa" dalam topik ini.
Konsumsi sumber daya rendah: Hanya 70% dari sumber daya CPU yang diperlukan untuk menulis 200.000 log per detik. Untuk perangkat keras berperforma rendah seperti Raspberry Pi, sumber daya CPU tidak terpengaruh meskipun 100 log dihasilkan per detik.
Pengiriman log langsung: Setelah log dihasilkan, mereka langsung dikirim ke Simple Log Service.
Isolasi logis antara komputasi dan I/O: Log dihasilkan secara asinkron tanpa memblokir thread pekerja.
Banyak prioritas: Anda dapat mengonfigurasi prioritas berbeda untuk klien Anda untuk memastikan bahwa log dengan prioritas lebih tinggi dikirim terlebih dahulu.
Debugging lokal: Anda dapat mengonfigurasi debugging lokal untuk menguji aplikasi Anda jika koneksi jaringan tidak tersedia.
C Producer Library menyederhanakan pengembangan aplikasi. Anda tidak perlu mempertimbangkan implementasi pengumpulan log atau dampaknya pada bisnis Anda. Ini membuat pengumpulan data menjadi jauh lebih mudah.
Tabel berikut membandingkan C Producer Library dan solusi pengumpulan tertanam lainnya.
Jenis | C Producer | Solusi lainnya | |
Pemrograman | Platform | Berdasarkan mobile dan tertanam | Berdasarkan mobile |
Konteks | Didukung | Tidak didukung | |
Banyak jenis log | Didukung | Tidak didukung | |
Format Kustom | Didukung | Tidak didukung (Beberapa bidang terbatas disediakan) | |
Prioritas | Didukung | Tidak didukung | |
Parameter lingkungan | Dapat dikonfigurasi | Dapat dikonfigurasi | |
Stabilitas | Konkurensi | Tinggi | Sedang |
Algoritma kompresi | LZ4 (keseimbangan antara efisiensi dan performa) dan Gzip | Dioptimalkan | |
Konsumsi sumber daya rendah | Dioptimalkan | Sedang | |
Transmisi | Unggah yang dapat dilanjutkan | Didukung | Secara default, unggah yang dapat dilanjutkan tidak didukung. Pengembangan sekunder diperlukan untuk mendukung unggah yang dapat dilanjutkan. |
Titik akhir | 8 titik akhir di China dan 8 titik akhir di luar China | Hangzhou | |
Debugging | Log lokal | Didukung | Didukung dalam mode manual |
Pengaturan parameter | Didukung | Tidak didukung | |
Pengumpulan real-time | Terlihat di sisi server | 1 detik (99,9%) hingga 3 detik (maksimum) | 1 hingga 2 jam |
Pemrosesan kustom | Lebih dari 15 mode koneksi | Solusi real-time dan offline kustom | |
Solusi C Producer Library + Simple Log Service
C Producer Library dapat diintegrasikan dengan Simple Log Service untuk menyediakan solusi pengumpulan log penuh untuk perangkat IoT.
Skala besar
Menulis ratusan juta log dari klien ke Simple Log Service secara real-time.
Menulis petabyte data per hari.
Kecepatan tinggi
Pengumpulan cepat: Log dapat langsung dikonsumsi setelah ditulis ke Simple Log Service.
Pencarian cepat: Miliaran catatan data dapat diproses dan dicari dalam 1 detik dengan menjalankan pernyataan query kompleks di mana Anda menentukan lima kondisi.
Analisis cepat: Ratusan juta catatan data dapat di-agregasi dan dianalisis dalam 1 detik dengan menjalankan pernyataan analisis kompleks yang mencakup lima fungsi agregat dan klausa GROUP BY.
Kompatibilitas tinggi
Terintegrasi mulus dengan berbagai layanan Alibaba Cloud.
Kompatibel dengan berbagai sistem penyimpanan, komputasi, dan visualisasi open source.

Unduh dan gunakan C Producer Library
URL Unduhan: GitHub
Anda dapat membuat beberapa produser untuk setiap aplikasi dan membuat beberapa klien untuk setiap produser. Anda dapat mengonfigurasi alamat IP tujuan, level log, debugging lokal, ukuran cache, pengenal kustom, dan topik untuk setiap klien.
Untuk informasi lebih lanjut tentang cara menginstal C Producer Library, lihat README.

Uji performa
Konfigurasi Lingkungan
Skenario performa tinggi: server x86 tradisional.
Skenario performa rendah: Raspberry Pi (lingkungan dengan konsumsi daya rendah).
Gambar berikut menunjukkan detail konfigurasi.

Konfigurasi C Producer Library
ARM (Raspberry Pi)
Ukuran cache: 10 MB
Waktu agregasi: 3 detik. Jika waktu agregasi, ukuran paket teragregasi, atau jumlah log teragregasi mencapai ambang batas yang ditentukan, data akan dikemas dan dikirim ke Simple Log Service.
Ukuran paket teragregasi: 1 MB
Jumlah log teragregasi: 1.000
Jumlah thread pengiriman: 1
Jumlah tag kustom: 5
X86
Ukuran cache: 10 MB
Waktu agregasi: 3 detik. Jika waktu agregasi, ukuran paket teragregasi, atau jumlah log teragregasi mencapai ambang batas yang ditentukan, data akan dikemas dan dikirim ke Simple Log Service.
Ukuran paket teragregasi: 3 MB
Jumlah log teragregasi: 4.096
Jumlah thread pengiriman: 4
Jumlah tag kustom: 5
Contoh log berikut berisi sembilan pasangan nilai-kunci:
__source__: 192.0.2.1
__tag__:1: 2
__tag__:5: 6
__tag__:a: b
__tag__:c: d
__tag__:tag_key: tag_value
__topic__: topic_test
_file_: /disk1/workspace/tools/aliyun-log-c-sdk/sample/log_producer_sample.c
_function_: log_producer_post_logs
_level_: LOG_PRODUCER_LEVEL_WARN
_line_: 248
_thread_: 40978304
LogHub: Pengumpulan dan konsumsi log real-time
Search/Analytics: Query dan analisis real-time
Interconnection: Grafana dan JDBC/SQL92
Visualized: Fungsi dashboard dan laporanHasil Uji
Hasil uji pada server x86
C Producer Library dapat mengirim hingga 90 MB data per detik. C Producer Library juga dapat mengunggah 200.000 log per detik, dan hanya menggunakan 70% sumber daya CPU dan 140 MB memori.
Ketika C Producer Library mengirim 200 log per detik, ia menggunakan kurang dari 0,01% sumber daya CPU.
Setiap thread pengiriman mengonsumsi rata-rata 1,2 μs untuk mengirim sebuah log.

Hasil uji pada Raspberry Pi
CPU Raspberry Pi mencapai kecepatan hanya 600 MHz. Oleh karena itu, performa Raspberry Pi sekitar 10% dari performa server X-86. Dalam hal ini, C Producer Library dapat mengirim maksimal 20.000 log per detik.
Ketika Raspberry Pi mengirim 20 log per detik, ia menggunakan kurang dari 0,01% sumber daya CPU.
Ketika Raspberry Pi terhubung ke jaringan bersama PC menggunakan port USB, setiap thread pengiriman mengonsumsi rata-rata 12 μs untuk mengirim sebuah log.
