1、环境,基于java开发环境(jdk1.8及以上,node.js)
2、首先下载elk三剑客(这里以7.6.2为例子,elk需要版本统一)
连接:https://www.elastic.co/cn/downloads/past-releases#elasticsearch (e)
https://www.elastic.co/cn/downloads/past-releases#logstash (l)
https://www.elastic.co/cn/downloads/past-releases#kibana (k)
3、本着开箱即用的原则.安装完即可使用
接下来逐个讲解:
elasticsearch 安装完即可使用,来到bin目录下双击elasticsearch.bat启动elasticsearch。
如果想分词查询,可下载ik分词器插件,地址https://github.com/medcl/elasticsearch-analysis-ik(7.6.2)
下载完的插件放到plugins/ik目录下。(ik文件夹需要新建,并且需要重新启动elasticsearch,方可生效);
访问 localhost:9200
logstash 根目录下新建文件夹mysql_es(可因个人喜好命名)
在mysql_es文件夹下新建mysql.conf文件,all.sql 文件(需要同步的sql。)
sql如下
SELECt * from tablea a
WHERe a.index_time CONVERT_TZ(:sql_last_value, ‘+00:00’, ‘+00:00’)
注:index_time 是数据库中的实实在在的一个时间戳,是设计数据库时自己设置的。可根据自己的数据库指定某个字段时间。
官网上下载一个mysql 驱动放到本文件中,我这里使用的是mysql-connector-java-5.1.25.jar。重点:配置mysql.conf 文件
input { stdin { } # 班级 jdbc { type => "test" # 数据库 jdbc_connection_string => "jdbc:mysql://localhost:3306/test?tinyInt1isBit=false&useUnicode=true&characterEncoding=UTF-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull" jdbc_user => "root" jdbc_password => "root" jdbc_driver_library => "D:logstashlogstash-7.6.2mysqletc/mysql-connector-java-5.1.25.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" codec => plain { charset => "UTF-8"} jdbc_default_timezone => "Asia/Shanghai" #时区 lowercase_column_names => false statement_filepath => "D:logstashlogstash-7.6.2mysqletcsqlall.sql" jdbc_paging_enabled => "true" jdbc_page_size => "5000" # 不使用字段值追踪,直接用该次更新的当前时间赋值到:sql_last_value,然后在sql中用创建时间和更新时间 >= :sql_last_value use_column_value => false tracking_column => index_time record_last_run => true last_run_metadata_path => "D:logstashlogstash-7.6.2mysql_eslastlast.txt" # 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新 schedule => "* * * * *" } filter { ruby { code => "event.timestamp.time.localtime" } date { match => ["time", "yyyy-MM-dd HH:mm:ss"] } json { source => "message" remove_field => ["message"] } } output { if [type] == "test" { elasticsearch { hosts => "localhost:9200" # index名 index => "test" # 需要关联的数据库中有有一个id字段,对应索引的id号 document_id => "%{id} } } stdout { codec => json_lines } }
配置完需要在bin 目录下新建一个rundefault.bat文件(前缀无所谓)
贴上 logstash -f …/mysql_es/mysql.conf即可双击运行。在黑窗口中可看到sql,如果没有,9层以上是配置错误。需要检查配置。
kibana 拆箱即用,直接运行bin目录下的kibana.bat即可
访问 localhost:5601
kibana使用的搜索语法
右侧有数据及代表本地的es已经同步完毕。
也可以下载elasticsearch-head来查看数据是否同步完毕。
4、elasticsearch-head需要前端环境,需要前端依赖。可以自行百度。安装完会有跨域问题。需要配置elasticsearch.yml文件 如下
http.cors.enabled: true
http.cors.allow-origin: “*”
即可解决跨域问题
安装完访问localhost:9100
5、可能会遇到的问题
logstash需要执行多个配置文件,将多个conf文件放到同一个目录conf下
然后执行命令 logstash -f …/mysql_es/conf/
x
6、 需要注意的是,windows适合自己本地调试。
logstash 生效时间最快是分钟级。不适合大量数据的应用。
不支持物理删除,物理删除es中还会有数据,无人通知es删除数据。
支持逻辑删除。
logstash 可做增量和全量。
以上就是elk 基于windows的配置。更多玩法需要自己摸索。欢迎交流。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)