一、windows环境
- 安装logstash:https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.zip 解压即可
- 测试安装是否成功:logstash -e 'input { stdin { } } output { stdout {} }' (在解压目录bin下)
- 安装logstash-input-jdbc插件 :
- 、修改Gemfile文件下镜像地址为https://gems.ruby-china.org或者https://ruby.taobao.org
- 、进入bin目录下,执行logstash-plugin install logstash-input-jdbc(若出现错误则执行logstash-plugin install --no-verify logstash-input-jdbc)
- 同步mysql数据到kafka:
- 、新建配置文件XXX.conf
- 、添加配置(详情见附件)
- 运行logstash -f xxx.conf启动
- Linux环境
- 安装logstash:wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.zip
- 下载完之后:unzip logstash-5.5.0.zip 之后将文件移动到自己存放的目录即可。
- 测试一下是否安装成功:cd bin ./logstash -e 'input { stdin { } } output { stdout {} }' 如图
4、安装logstash-input-jdbc插件 :
(1)、修改Gemfile文件下镜像地址为https://gems.ruby-china.org/或者https://ruby.taobao.org/
(2)、进入bin目录下,执行logstash-plugin install logstash-input-jdbc(若出现错误则执行logstash-plugin install --no-verify logstash-input-jdbc)
5、同步mysql数据到kafka:
(1)、新建配置文件XXX.conf
(2)、添加配置(详情见附件)
(3)运行./logstash -f xxx.conf启动,如下图:
logstash对于数据对接很强大 ,比如集群日志集中存储方便管理以及查问题,我用到的业务场景是用户的操作记录日志分析,因为分析这边是大数据的范围,涉及到流式计算等问题,相较于分库分表的mysql,kafka显然更为切合场景,以下为配置文件详情:
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://172.0.0.1:3306/test"
jdbc_user => "shen"
jdbc_password => "shenyanwei"
jdbc_driver_library => "/data/logstash/mysql-connector-java-5.1.6.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "SELECT tab1.*,tab2.action,tab2.chname,tab2.flag,tab2.relation_page,tab2.system,tab2.type,tab2.uri,tab3.cnName,tab3.email,tab3.orgCode from BEHAVIOR_RECORD tab1 LEFT JOIN BEHAVIOR_MAPPING tab2 ON tab1.action_id=tab2.id LEFT JOIN USER tab3 ON tab1.ops_user=tab3.name where tab1.id > :sql_last_value order by tab1.id"
use_column_value => true
tracking_column => "id"
tracking_column_type => "numeric"
record_last_run => true
#此配置指定上面cloumn增量条件列值存放位置,记得给初始值如:--- 0
last_run_metadata_path => "/data/logstash/number.log"
schedule => "* * * * *"
type => "jdbc"
}
此处多数据源省略。。。。
}
filter {
date {
match => [ "start_time", "yyyy-MM-dd HH:mm:ss" ]
timezone => "Asia/Shanghai"
}
date {
match => [ "end_time", "yyyy-MM-dd HH:mm:ss" ]
timezone => "Asia/Shanghai"
}
}
output {
stdout {
codec => json_lines
}
file {
path => "/data/logstash/file.log"
}
kafka {
kafka topic
topic_id => "test"
#kafka地址
bootstrap_servers => "localhost:9092"
#json交互
codec => "json"
client.id
client_id => "test2"
}
}
中途值得注意的是logstash不同版本对于jdk版本有不同要求,高版本的需要jdk1.8才行,另外高版本的logstash貌似已经集成logstash-input-jdbc插件,故而安装步骤高版本可以省略
以上为本人实践记录,大家可以在有困难时参考一二,有不对的地方也欢迎指正交流,共同进步