Fluentd plugin
Pengenalan produk
Plugin output ini untuk Fluentd menulis data yang dikumpulkan ke DataHub. Plugin ini mengikuti standar pengembangan plugin output Fluentd, mudah diinstal, dan memungkinkan Anda menulis data yang dikumpulkan ke DataHub.
Instalasi produk
Instal menggunakan RubyGems
Catatan: Ubah sumber RubyGems ke https://gems.ruby-china.com.
gem install fluent-plugin-datahub
Instalasi lokal
-
Fluentd hanya berjalan di lingkungan Linux dan memerlukan Ruby yang telah diinstal.
-
Tersedia dua mode instalasi. Jika Anda belum menginstal Fluentd, Anda dapat menggunakan mode instalasi satu klik untuk menginstal Fluentd dan plugin DataHub sekaligus. Jika Anda telah menginstal Fluentd, Anda dapat menggunakan mode instalasi mandiri untuk hanya menginstal plugin penulis DataHub.
1) Instalasi satu klik: Jika Anda belum menginstal Fluentd, unduh paket instalasi lengkap Fluentd. Catatan: Paket instalasi lengkap mencakup versi Fluentd fluentd-0.12.25.gem.
$ tar -xzvf fluentd-with-datahub-0.12.25.tar.gz
$ cd fluentd-with-datahub
$ sudo sh install.sh
2) Instalasi mandiri: Jika Anda telah menginstal Fluentd, unduh paket plugin DataHub Fluentd. Gunakan perintah gem untuk menginstal plugin DataHub.
$ sudo gem install --local fluent-plugin-datahub-0.12.25.gem
Kasus penggunaan
Kasus penggunaan 1: Unggah file CSV
Kasus penggunaan ini menunjukkan cara menggunakan Fluentd untuk mengunggah file CSV inkremental ke DataHub secara near real-time. File CSV memiliki format berikut:
0,qe614c760fuk8judu01tn5x055rpt1,true,100.1,14321111111
1,znv1py74o8ynn87k66o32ao4x875wi,true,100.1,14321111111
2,7nm0mtpgo1q0ubuljjjx9b000ybltl,true,100.1,14321111111
3,10t0n6pvonnan16279w848ukko5f6l,true,100.1,14321111111
4,0ub584kw88s6dczd0mta7itmta10jo,true,100.1,14321111111
5,1ltfpf0jt7fhvf0oy4lo8m3z62c940,true,100.1,14321111111
6,zpqsfxqy9379lmcehd7q8kftntrozb,true,100.1,14321111111
7,ce1ga9aln346xcj761c3iytshyzuxg,true,100.1,14321111111
8,k5j2id9a0ko90cykl40s6ojq6gruyi,true,100.1,14321111111
9,ns2zcx9bdip5y0aqd1tdicf7bkdmsm,true,100.1,14321111111
10,54rs9cm1xau2fk66pzyz62tf9tsse4,true,100.1,14321111111
Dalam file CSV, setiap baris merupakan satu record dengan bidang-bidang yang berbeda. File tersebut disimpan di path lokal `/temp/test.csv`. Topik DataHub memiliki format berikut:
|
Nama bidang |
Tipe bidang |
|---|---|
|
id |
BIGINT |
|
name |
STRING |
|
gender |
BOOLEAN |
|
salary |
DOUBLE |
|
my_time |
TIMESTAMP |
Gunakan konfigurasi Fluentd berikut. File konfigurasi terletak di `${CONFIG_HOME}/fluentd_test.conf`:
<source>
@type tail
path your_file_path
tag test1
format csv
keys id,name,gender,salary,my_time
</source>
<match test1>
@type datahub
access_id your_app_id
access_key your_app_key
endpoint http://ip:port
project_name test_project
topic_name fluentd_performance_test_1
column_names ["id", "name", "gender", "salary", "my_time"]
flush_interval 1s
buffer_chunk_limit 3m
buffer_queue_limit 128
dirty_data_continue true
dirty_data_file path_to_dirty_data_file
retry_times 3
put_data_batch_size 1000
</match>
Jalankan perintah berikut untuk memulai Fluentd dan mulai mengirim data dari file CSV ke DataHub:
${FLUENTD_HOME}/fluentd-with-dataHub/bin/fluentd -c ${CONFIG_HOME}/fluentd_test.conf
Kasus penggunaan 2: Kumpulkan log Log4j
Log Log4j memiliki format berikut:
11:48:43.439 [qtp1847995714-17] INFO AuditInterceptor - [c2un5sh7cu52ek6am1ui1m5h] end /web/v1/project/tefe4mfurtix9kwwyrvfqd0m/node/0m0169kapshvgc3ujskwkk8g/health GET, 4061 ms
Gunakan konfigurasi Fluentd berikut:
<source>
@type tail
path bayes.log
tag test
format /(?<request_time>\d\d:\d\d:\d\d.\d+)\s+\[(?<thread_id>[\w\-]+)\]\s+(?<log_level>\w+)\s+(?<class>\w+)\s+-\s+\[(?<request_id>\w+)\]\s+(?<detail>.+)/
</source>
<match test>
@type datahub
access_id your_access_id
access_key your_access_key
endpoint http://ip:port
project_name test_project
topic_name dataHub_fluentd_out_1
column_names ["thread_id", "log_level", "class"]
</match>
Jalankan Fluentd dengan konfigurasi ini untuk mengirim log Log4j ke DataHub.
Parameter konfigurasi
Konfigurasi plugin input
tag test1 : Menentukan entri rute. Entri rute ini dicocokkan dengan ekspresi reguler <match>.
format csv : Mengumpulkan data dalam format CSV.
keys id,name,gender,salary,my_time : Menentukan kolom yang akan dikumpulkan. Nama kolom harus sesuai dengan nama kolom pada tabel DataHub tujuan.Konfigurasi plugin output
shard_id 0 : Menentukan ID shard tempat data ditulis. Secara default, data ditulis secara round-robin.
shard_keys ["id"] : Menentukan kunci partisi. Nilai kunci di-hash untuk menentukan indeks shard tempat data ditulis.
flush_interval 1 : Fluentd menulis data minimal sekali per detik. Nilai default adalah 60 detik.
buffer_chunk_limit 3m : Ukuran chunk. Mendukung "k" (KB) dan "m" (MB). Nilai yang direkomendasikan adalah 3m.
buffer_queue_limit 128 : Ukuran antrian chunk. Nilai ini dan buffer_chunk_limit menentukan ukuran buffer total.
put_data_batch_size 1000 : Menulis data ke DataHub setiap 1.000 record.
retry_times 3 : Jumlah percobaan ulang.
retry_interval 3 : Interval percobaan ulang dalam detik.
dirty_data_continue true : Menentukan apakah proses dilanjutkan saat ditemukan data rusak. Jika diatur ke true, Fluentd akan mencoba ulang. Setelah semua percobaan habis, data rusak akan ditulis ke file data rusak.
dirty_data_file /xxx/yyy : Menentukan path ke file data rusak.
column_names ["id"] : Menentukan kolom yang akan dikumpulkan.
Pengujian kinerja
Lingkungan pengujian: Fluentd dijalankan pada sistem operasi Linux dengan 2 core dan RAM 4 GB. Hasil pengujian kinerja plugin DataHub adalah sebagai berikut:
-
Untuk record tunggal berukuran 512 B, kecepatan penulisan sekitar 2.800 record/detik.
-
Meningkatkan `put_data_batch_size` sedikit meningkatkan kecepatan, tetapi efeknya tidak signifikan.
-
Untuk record tunggal berukuran 100 KB, plugin hanya berfungsi ketika `put_data_batch_size` diatur ke 100. Nilai 500 dan 1.000 tidak berfungsi karena ukuran data untuk satu operasi penulisan melebihi 50 MB.
-
Kecepatan penulisan rata-rata total adalah 3 MB/detik.
FAQ
Q: Bagaimana cara menulis ekspresi reguler untuk parameter format di Fluentd? A: Gunakan editor ekspresi reguler online ini.