需要使用jdk环境
拉去docker镜像
docker pull elasticsearch:7.7.0 运行 docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0
在谷歌中访问http://localhost:9200 出现以下运行成功
二,下载kibana
注意:版本必须和elasticsearch的版本一致
https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-windows-x86_64.zip 运行bin目录下的kibana.bat,启动Kibana的用户界面,访问 http://localhost:5601
三,安装logstash
必须和elasticsearch版本一直
3.1通过百度云下载链接:https://mirrors.huaweicloud.com/logstash/?C=N&O=D
3.2 下载好之后进入 然后新建一个mysql文件夹
cmd命令进入bin目录下执行
这里先声明一下:
对于logstash2.x版本是没有集成logstash-jdbc-input插件的需要我们自己去安装,如果你是2.x版本可以参考:http://blog.csdn.net/yeyuma/article/details/50240595 这位老铁的文章;
对于logstash5.x版本他自身已经集成了这个插件,不需要我们去单独安装,直接使用即可,我这里说一下与mysql进行同步的简单配置
logstash -e "input { stdin { } } output { stdout {} }"
运行报错
could not find java; set JAVA_HOME or ensure java is in PATH
配置JAVA_HOME
我的:
正确的
然后执行 logstash -e "input { stdin { } } output { stdout {} }" 依然报错
[ERROR] 2022-03-14 19:41:36.950 [main] Logstash - java.lang.IllegalStateExce 这个是因为我的在中文目录下,所以给他换一个没有中文目录就解决拉
报错
F:eslogstash-6.4.3bin>logstash -e "input { stdin { } } output { stdout {} }"
Sending Logstash logs to F:/es/logstash-6.4.3/logs which is now configured via log4j2.properties
[2022-03-15T14:33:03,940][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2022-03-15T14:33:04,011][FATAL][logstash.runner ] Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting.
[2022-03-15T14:33:04,032][ERROR][org.logstash.Logstash ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit
解决 :
将data下的.lock文件删除
四,安装logstash-input-jdbc插件
cmd命令在bin目录下执行
logstash-plugin install logstash-input-jdbc 出来以下就说明安装成功 Validating logstash-input-jdbc Installing logstash-input-jdbc Installation successful
安装插件,成功后会有提示信息
五,新建目录存放配置文件和mysql驱动jar包jdbc.conf配置 增量
input {
stdin {
}
jdbc {
# mysql相关jdbc配置
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/Demo2"
jdbc_user => "root"
jdbc_password => "142536"
# jdbc连接mysql驱动的文件目录,可去官网下载:https://dev.mysql.com/downloads/connector/j/
jdbc_driver_library => "E:/program/logstash-7.3.0/mysql/mysql-connector-java-5.1.17.jar"
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# mysql文件, 也可以直接写SQL语句在此处,如下:
statement => "SELECt * from geometry"
#statement_filepath => "/opt/logstash/conf/jdbc.sql"
# 这里类似crontab,可以定制定时操作,比如每10分钟执行一次同步(分 时 天 月 年)
#schedule => "* * * * * *"
}
}
# 此处我不做过滤处理
filter {}
output {
#输出到elasticsearch的配置
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "jdbc_c"
#将"_id"的值设为mysql的autoid字段
document_id => "%{id}"
template_overwrite => true
}
#这里输出调试,正式运行时可以注释掉
stdout {
codec => json_lines
}
}
全量配置
# 读取数据源
input {
stdin { }
jdbc {
# 数据连接地址(你要连接哪个数据库)
jdbc_connection_string => "jdbc:mysql://localhost:3306/springcloud"
# 自己数据库用户名
jdbc_user => "root"
# 自己数据库密码
jdbc_password => "root"
# 驱动位置(自己电脑驱动的位置)
jdbc_driver_library => "D:installdevelopELKlogstash-7.6.2logstash-7.6.2binmysql-connector-java-5.1.29.jar"
# 驱动名称
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 设置执行SQL
use_column_value => false
# 设置时区
jdbc_default_timezone =>"Asia/Shanghai"
#查询的数据库表
statement => "SELECt * FROM `userkibana` "
# 设置监听间隔 各字段含义(从左至右)分、时、天、月、年,全为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
output {
stdout {
codec => json_lines
}
elasticsearch {
# ES位置
hosts => "localhost:9200"
# 索引名称
index => "user1"
# 文档类型
document_type => "_doc"
# 文档ID(指你数据库表中的id,如果没有就不用写)
document_id => "%{id}"
}
}
cmd在bin目录下执行
logstash -f ../mysql/jdbc.conf
注意:如果运行报错 删除 F:eslogstash-6.4.3data.lock再次运行即可



