博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安装logstash7.3.2遇到的坑及解决方案
阅读量:4290 次
发布时间:2019-05-27

本文共 11333 字,大约阅读时间需要 37 分钟。

 一、安装logstash

1.1安装logstash7.3.2版本

     国庆节的前几天下载了elasticsearch和kibana,当时elastic stack系列最新版本还是7.3.2,当时只下载了elasticsearch和kibana的最新版7.3.2练习,今天,项目中需要用到logstash收集数据信息,进入官网,发现就在今天10月2日,官网发布了新版本7.4版本,我们知道使用ELK,需要版本一致,这下好了,发布了7.4版本,一时不知道去哪里下载7.3.2版本了。

找了好久,终于找到了了一个方法:

使用这些url下载目前可以完美解决下载ELK以往版本的问题:

根据所需要的版本,更换版本号,即可下载。

 - https://artifacts.elastic.co/downloads/kibana/kibana-6.7.2-linux-x86_64.tar.gz

 - https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.2-linux-x86_64.tar.gz

 -  https://artifacts.elastic.co/downloads/logstash/logstash-6.7.2.tar.gz

 - https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.tar.gz

windows版本,将tar.gz替换成zip就可以了。

使用这种方法成功下载了window版本的logstash7.3.2版本。

 1.2 安装logstash-input-jdbc

logstash-input-jdbc 是ruby开发的,先下载ruby并安装

下载地址:

官网下载选择有好几种,选择不带开发工具的安装包即可,安装ruby2.6.4(x64),这里不需要安装带开发工具的ruby,因为带开发工具的ruby安装包邮100多兆,官网下载非常缓慢,而不带开发工具的版本,只有十几兆,下载相对快一些,使用迅雷要比使用chrome下载快一些。

下载之后是一个exe文件,安装即可。

安装完成查看是否安装成功,在cmd窗口输入:ruby -v

出现版本号2.6.4,安装成功。

logstash7.x版本本身不带logstash-input-jdbc插件,需要手动安装

进入logstash安装目录的bin目录下,输入:logstash-plugin.bat  install logstash-input-jdbc

 

 注意,使用批处理文件logstash-plugin.bat安装插件,logstash的安装路径不能有中文,我今天安装的时候,因为使用的是迅雷下载的,所以文件默认放在了迅雷下载这个目录下,即路径为D:\迅雷下载\logstash-7.3.2\bin

然后安装插件,就会报错:

ArgumentError: invalid byte sequence in US-ASCII =~ at org/jruby/

1.3 创建模板文件

Logstash的工作是从MySQL中读取数据,向ES中创建索引,这里需要提前创建mapping的模板文件以便logstash
使用。
在logstach的config目录创建xiaomifeng1010_template.json,内容如下:
目录是:D:/ELK/logstash-7.3.2/config/xiaomifeng1010_template.json

{   "mappings" : {      "doc" : {         "properties" : {            "charge" : {               "type" : "keyword"            },            "description" : {               "analyzer" : "ik_max_word",               "search_analyzer" : "ik_smart",               "type" : "text"            },            "end_time" : {               "format" : "yyyy-MM-dd HH:mm:ss",               "type" : "date"            },            "expires" : {               "format" : "yyyy-MM-dd HH:mm:ss",               "type" : "date"            },            "grade" : {               "type" : "keyword"            },            "id" : {               "type" : "keyword"            },            "mt" : {               "type" : "keyword"            },            "name" : {               "analyzer" : "ik_max_word",               "search_analyzer" : "ik_smart",               "type" : "text"            },            "pic" : {               "index" : false,               "type" : "keyword"            },            "price" : {               "type" : "float"            },            "price_old" : {               "type" : "float"            },            "pub_time" : {               "format" : "yyyy-MM-dd HH:mm:ss",               "type" : "date"            },            "qq" : {               "index" : false,               "type" : "keyword"            },            "st" : {               "type" : "keyword"            },            "start_time" : {               "format" : "yyyy-MM-dd HH:mm:ss",               "type" : "date"            },            "status" : {               "type" : "keyword"            },            "studymodel" : {               "type" : "keyword"            },            "teachmode" : {               "type" : "keyword"            },            "teachplan" : {               "analyzer" : "ik_max_word",               "search_analyzer" : "ik_smart",               "type" : "text"            },            "users" : {               "index" : false,               "type" : "text"            },            "valid" : {               "type" : "keyword"            }         }      }   },   "template" : "xiaomifeng1010"}

1.4 配置mysql.conf

在logstash的config目录下配置mysql.conf文件供logstash使用,logstash会根据mysql.conf文件的配置的地址从
MySQL中读取数据向ES中写入索引。
参考
配置输入数据源和输出数据源。

input {  stdin {  }  jdbc {  jdbc_connection_string => "jdbc:mysql://localhost:3306/xiaomifeng1010?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"  # the user we wish to excute our statement as  jdbc_user => "root"  jdbc_password => "123456"  # the path to our downloaded jdbc driver    jdbc_driver_library => "C:\Users\MSI\.m2\repository\mysql\mysql-connector-java\5.1.6\mysql-connector-java-5.1.6.jar"  # the name of the driver class for mysql  jdbc_driver_class => "com.mysql.jdbc.Driver"  jdbc_paging_enabled => "true"  jdbc_page_size => "50000"  #要执行的sql文件  #statement_filepath => "/conf/course.sql"  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:/ELK/logstash-7.3.2/config/logstash_metadata"  }}output {  elasticsearch {  #ES的ip地址和端口  hosts => "localhost:9200"  #hosts => ["localhost:9200","localhost:9202","localhost:9203"]  #ES索引库名称  index => "xc_course"  document_id => "%{id}"  document_type => "doc"  template =>"D:/ELK/logstash-7.3.2/config/xiaomifeng1010_template.json"  template_name =>"xiaomifeng1010"  template_overwrite =>"true"  }  stdout { #日志输出  codec => json_lines  }}

 说明:

1、ES采用UTC时区问题
ES采用UTC 时区,比北京时间早8小时,所以ES读取数据时让最后更新时间加8小时
where timestamp > date_add(:sql_last_value,INTERVAL 8 HOUR)
2、logstash每个执行完成会在D:/ELK/logstash-7.3.2/config/logstash_metadata记录执行时间下次以此
时间为基准进行增量同步数据到索引库。

配置数据源以及查询的表:

DROP TABLE IF EXISTS `course_pub`;CREATE TABLE `course_pub` (  `id` varchar(32) NOT NULL COMMENT '主键',  `name` varchar(32) NOT NULL COMMENT '课程名称',  `users` varchar(500) NOT NULL COMMENT '适用人群',  `mt` varchar(32) NOT NULL COMMENT '大分类',  `st` varchar(32) NOT NULL COMMENT '小分类',  `grade` varchar(32) NOT NULL COMMENT '课程等级',  `studymodel` varchar(32) NOT NULL COMMENT '学习模式',  `teachmode` varchar(32) DEFAULT NULL COMMENT '教育模式',  `description` text NOT NULL COMMENT '课程介绍',  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间戳logstash使用',  `charge` varchar(32) NOT NULL COMMENT '收费规则,对应数据字典',  `valid` varchar(32) NOT NULL COMMENT '有效性,对应数据字典',  `qq` varchar(32) DEFAULT NULL COMMENT '咨询qq',  `price` float(10,2) DEFAULT NULL COMMENT '价格',  `price_old` float(10,2) DEFAULT NULL COMMENT '原价格',  `expires` varchar(32) DEFAULT NULL COMMENT '过期时间',  `start_time` varchar(32) DEFAULT NULL COMMENT '课程有效期-开始时间',  `end_time` varchar(32) DEFAULT NULL COMMENT '课程有效期-结束时间',  `pic` varchar(500) DEFAULT NULL COMMENT '课程图片',  `teachplan` text NOT NULL COMMENT '课程计划',  `pub_time` varchar(32) DEFAULT NULL COMMENT '发布时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;/*Data for the table `course_pub` */insert  into `course_pub`(`id`,`name`,`users`,`mt`,`st`,`grade`,`studymodel`,`teachmode`,`description`,`timestamp`,`charge`,`valid`,`qq`,`price`,`price_old`,`expires`,`start_time`,`end_time`,`pic`,`teachplan`,`pub_time`) values ('297e7c7c62b888f00162b8a7dec20000','test_java基础33','java爱好者d','1-3','1-3-3','200002','201002',NULL,'test_java基础33test_java基础33test_java基础33','2018-04-27 22:57:24','203002','204002','32432',55.00,NULL,NULL,NULL,NULL,'group1/M00/00/02/wKhlQFrQfNqAL0d_AALDG1Ia4xE439.png','','2018-04-26 16:57:23'),('297e7c7c62b888f00162b8a965510001','test_java基础','test_java基础','1-3','1-3-2','200001','201001',NULL,'test_java基础2test_java基础2test_java基础2test_java基础2test_java基础2test_java基础2test_java基础2test_java基础2test_java基础2test_java基础2','2018-04-27 22:57:24','203001','204001','443242',NULL,NULL,NULL,NULL,NULL,'group1/M00/00/00/wKhlQFrZS2aACA0LAAAxkpcK7CQ874.jpg','java基础语法 ','2018-04-25 19:11:35'),('297e7c7c62b8aa9d0162b8ab13910000','java基础3','java基础3','1-3','1-3-2','200001','201001',NULL,'java基础3java基础3java基础3java基础3java基础3java基础3','2018-04-27 22:57:24','203001','204001',NULL,NULL,NULL,NULL,NULL,NULL,'group1/M00/00/00/wKhlQFrZS2aACA0LAAAxkpcK7CQ874.jpg','','2018-04-26 17:10:55'),('402885816243d2dd016243f24c030002','大数据','具有一定的java基础','1-6','1-6-1','200001','201001',NULL,'111111大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据大数据','2018-05-26 16:49:33','203002','204001',NULL,99.00,199.00,NULL,NULL,NULL,'group1/M00/00/02/wKhlQFrQfNqAL0d_AALDG1Ia4xE439.png','第一节 ','2018-04-25 19:11:35'),('4028858162e0bc0a0162e0bfdf1a0000','人工智能+python','小白','1-6','1-6-5','200002','201001',NULL,'人工智能+python非常不错!!!','2018-04-27 22:57:24','203002','204002','45323453',198.00,NULL,NULL,NULL,NULL,'group1/M00/00/00/wKhlQFrZS2aACA0LAAAxkpcK7CQ874.jpg','','2018-04-25 19:11:35'),('4028e581617f945f01617f9dabc40000','Bootstrap开发框架','','1-1','1-1-1','200002','201001',NULL,'Bootstrap是由Twitter推出的一个前台页面开发框架,在行业之中使用较为广泛。此开发框架包含了大量的CSS、JS程序代码,可以帮助开发者(尤其是不擅长页面开发的程序人员)轻松的实现一个不受浏览器限制的精美界面效果。','2018-05-05 19:24:41','203002','204001','4455432',0.01,NULL,NULL,NULL,NULL,'group1/M00/00/01/wKhlQFqO0OGAFyhGAAA-8SWa8Qc537.jpg','计算机原理 计算机硬件 计算机软件 计算机编程入门 java语法介绍 Hello World 数据库编程 操作系统原理 操作系统类型介绍 操作系统原理 ','2018-04-25 19:11:35'),('4028e58161bcf7f40161bcf8b77c0000','spring cloud实战','所有人','1-3','1-3-2','200003','201001','','本课程主要从四个章节进行讲解: 1.微服务架构入门 2.spring cloud 基础入门 3.实战Spring Boot 4.注册中心eureka。','2018-04-27 22:57:24','203002','204002','54354353',0.01,NULL,NULL,NULL,NULL,'group1/M00/00/01/wKhlQFqO2HqAA6sPAAArlhJed-w088.jpg','微服务架构入门 为什么要使用微服务:单体架构的特点 为什么要使用微服务:微服务的优缺点 spring cloud 基础入门 为什么要选择spring cloud? 为什么springcloud要设计一套新的版本升级规则? 实战-Spring Boot 为什么越来越多的开发者选择使用spring boot?它解决了什么问题? spring boot的入门例子 注册中心Eureka 微服务架构为什么需要注册中心,它解决了什么问题?  一个Eureka注册中心的入门例子 ','2018-04-25 19:11:35'),('4028e58161bd22e60161bd23672a0001','Javascript之VueJS','所有人','1-1','1-1-9','200002','201001','','Vue系列课程:从Vue1.0讲到Vue2.0,从理论讲到实战,理论与案例巧妙结合,让课程更容易理解!','2018-04-27 16:57:24','203002','204001','4324322',0.01,NULL,NULL,NULL,NULL,'group1/M00/00/01/wKhlQFqO4MmAOP53AAAcwDwm6SU490.jpg','Vuejs 第一讲 第一节 vue基础、常用指令、bootstrap+vue的简易留言 第二节 属性和事件、模板、交互、案例 Vuejs 第二讲 第一节 计算属性的使用、vue实例的简单方法、提高循环的性能,让重复数据显示出来 第二节 自定义过滤器、自定义指令 、自定义键盘事件、数据的监听 Vuejs 第三讲 ','2018-04-25 19:11:35'),('4028e58161bd3b380161bd3bcd2f0000','Redis从入门到项目实战','','1-3','1-3-2','200002','201001',NULL,'redis在当前的大型网站和500强企业中,已被广泛应用。 redis是基于内存的key-value数据库,比传统的关系型数据库在性能方面有非常大的优势。 肖老师这套视频,精选了redis在实际项目中的十几个应用场景。通过本课程的学习,可以让学员快速掌握redis在实际项目中如何应用。 作为架构师,redis是必须要掌握的技能!','2018-05-16 18:55:36','203002','204001','32432432',0.01,NULL,NULL,NULL,NULL,'group1/M00/00/01/wKhlQFqO5yqAQMozAAAqor3lyz0082.jpg','第一章:redis简介 第一节 NoSQL简介 第二节 认识Redis 第二章:redis的安装与配置 第三章:Redis数据操作 第四章:Redis进阶操作 第五章:Redis主从配置 ','2018-04-25 19:11:35');

创建的数据库xiaomifeng1010,数据表course_pub

 1.5 测试

启动logstash.bat:
直接在cmd窗口输入logstash.bat会报错:

sending Logstash's logs to D:/ELK/logstash-7.3.2/logs which is now configured     via log4j2.properties    ERROR: Pipelines YAML file is empty. Location: D:/kibana/logstash-7.3.2/config/p    ipelines.yml    usage:      bin/logstash -f CONFIG_PATH [-t] [-r] [] [-w COUNT] [-l LOG]      bin/logstash --modules MODULE_NAME [-M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAM    E.VARIABLE_NAME=VALUE"] [-t] [-w COUNT] [-l LOG]      bin/logstash -e CONFIG_STR [-t] [--log.level fatal|error|warn|info|debug|trace    ] [-w COUNT] [-l LOG]      bin/logstash -i SHELL [--log.level fatal|error|warn|info|debug|trace]      bin/logstash -V [--log.level fatal|error|warn|info|debug|trace]      bin/logstash --help    [2018-12-14T16:16:10,809][ERROR][org.logstash.Logstash    ] java.lang.IllegalSta    teException: Logstash stopped processing because of an error: (SystemExit) exit

会提示pipeline.yml文件为空白,该文件默认情况下,全文注释,所以直接启动logstash.bat,找不到pipeline,报错。

打开pipeline.yml文件

 

然后再次启动logstash.bat

 

开始测试mysql.conf文件

 

数据已经全部查询出来了

 

转载地址:http://wfhgi.baihongyu.com/

你可能感兴趣的文章
阿里巴巴Java开发规约插件全球首发!
查看>>
StringRedisTemplate常用操作 / Redis中删除过期Key的三种策略
查看>>
fastdfs 图片服务器 使用java端作为客户端上传图片 / 【FastDFS专题】fastdfs使用实战(概念篇)
查看>>
Java互联网架构-Redis分布式缓存架构实现与原理解析
查看>>
让数据库不再成为业务发展瓶颈——分布式数据库架构设计
查看>>
java多线程有哪些实际的应用场景?
查看>>
分布式集群Session共享~多个tomcat7+redis的session共享实现
查看>>
实例|如何从两个List中筛选出相同的值
查看>>
搭建ECS云服务器(5)设置nginx+fastdfs+tomcat+redis开启自启动
查看>>
SSO单点登录的发展由来以及实现原理
查看>>
阿里巴巴,排行前10的开源项目,第一不是Dubbo!
查看>>
手把手教你新装的linux之后的必要配置(9)
查看>>
Java互联网架构-Spring分布式事务
查看>>
持久化框架:轻量级的关系型数据库中间件 Sharding-JDBC
查看>>
Java中如何实现分页功能
查看>>
简述架构演变过程中对session存储以及权限校验的不同的解决方案
查看>>
Spring Cloud是什么,和Dubbo对比如何?
查看>>
【Lucene】Apache Lucene全文检索引擎架构之入门实战
查看>>
【Lucene】Apache Lucene全文检索引擎架构之构建索引
查看>>
Apache Lucene全文检索引擎架构之搜索功能
查看>>