我这里的案例是elasticesearch和logstash都在虚拟机(centos6.8)上,mysql在本机windows上。
首先要先安装elasticsearch和logstash,直接到官网中找到相应的地址url,在虚拟机上通过wget命令下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.0.tar.gz
在安装这两个之前,首先要先安装jdk,建议安装jdk1.8以上的版本较好一点,因为官网文档中提示:
Elasticsearch requires at least Java 8.
安装java也是直接安装就可以了:通过命令:
yum list | grep java-1.8
可以查看能安装的java信息:
java-1.8.0-openjdk.x86_64 1:1.8.0.171-8.b10.el6_9 @updates
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.171-8.b10.el6_9 @updates
java-1.8.0-openjdk-debug.x86_64 1:1.8.0.171-8.b10.el6_9 updates
java-1.8.0-openjdk-demo.x86_64 1:1.8.0.171-8.b10.el6_9 updates
java-1.8.0-openjdk-demo-debug.x86_64 1:1.8.0.171-8.b10.el6_9 updates
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.171-8.b10.el6_9 updates
java-1.8.0-openjdk-devel-debug.x86_64 1:1.8.0.171-8.b10.el6_9 updates
我直接截取了一部分信息,可以看到,jdk是1.8以上的(第一个)
然后直接通过命令:yum install java 就可以安装了,安装完后,然后输入java -version查看下java的版本。
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode
那么就安装完了,接下来开始elasticsearch和logstash的安装:
这里两个的安装比较简单:
直接解压elasticsearch:
tar -zxvf elasticsearch-6.3.0.tar.gz
进入目录bin:执行 ./elasticsearch 就可以启动了
解压logstach:
tar -zxvf logstash-6.3.0.tar.gz
然后进入到bin目录下安装jdbc插件:
./logstash-plugin install logstash-input-jdbc
安装完后,然后在进入到config的目录下,创建配置文件jdbc.conf(自己取名即可),然后执行命令:
vim jdbc.conf打开编辑文件:输入以下内容:
input {
jdbc {
jdbc_driver_library => "/home/cjh/Desktop/connector/mysql-connector-java-8.0.11.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://192.168.0.108:3306/cjh?serverTimezone=GMT%2B8"
jdbc_user => "root"
jdbc_password => "root"
schedule => "* * * * *"
statement => "SELECT * from hot_words"
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
这里的由输入和输出构成:输入是从mysql中输入,输入是输出到elasticsearch中
输入部分:注意要加入jar包,也可以通过wget的方式进行下载:
wget http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar
然后指定绝对路径。驱动类用:
com.mysql.cj.jdbc.Driver
以前的驱动类(com.mysql.jdbc.Driver),已经过时了,基本不用了。
注意现在链接的url后要带入时区参数:
?serverTimezone=GMT%2B8
不然会报以下异常:
Java::JavaSql::SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
这些都搞定了就可以启动mysql了,注意MySQL要支持远程连接才行(如果是本地的mysql,可以不管),不然后报拒绝访问的异常:
is not allowed to connect to this MySql server
进入到mysql中,登陆:
mysql -u root -p
输入密码:root
进入到mysql数据库中:
use mysql
然后查询:
select host,user from user where user='root'
如果host的值为localhost的话,改掉它:
update user set host="%" where user='root'
重启mysql即可。
然后进入到logstash中执行:(注意如果出现防火墙问题时,要关掉(service iptables stop即可))
./bin/logstash -f ./config/jdbc.conf --config.reload.automatic
后面的参数是自动加载配置文件jdbc.conf的意思。
然后你会发现启动后有以下信息:
[2018-06-30T03:06:00,385][INFO ][logstash.inputs.jdbc ] (0.003853s) SELECT * from hot_words
说明成功了,这个时候就可以请求下es看是否将数据数据导入了:
curl -XGET http://localhost:9200/_search?pretty
然后看到输出结果:(只给一部分)
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 24,
"max_score" : 1.0,
"hits" : [
{
"_index" : "logstash-2018.06.30",
"_type" : "doc",
"_id" : "ZzAjUGQBNNg9W1-ck4gi",
"_score" : 1.0,
"_source" : {
"id" : 2,
"@version" : "1",
"@timestamp" : "2018-06-30T10:01:03.082Z",
"words" : "网红"
}
},
{
"_index" : "logstash-2018.06.30",
"_type" : "doc",
"_id" : "eTAnUGQBNNg9W1-cJohw",
"_score" : 1.0,
"_source" : {
"id" : 4,
"@version" : "1",
"@timestamp" : "2018-06-30T10:05:00.267Z",
"words" : "陈剑灰"
}
},
{
"_index" : "logstash-2018.06.30",
"_type" : "doc",
"_id" : "ajAkUGQBNNg9W1-ca4jg",
"_score" : 1.0,
"_source" : {
"id" : 1,
"@version" : "1",
"@timestamp" : "2018-06-30T10:02:01.381Z",
"words" : "陈剑辉"
}
}}
至此:完成了。说明下:@version和@timestamp这两个参数是logstash插入的,不是mysql中的数据。