Logstash 介绍
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。详细
必要条件
安装Logstash前,需确保已经安装Elasticsearch,并可正常运行。 Elasticsearch安装教程
下载Logstash
下载地址 下载版本需与Elasticsearch版本一致
下载Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.12.1-linux-x86_64.tar.gz
解压Logstash
tar -zxvf logstash-7.12.1-linux-x86_64.tar.gz
下载 mysql-connector-java-8.0.27.jar
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.27.tar.gz
解压到指定目录
# 可以自定义创建目录,不存在可以先创建目录
tar -zxvf mysql-connector-java-8.0.27.tar.gz -C /softwares/logstash-7.12.1/config/mysql-connector-java
添加数据同步配置文件
在安装配置目录下,创建新的配置文件,命名为:mysqltoes.conf, 并在文件中加入以下内容:
input {
stdin {
}
jdbc {
# mysql 数据库链接,test为数据库名
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
# 用户名和密码
jdbc_user => "test_user"
jdbc_password => "test_password"
# 驱动
jdbc_driver_library => "/softwares/logstash-7.12.1/config/mysql-connector-java/mysql-connector-java-8.0.27.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 是否分页
jdbc_paging_enabled => "true"
//每页获取数量,可以根据性能按需修改
jdbc_page_size => "20000"
# 直接执行sql语句
statement => "select `id`,`title`,`content`,`author`,`description`,`keywords`,`update_date` from app_article where id > :sql_last_value"
# 是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false);
lowercase_column_names => false
# 是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中
record_last_run => true
# 需要记录查询结果某字段的值时,此字段为true,否则默认tracking_column为timestamp的值
use_column_value => true
# 查询结果某字段的数据类型,仅包括numeric和timestamp,默认为numeric
tracking_column => "id"
# 记录上次执行结果数据的存放位置
last_run_metadata_path => "/softwares/logstash-7.12.1/logs/last_id.txt"
# 是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false
clean_run => false
# 要执行的sql文件
# statement_filepath => "/softwares/logstash-7.12.1/config/export-data.sql"
# 定时配置 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
output {
elasticsearch {
# es的ip和端口
hosts => ["127.0.0.1:9200"]
# ES索引库名称
index => "test"
# 文档类型
document_type => "_doc"
# 设置数据的id为数据库中的字段
document_id => "%{id}"
}
stdout {
#日志输出
codec => json_lines
}
}
启动数据同步脚本
cd /softwares/logstash-7.12.1
bin/logstash -f config/mysqltoes.conf
看到sql查询语句,说明操作成功
如果有安装Kibana,可以打开数据界面查看索引或查询