记一次ES整合logstash所遇的坑
-
安装与ES版本的相同的logstash,例:ES版本为6.2.1,那么logstash的版本需保持一致。
下载网址:https://www.elastic.co/cn/downloads/past-releases
-
下载,下载时建议使用迅雷下载,速度较快。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fqlq5ATR-1578023832730)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103112214977.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oUivonTb-1578023832732)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103112235481.png)]
下载完成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8oCfcMOY-1578023832733)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103112331370.png)]
-
解压安装,结业完成后的目录如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2LOIAJS-1578023832734)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103112454259.png)]
-
如没有插件,则需要自己下载。
-
由于logstash-input-jdbc是ruby开发的,所以需要下载ruby,并且完成安装。
ruby下载地址:https://rubyinstaller.org/downloads/,下载如下图版本即可,安装一路next即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bEFfjsDU-1578023832735)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103113121481.png)]
-
验证ruby是否安装成功:ruby -v
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahsE5zMm-1578023832736)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103113428885.png)]
-
安装logstash-input-jdbc插件,注意进入logstash的bin目录,执行下列命令
.\logstash-plugin.bat install logstash-input-jdbc
等待安装完成即可,安装完成后查看,我自己下载的logstash压缩包解压后,已经存在logstash-input-jdbc插件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fedCsB2Q-1578023832736)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103112612841.png)]
-
-
安装完成后配置相关文件
进入logstash的安装目录下的config目录,新建配置文件mysql.conf(名称自己随便起),配置文件内容如下:
input { stdin { } jdbc { jdbc_connection_string => "jdbc:mysql://localhost:3306/xc_course?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true" jdbc_user => "root" jdbc_password => "123456" jdbc_driver_library => "D:/develop/software/apache-maven-3.6.2/repository/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50000" statement => "select * from course_pub where timestamp > date_add(:sql_last_value,INTERVAL 8 HOUR)" schedule => "* * * * *" record_last_run => true last_run_metadata_path => "D:/develop/software/elasticsearch/logstash-6.2.1/config/logstash_metadata" } } output { stdout { codec => json_lines } elasticsearch { hosts => "localhost:9200" index => "xc_course" document_type => "doc" document_id => "%{id}" } }
注意修改相应的连接,如数据库地址,数据库驱动jar包位置,我这里的配置是由于需要根据数据库的一个时间戳字段来实现实时更新,所以配置了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XAXl3x5o-1578023832737)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103114640279.png)]
logstash_metadata文件里面存放主要是更新的时间[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3EH6Htsy-1578023832738)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103114732521.png)]
-
配置完成后,进入bin目录,完成启动。
logstash -f ..\config\mysql.conf
-
启动成功如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D5N9PPac-1578023832739)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103115100715.png)]
-
当控制台打印相应数据的记录表示同步成功,然后通过head插件查看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-76U8ESoj-1578023832740)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200103115222931.png)]
最后期间我自身由于数据的一个时间字段不是date类型,导致失败,后面更新数据库字段的类型即可