EKL部署:Elasticsearch + Kibana+Logstash 8.x版本部署(linux)
一、Logstash环境准备
1.1 logstash下载
# 确认位置
cd /usr/local
# 下载
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.1.2-linux-x86_64.tar.gz
# 解压
tar -zxvf logstash-8.1.2-linux-x86_64.tar.gz
# 删除安装包
rm -rf logstash-8.1.2-linux-x86_64.tar.gz
# 改名
mv logstash-8.1.2/ logstash
1.2 基础配置
# 确定位置
cd /usr/local/logstash
# 进入配置文件
vim config/logstash.yml
# 末尾直接添加
http.host: "0.0.0.0"
node.name: logstash
# 添加mysql目录
mkdir mysql
# 移动至目录
cd mysql
# 下载 驱动 mysql-connector
wget https://cdn.mysql.com//archives/mysql-connector-java-8.0/mysql-connector-java-8.0.15-1.el7.noarch.rpm
# 下载下来时rpm格式 解压
rpm2cpio mysql-connector-java-8.0.15-1.el7.noarch.rpm | cpio -div
# 把jar包移出
mv usr/share/java/mysql-connector-java-8.0.15.jar ./
# 删除多余的文件
rm -rf mysql-connector-java-8.0.15-1.el7.noarch.rpm
rm -rf usr/
# 退出mysql目录
cd ..
# 进入最终同步配置
vim config/mysql.conf
二、Logstash同步mysql配置
2.1 配置
input {
jdbc {
# mysql 数据库链接,shop为数据库名
jdbc_connection_string => "jdbc:mysql://ip/tiantiantsouti?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
# 用户名和密码
jdbc_user => ""
jdbc_password => ""
# 驱动
jdbc_driver_library => "/usr/local/logstash/mysql/mysql-connector-java-8.0.15.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
#是否分页
jdbc_paging_enabled => "true"
jdbc_page_size => "5000"
#直接执行sql语句 增量同步
statement => "select * from questions WHERE id >= :sql_last_value"
# 执行的sql 文件路径+名称
# statement_filepath => "/usr/local/logstash/mysql/question.sql"
# 是否记录某个字段值,true为我们自定义一个字段值,flase为默认的时间戳.
use_column_value => true
# 记录字段的类型默认时numeric数字还可以是timestamp
tracking_column_type => "numeric"
# 设置新的记录字段
tracking_column => "id"
# 如果是true,每次将新的id更新到指定文件中
record_last_run => true
# 关闭时是否清除记录文件,false为不清除
clean_run => false
# 保存位置
last_run_metadata_path => "/usr/local/logstash/last_time_000"
# 更新时间间隔 现在5个*这个为默认 1分钟1更新
schedule => " * * * * * "
}
}
output {
elasticsearch {
#es的ip和端口
hosts => ["http://ip:9200"]
#ES索引名称(自己定义的)
index => "index"
#设置数据的id为数据库中的字段 id需要换成mysql中的id 名必须为小写不然无法带入
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
2.2 测试
# 目录后退
cd ..
# 测试
bin/logstash -f config/mysql.conf -t
# 返回信息最后应该时这样的
Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
2.3启动
# 成功后启动
bin/logstash -f config/mysql.conf
# nohup 后台启动 两种都可
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/mysql.conf > nohup.out 2>&1 &