Plugin DataHub untuk Fluentd
Ikhtisar
Plugin DataHub untuk Fluentd adalah plugin output yang dikembangkan berdasarkan Fluentd, digunakan untuk menulis data yang dikumpulkan ke DataHub. Plugin ini mengikuti konvensi pengembangan plugin output Fluentd dan mudah dipasang. Anda dapat menggunakan plugin ini untuk menulis data yang dikumpulkan ke DataHub dengan mudah.
Instal Plugin DataHub untuk Fluentd
Instal plugin menggunakan RubyGems
Disarankan untuk mengubah sumber gem menjadi https://gems.ruby-china.com.
gem install fluent-plugin-datahubInstal plugin menggunakan paket instalasi
Plugin harus diinstal di Linux. Sebelum menginstal plugin, pastikan Ruby sudah terinstal.
Untuk pengguna yang belum menginstal Fluentd, tersedia paket instalasi lengkap untuk menginstal Fluentd dan Plugin DataHub untuk Fluentd. Untuk pengguna yang telah menginstal Fluentd, tersedia paket instalasi Plugin DataHub untuk Fluentd.
(1) Instal Fluentd dan Plugin DataHub untuk Fluentd secara bersamaan: Jika Anda belum menginstal Fluentd, unduh paket instalasi lengkap untuk menginstal Fluentd dan Plugin DataHub untuk Fluentd. Perhatikan bahwa Fluentd 0.12.25 disertakan dalam paket instalasi lengkap.
$ tar -xzvf fluentd-with-datahub-0.12.25.tar.gz
$ cd fluentd-with-datahub
$ sudo sh install.sh(2) Instal Plugin DataHub untuk Fluentd secara terpisah: Jika Anda telah menginstal Fluentd, unduh paket instalasi Plugin DataHub untuk Fluentd dan jalankan perintah gem untuk menginstal plugin.
$ sudo gem install --local fluent-plugin-datahub-0.12.25.gemCatatan penggunaan
Contoh 1: Unggah file CSV
Bagian ini menjelaskan cara menulis konten tambahan dari file CSV ke DataHub secara hampir real-time menggunakan Plugin DataHub untuk Fluentd. Contoh berikut menunjukkan format konten file CSV.
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,14321111111Setiap baris merupakan catatan yang akan ditulis ke DataHub. Bidang dipisahkan oleh koma (,). File CSV disimpan sebagai /temp/test.csv di komputer lokal. Tabel berikut menjelaskan skema topik DataHub ke mana file CSV ditulis.
Nama bidang | Tipe data |
|---|---|
id | BIGINT |
name | STRING |
gender | BOOLEAN |
salary | DOUBLE |
my_time | TIMESTAMP |
Berikut adalah file konfigurasi Fluentd yang digunakan dalam contoh ini. File konfigurasi disimpan sebagai ${CONFIG_HOME}/fluentd_test.conf.
<source>
@type tail
path Jalur file CSV.
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 Jalur file catatan kotor.
retry_times 3
put_data_batch_size 1000
</match>Jalankan perintah berikut untuk memulai Fluentd menulis file CSV ke DataHub:
${FLUENTD_HOME}/fluentd-with-dataHub/bin/fluentd -c ${CONFIG_HOME}/fluentd_test.confContoh 2: Kumpulkan log Log4j
Kode berikut menunjukkan contoh log Log4j:
11:48:43.439 [qtp1847995714-17] INFO AuditInterceptor - [c2un5sh7cu52ek6am1ui1m5h] end /web/v1/project/tefe4mfurtix9kwwyrvfqd0m/node/0m0169kapshvgc3ujskwkk8g/health GET, 4061 msBerikut adalah file konfigurasi Fluentd yang digunakan dalam contoh ini:
<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>Gunakan file konfigurasi di atas untuk memulai Fluentd mengumpulkan log Log4j ke DataHub.
Parameter
Konfigurasi Input
tag test1: tag, yang dipetakan ke informasi tujuan menggunakan ekspresi reguler tertentu.
format csv: format file dari mana data dikumpulkan.
keys id,name,gender,salary,my_time: bidang yang akan dikumpulkan dari file CSV. Nama bidang harus sama dengan yang ada dalam skema topik DataHub tujuan.Konfigurasi Output
shard_id 0: ID shard ke mana semua catatan ditulis. Secara default, semua catatan ditulis ke shard melalui polling.
shard_keys ["id"]: bidang yang digunakan sebagai kunci shard. Nilai kunci shard yang di-hash digunakan sebagai indeks untuk menulis data.
flush_interval 1: interval antara flush data. Nilai default: 60s.
buffer_chunk_limit 3m: ukuran maksimum chunk. Unit: k atau m, yang menunjukkan KB atau MB. Kami sarankan Anda menetapkan ukuran maksimum menjadi 3 MB.
buffer_queue_limit 128: panjang maksimum antrian chunk. Baik parameter buffer_chunk_limit maupun buffer_queue_limit menentukan ukuran buffer.
put_data_batch_size 1000: jumlah catatan yang akan ditulis ke DataHub sekaligus. Dalam contoh ini, 1.000 catatan ditulis ke DataHub setiap kali.
retry_times 3: jumlah percobaan ulang.
retry_interval 3: interval antara percobaan ulang. Unit: detik.
dirty_data_continue true: menentukan apakah akan mengabaikan catatan kotor. Nilai true menunjukkan bahwa plugin mencoba operasi tersebut beberapa kali sebelum menulis catatan kotor ke file catatan kotor.
dirty_data_file /xxx/yyy: direktori tempat file catatan kotor disimpan.
column_names ["id"]: nama bidang yang akan ditulis ke DataHub.Pengujian performa
Lingkungan untuk pengujian performa: Fluentd berjalan di Linux dengan CPU dual-core dan memori 4 GB. Poin-poin berikut dapat diamati dari data pengujian performa:
Untuk satu catatan berukuran 512 byte, kecepatan penulisan dipertahankan sekitar 2.800 catatan per detik.
Saat jumlah catatan yang ditulis ke DataHub sekaligus meningkat, kecepatan penulisan sedikit meningkat.
Untuk satu catatan berukuran 100 KB, plugin hanya dapat bekerja ketika 100 catatan ditulis ke DataHub sekaligus. Plugin tidak bekerja ketika 500 atau 1.000 catatan ditulis ke DataHub sekaligus karena jumlah data yang ditulis sekaligus terlalu besar. Ukuran 500 atau 1.000 catatan lebih besar dari 50 MB.
Kecepatan penulisan rata-rata tetap pada 3 MB/s.
FAQ
Q: Bagaimana cara menulis ekspresi reguler untuk Fluentd? A: Anda dapat menggunakan editor ekspresi reguler.