Logstash adalah pipeline pemrosesan data open source di sisi server yang menyerap data dari berbagai sumber, mentransformasikannya, lalu mengirimkannya ke destinasi penyimpanan. Karena AnalyticDB for MySQL mendukung akses Java Database Connectivity (JDBC) native, Anda dapat menggunakan plugin output Logstash untuk menulis data log langsung ke AnalyticDB for MySQL.
Plugin komunitas logstash-output-jdbc menulis satu catatan dalam satu waktu, sehingga menghasilkan throughput rendah dan penggunaan CPU tinggi pada volume data besar. Plugin logstash-output-analyticdb mengatasi hal ini dengan menulis data secara batch, memberikan throughput hingga 5× lebih tinggi dengan overhead CPU lebih rendah.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Logstash yang telah diinstal. Lihat Installing Logstash.
-
Detail koneksi AnalyticDB for MySQL: host, port, nama database, username, dan password.
Instal plugin
Sebelum menulis data, perbarui plugin ke versi terbaru untuk mendapatkan perbaikan bug dan peningkatan performa terkini.
bin/logstash-plugin update logstash-output-analyticdb
-
Buka direktori root Logstash.
cd logstash -
Instal plugin
logstash-output-analyticdb.bin/logstash-plugin install logstash-output-analyticdb -
Buat direktori driver JDBC dan unduh file JAR konektor.
mkdir -p vendor/jar/jdbc cd vendor/jar/jdbc wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar
Konfigurasi plugin
Buat file konfigurasi bernama logstash-analyticdb.conf di direktori config (Anda dapat menggunakan nama lain).
Contoh berikut membaca dari stdin dan menulis ke AnalyticDB for MySQL:
input {
stdin { }
}
output {
analyticdb {
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://<hostname>:<port>/<database>?user=<username>&password=<password>"
statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
commit_size => 4194304
}
}
Ganti placeholder dengan nilai aktual Anda:
| Placeholder | Deskripsi |
|---|---|
<hostname> |
Titik akhir AnalyticDB for MySQL |
<port> |
Nomor port |
<database> |
Nama database tujuan |
<username> |
Username database |
<password> |
Kata Sandi Database |
Parameter plugin
| Parameter | Tipe | Wajib | Default | Deskripsi |
|---|---|---|---|---|
driver_class |
string | Ya | — | Kelas driver JDBC. Gunakan com.mysql.jdbc.Driver untuk titik akhir yang kompatibel dengan MySQL. |
connection_string |
string | Ya | — | URL koneksi JDBC untuk AnalyticDB for MySQL. |
statement |
array | Ya | — | Pernyataan INSERT dalam bentuk array. Elemen pertama adalah templat SQL; elemen selanjutnya adalah nama bidang yang dipetakan ke placeholder ?. |
commit_size |
integer | Tidak | — | Volume data maksimum dalam byte per batch. Penulisan dipicu ketika batas ini atau flush_size tercapai, mana yang lebih dulu. |
flush_size |
integer | Tidak | — | Jumlah maksimum catatan per batch. Penulisan dipicu ketika batas ini atau commit_size tercapai, mana yang lebih dulu. |
max_flush_exceptions |
integer | Tidak | 100 | Jumlah maksimum percobaan ulang saat terjadi exception penulisan. |
skip_exception |
boolean | Tidak | false |
Mengatur perilaku setelah semua percobaan ulang habis. Jika false, program melemparkan exception dan menghentikan tugas. Jika true, exception dilewati dan dituliskan ke log. |
Untuk semua parameter yang tersedia, lihat README plugin tersebut. Untuk opsi konfigurasi Logstash secara umum, lihat dokumentasi Logstash.
Jalankan tugas
Dari direktori instalasi Logstash, jalankan:
bin/logstash -f config/logstash-analyticdb.conf
Logstash mulai membaca dari input yang dikonfigurasi dan menulis batch ke AnalyticDB for MySQL.