需要使用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 下载之后进入bin目录运行
logstash -e "input { stdin { } } output { stdout {} }"
运行报错
could not find java; set JAVA_HOME or ensure java is in PATH
配置JAVA_HOME
我的:
正确的
3.3 然后在logstash中新建一个mysql文件夹(注意不是在bin目录下) 然后执行 logstash -e "input { stdin { } } output { stdout {} }" 依然报错
[ERROR] 2022-03-14 19:41:36.950 [main] Logstash - java.lang.IllegalStateExce
这个是因为我的在中文目录下,所以给他换一个没有中文目录就解决拉
四,安装logstash-input-jdbc插件
cmd命令在bin目录下执行
这里先声明一下:
对于logstash2.x版本是没有集成logstash-jdbc-input插件的需要我们自己去安装,如果你是2.x版本可以参考:http://blog.csdn.net/yeyuma/article/details/50240595 这位老铁的文章;
对于logstash5.x版本他自身已经集成了这个插件,不需要我们去单独安装,直接使用即可,我这里说一下与mysql进行同步的简单配置
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 connection string to our backup databse 后面的test对应mysql中的test数据库
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/p11_tubatu_pingtai?useUnicode=true&characterEncoding=UTF8&serverTimezone=UTC&useSSL=false" # 可修改
# the user we wish to excute our statement as
jdbc_user => "root" # 自己的用户名
jdbc_password => "123" # 自己的密码
# the path to our downloaded jdbc driver
jdbc_driver_library => "F:/es/logstash-7.7.0/mysql/mysql-connector-java-8.0.20/mysql-connector-java-8.0.20.jar" # 自己的jar数据库程序位置
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "500"
#以下对应着要执行的sql的绝对路径。
statement => "SELECT * FROM `article` " # 加入的sql语句 也可以文件加入
# statement_filepath => "F:/es/logstash-7.7.0/mysql/all_mysql.sql"
#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
# 两秒执行一次
schedule => "*/2 * * * * *"
#设定ES索引类型
type => "cc_type"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
#ESIP地址与端口
hosts => "127.0.0.1:9200"
#ES索引名称(自己定义的)
index => "cc_article"
#自增ID编号
document_id => "%{id}"
}
stdout {
#以JSON格式输出
codec => json_lines
}
}
全量配置
# 读取数据源
input {
stdin { }
jdbc {
# 数据连接地址(你要连接哪个数据库)
jdbc_connection_string => "jdbc:mysql://localhost:3306/springcloud"
# 自己数据库用户名
jdbc_user => "root"
# 自己数据库密码
jdbc_password => "root"
# 驱动位置(自己电脑驱动的位置)
jdbc_driver_library => "D:\install\develop\ELK\logstash-7.6.2\logstash-7.6.2\bin\mysql-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:\es\logstash-6.4.3\data\.lock再次运行即可
报错
F:\es\logstash-6.4.3\bin>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文件删除
# 在kibana中输入进行查询
GET _search
{
"query": {
"match": {
"_index":"cc_index" # 自己的索引
}
}
}
}