1.logstash安装
1、Windows环境
1.下载logstash压缩包(.zip),解压后进入bin目录
在该目录下输入cmd,
进入控制台,输入:
logstash -e 'input{stdin{}} output{stdout{}}'
可验证是否运行成功
aaa
2021-04-15T11:35:28.946Z DESKTOP-AS6S9D3 aaa
bbbb
2021-04-15T11:35:31.968Z DESKTOP-AS6S9D3 bbbb
将MySQL数据同步到elasticsearch:
1.创建MySQL.conf文件(注意保存设置编码格式为utf-8)
文件内容为:
input {
stdin { }
jdbc {
#注意mysql连接地址一定要用ip,不能使用localhost等 将下列修改为自己的主机和用户名密码
jdbc_connection_string => "jdbc:mysql://192.168.217.130:3306/test"
jdbc_user => "root"
jdbc_password => "123456"
#驱动的位置
jdbc_driver_library => "D:\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "500"
#执行的语句
statement => "SELECT * FROM user"
schedule => "* * * * *"
}
}
output {
stdout {
codec => json_lines
}
elasticsearch {
#注意mysql连接地址一定要用ip,不能使用localhost等
hosts => "192.168.217.130:9200"
#使用elasticsearch的索引
index => "testdb"
#使用elasticsearch的类型
document_type => "testTb"
#此处的id值为MySQL中查询出来的id
document_id => "%{id}"
}
}
2.将刚才的conf文件放置在该文件夹下(该文件夹自己创建,可将MySQL驱动放置在该文件夹下)
回到bin目录下的命令行窗口,运行下列命令即可
D:\logstash-5.6.8\bin>logstash -f ../mysqletc/logstash.conf
2.Linux环境下docker安装
1.拉取镜像,这里版本为6.5.3(注意版本不同配置可能不一样)(这里和我的elasticsearch版本不一致但是也能使用)
docker pull daocloud.io/library/logstash:6.5.3
2.启动镜像,同时映射文件夹,这样就可以把文件同步到镜像内
将/Users/work/docker/logstash/文件映射到容器的/etc/logstash/pipeline/目录下
docker run -d --name logstash1 -v /Users/work/docker/logstash/:/etc/logstash/pipeline/ daocloud.io/library/logstash:6.5.3
若出现内存不足错误,则加启动配置: -e LS_JAVA_OPTS="-Xms512m -Xmx1g"(自定义数值大小)
3.安装 jdbc 和 elasticsearch 插件
通过 docker exec -it logstash1 /bin/bash 命令进入容器内,然后在下载插件
/opt/logstash-6.5.4# bin/logstash-plugin install logstash-input-jdbc
Validating logstash-input-jdbc
Installing logstash-input-jdbc
Installation successful
/opt/logstash-6.5.4# bin/logstash-plugin install logstash-output-elasticsearch
Validating logstash-output-elasticsearch
Installing logstash-output-elasticsearch
Installation successful
4.下载mysql-connector-java的jar包,放在刚刚配置的映射/Users/work/docker/logstash/文件夹中
编写logstash的配置文件logstash.config,也放在刚刚配置的映射/Users/work/docker/logstash/文件夹中
input {
stdin { }
jdbc {
#注意mysql连接地址一定要用ip,不能使用localhost等
jdbc_connection_string => "jdbc:mysql://192.168.1.103:3307/test"
jdbc_user => "root"
jdbc_password => "123456"
#这个jar包的地址是容器内的地址
jdbc_driver_library => "/etc/logstash/pipeline/mysql-connector-java-5.1.47.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
statement => "SELECT * FROM test"
schedule => "* * * * *"
}
}
output {
stdout {
codec => json_lines
}
elasticsearch {
#注意mysql连接地址一定要用ip,不能使用localhost等
hosts => "192.168.1.103:9200"
index => "test"
document_type => "_doc"
document_id => "%{id}"
}
}
5.更改设置,容器内执行命令:
#进入config文件
cd config
#更改logstash.yml文件
vi logstash.yml
将http://elasticsearch:9200改为http://ip地址:9200
6.更改logstash启动配置
#进入config文件
cd config
#更改pipelines.yml文件
vi pipelines.yml
具体修改为,注意这个是容器内的地址配置文件的地址路径
- pipeline.id: table1
path.config: "/etc/logstash/pipeline/logstash.conf"
注:若想配置多个同步文件,如下配置即可:
- pipeline.id: table1
path.config: "/etc/logstash/pipeline/logstash.conf"
- pipeline.id: table2
path.config: "/etc/logstash/pipeline/logstash1.conf"
然后退出容器,重启logstash即可
docker restart logstash1
#具体的日志查看方式
docker logs -f --tail=30 logstash1