Ở hai bài trước mình đã hướng dẫn các bạn Cài đặt ElasticSearch trên Ubuntu 20.04 và Hướng dẫn cài đặt Logstash, Kibana trên Ubuntu 20.04. Ở bài viết này mình sẽ hướng dẫn đồng bộ dữ liệu sang Elasticsearch với logstash input jdbc, ở ví dụ này mình sử dụng cơ sở dữ liệu mysql luôn nhé.
Logstash Input JDBC là plugin giúp thu thập dữ liệu trong bất kỳ cơ sở dữ liệu nào có JDBC vào Logstash. Bạn có thể lên lịch thu thập dữ liệu định kỳ bằng cronjob hoặc chạy truy vấn một lần để tải dữ liệu vào Logstash.
Ví dụ mình có dữ liệu bảng users:
mysql> select id, name, email, created_at, updated_at from users;
+----+------------------------+------------------------------+---------------------+---------------------+
| id | name | email | created_at | updated_at |
+----+------------------------+------------------------------+---------------------+---------------------+
| 1 | Thànhh Trung | thanhtrungit.dev@gmail.com | 2022-11-10 11:15:21 | 2022-11-10 11:15:21 |
| 2 | Thanh Hoa | thanhhoa@demo.com | 2022-11-10 11:39:18 | 2022-11-10 11:39:18 |
| 3 | Hồ| hovandoan@demo.com | 2022-11-10 11:47:20 | 2022-11-10 11:47:20 |
| 4 | Ms. Micaela Schultz MD | rosalee14@example.net | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 5 | Ms. Mayra Keeling | tromp.jeremie@example.org | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 6 | Gladys Tromp | mylene.walter@example.com | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 7 | Helena Balistreri | pkunde@example.org | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 8 | Elsa Schuppe | blaise.wehner@example.com | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 9 | Flavie Rempel V | roscoe.hand@example.org | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 10 | Sigrid Marquardt | wiegand.fannie@example.org | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 11 | Aidan Kuphal IV | trisha55@example.org | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 12 | Izaiah Bergstrom | stiedemann.leila@example.com | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
| 13 | Lela Friesen | odickinson@example.com | 2022-11-10 11:57:36 | 2022-11-10 11:57:36 |
+----+------------------------+------------------------------+---------------------+---------------------+
Code language: JavaScript (javascript)
Cấu hình Logstash Input JDBC
Đầu tiên bạn cần tải về JDBC driver library tại đây.
cd /etc/logstash
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.31.zip
unzip mysql-connector-j-8.0.31.zip
Code language: JavaScript (javascript)
Đường dẫn jdbc_driver_library lúc này sẽ là:
/etc/logstash/mysql-connector-j-8.0.31/mysql-connector-j-8.0.31.jar
Tiếp theo cd vào thư mục /etc/logstash/conf.d và tạo file logstash.conf
cd /etc/logstash/conf.d vi logstash.conf
Copy nội dung bên dưới rồi dán vào file logstash.conf
input{
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/laravel?characterEncoding=UTF-8&useSSL=false&autoReconnect=true&tinyInt1isBit=false"
jdbc_user => "root"
jdbc_password => "password_for_root"
jdbc_driver_library => "/etc/logstash/mysql-connector-j-8.0.31/mysql-connector-j-8.0.31.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "100"
jdbc_default_timezone => "Asia/Ho_Chi_Minh"
codec => plain { charset => "UTF-8"}
tracking_column => "updated_at"
record_last_run => true
clean_run => true
statement => "SELECT id,name, email,created_at, updated_at FROM users WHERE updated_at > :sql_last_value"
schedule => "* * * * *"
type => "users"
}
}
filter {
fingerprint {
method => "SHA1"
source => "id"
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "%{type}"
document_id => "%{[event][hash]}"
}
}
Code language: PHP (php)
Khởi động lại logstash
sudo systemctl restart logstash
Kết quả:
