Windows 下使用Logstash 注意点
- es 与logstash 的版本是严格对应的,基本是上是一一对应,比如es的版本是8.11.4一般都会有一个logstash8.11.4与之对应。总之别下错,也不要头铁去试兼不兼容,省的麻烦
- 启动logstash的前提是 你已经启动了好了es
不能进入bin目录启动logstash服务(在7.x之后的改动)那么在哪里启动呢?如图
在安装logstash的主目录下。在目录下cmd进入终端输入命令可操作logstash
启动一个空的logstash服务看是否有误(一般是无错误的)
终端手写配置文件的方法 (切记是双引号)
.\bin\logstash -e "input{stdin{}} output{stdout{}}"
读取配置文件的方法
进入config目录写一个空的服务配置文件demo.conf
文件路径如下:
demo.cof文件内容如下:
input{ stdin{} //控制台输入流插件 } output{ stdout{} //控制台输出流插件 }
启动命令如下:先把之前启动logstash服务停掉(在终端Ctrl + C)Y
.\bin\logstash -f .\config\demo.conf
是否启动成功检测,使用浏览器或者cmd 访问本机9600端口出现类似相应则代表启动成功
解释一下这个启动命令吧
- .\bin\logstash 因为目前我们是在 主目录下,然而logstash.bat 这个批处理命令在bin目录下 所有先要切换到bin目录下拿到这个命令 .bat可以省略所以是这个样子
- -e "input{stdin{}} output{stdout{}}" -e 表示 edit 就手动编辑的意思,后面就是我们编辑的配置文件内容需要用双引号标注起来 “input{stdin{}} output{stdout{}}” 内容代表着一个什么也干的服务。所以这个服务启动起来实际上也没做任何业务
- 类似的 .\bin\logstash -f .\config\demo.conf 也很容易理解 -f 表示以file的形似读取配置文件 .\config\demo.conf 表示切换到config目录下的demo.conf文件
- 总之 大家切记不要在bin目录下启动logstash服务
上一步启动了logstash服务基本上是为了检测 logstash装没装好 ,但我们下载logstash要实现的功能远不止如此,笔者这里演示一个如何从MySql数据库 导入ElasticSearch的功能
编写配置文件(最重要,网上有很多,但是笔者也试了很多,没几个是可以完美匹配windows的,也有可能是logstash版本的问题,总之会有无数的坑在这等着大家,大家也不要气馁,经验总是需要沉淀的)但苦难并不只得歌颂,所以这样提供一份能够完美运行启动服务的配置文件:
input { stdin { } jdbc { # mysql相关jdbc配置 这里需要改成你自己数据库的信息 jdbc_connection_string => "jdbc:mysql://localhost:3306/db_poem?characterEncoding=UTF-8&useSSL=false" jdbc_user => "root" jdbc_password => "" # jdbc连接mysql驱动的文件目录 笔者这个是自己manven仓库地址的驱动。也要改成你自己的 jdbc_driver_library => "D:/software/apache-maven-3.6.3/mvn_repo/com/mysql/mysql-connector-j/8.0.31/mysql-connector-j-8.0.31.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50000" # mysql语句,查询你需要导入到es的数据,这里简单演示所有数据 statement => "SELECT * from student" } } # 此处我不做过滤处理 filter {} output { #输出到elasticsearch的配置 elasticsearch { hosts => ["127.0.0.1:9200"] # 导入到es 的索引的名称,没有则会自动创建一个 index => "index_stu" document_id => "%{id}" template_overwrite => true } #这里输出调试,正式运行时可以注释掉 stdout { codec => json_lines } }
这个配置文件已经简单得不能再简单了,但是logstash的强大功能远不止如此,需要约多的功能则需要写更多的配置参数。大家可以自行学习。这里只为做演示。这个文件我还是保存在config目录下,命名为user.conf
启动命令 启动之前要先确保你的mysql 数据库与你填写的信息无误,且是却有此数据库,也确有此数据表
.\bin\logstash -f .\config\user.conf
可以看到就是把demo.conf换成我们刚写好的user.conf,其实就是这样的,logstash所有的服务都需要你自己写配置文件来决定执行什么业务,多久执行一次业务……
效果如下:(可以看到成功导入的数据)
运行命令之后,logstash会先连接数据库,然后执行sql 得到数据后进行过滤,再将剩下的数据存入es的index_stu索引中
可以到kibana中查看是否有成功导入比如:
GET /index_stu/_search { "query": { "match_all": {} } }
结果如下L可以看到mysql中数据已经导入到es中