之前在Windows上尝试过搭建ELK环境,并将MySQL或SQLServer中的数据导入到Elasticsearch中。现在用Docker提供的镜像可以快速的完成这一操作。
- 环境说明
系统:Windows 10 企业版
MySQL:MySQL 5.7(官方下载链接)
MySQL驱动:mysql-connector-java-5.1.44-bin.jar(官方下载链接)
Docker for Windows:Docker Community Edition for Windows(Docker官网下载) - MySQL的安装与设置
MySQL的安装与设置,请参照通过Logstash由MySQL和SQL Server向Elasticsearch导入数据。
需要注意的是:root的From Host需要设置为%
,如下图:否则,logstash连接数据库时会被拒绝连接。
另外记得创建一个测试库和表,用于测试logstash的导入功能。 -
docker-compose.yml
创建一个空的文件夹,用于存储用到的配置文件和驱动程序。如:C:\RunDocker\ELK
(后面简称该文件夹
)
然后在该文件夹
下创建docker-compose.yml
,并进行编辑,内容如下:version: "2.2" services: elasticsearch: image: elasticsearch ports: - "9200:9200" - "9300:9300" kibana: image: kibana ports: - "5601:5601" links: - elasticsearch depends_on: - elasticsearch logstash: image: logstash links: - elasticsearch volumes: - ./:/configdir command: logstash -f /configdir/mysql.conf depends_on: - elasticsearch
-
mysql.conf
在该文件夹
下创建mysql.conf
,并进行编辑,内容如下:input { jdbc { jdbc_driver_library => "/configdir/mysql-connector-java-5.1.44-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://123.12.1.123:3306/forelk?autoReconnect=true&useSSL=false" jdbc_user => "root" jdbc_password => "123qwe4r" schedule => "* * * * *" jdbc_default_timezone => "Asia/Shanghai" statement => "SELECT * FROM elktable;" } } output { elasticsearch { index => "elkdb" document_type => "elktable" document_id => "%{elkid}" hosts => ["123.12.1.123:9200"] } }
说明:
IP123.12.1.123
需要替换成你本地的IP;123qwe4r
需要替换成你本地MySQL的密码;
任务计划schedule => "* * * * *"
的值根据自己的需求进行更改; - 驱动程序
将下载好的驱动程序mysql-connector-java-5.1.44-bin.jar
拷贝到该文件夹
。 - 启动
通过Docker
的Kitematic
左下角的DOCKER CLI
启动PowerShell工具,然后进入到该文件夹
,执行命令:docker-compose up
即可看到Elasticsearch、Kibana、Logstash的容器依次启动。在PowerShell里可以看到导入数据的操作记录,如下图:然后在本地服务器访问
http://localhost:5601
,在Dev Tools下执行查询命令,即可看到导入的结果,如下图:
如果遇到其他问题,请自行谷歌百度。
如需转载,请注明原文链接:https://segmentfault.com/a/11...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。