Đồng bộ dữ liệu sang Elasticsearch với Logstash

  • 10 Tháng Mười Một, 2022

Ở hai bài trước mình đã hướng dẫn các bạn Cài đặt ElasticSearch trên Ubuntu 20.04Hướ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ả:

0
Rất thích suy nghĩ của bạn, hãy bình luận.x