之前搭过旧版的ELk,用来做日志采集系统,后面为了便于维护,直接采用的阿里云的云服务分布式日志服务,现在由于订单表得数据量比较大,运营人员查询起来比较耗时,所以想用elk将订单集中到一个地方管理,提高查询效率;
1.安装elasticsearch 6.4.2
https://www.elastic.co/downloads/elasticsearch
官网下载就好了:
选择你要安装的版本;
下载完直接解压就好了,启动elasticsearch 时 会遇到很多的坑:
设置内存大小?必须要非root用户启动(这个可以改)
https://www.cnblogs.com/gudulijia/p/6761231.html(按照这个去处理,差不多能解决)
./bin/elasticsearch -d 后台启动,启动不报错
访问localhost:9200 出现以下内容,表示成功:
二:安装logstash
下载完解压就好了;
在目录下新建一个mysql文件夹,名字随意取,用来监听同步mysql数据;
该文件夹下需要三个文件:
mysql.conf
input {
stdin {
}
jdbc {
# mysql 数据库链接,cdy为数据库名
jdbc_connection_string => "jdbc:mysql://loaclhost:3306/cdy"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "pwd"
# 驱动
jdbc_driver_library => "/usr/local/Elasticserach/logstash-6.3.2/mysql/mysql-connector-java-5.0.2.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 执行的sql 文件路径+名称
statement_filepath => "/usr/local/Elasticserach/logstash-6.3.2/mysql/cdy-trn-consume-end-detai-tbl.sql"
# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
# 索引类型
type => "content"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch {
hosts => ["192.168.18.252:9200"]
#索引名称
index => "cmscontent"
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
然后第二个文件是数据库驱动;
第三个文件是你的要同步表得sql;
cdy-trn-consume-end-detai-tbl.sql
启动logstash 并加载mysql.conf
./logstash -f ../mysql/mysql.conf
启动成功不报错 就ok,注意mysql.conf的文件格式 要是linux的utf-8,否在在启动加载配置文件会报编码错误;
logstash启动报配置文件错误Expected one of #, input, filter, output at line 1, column 1 (byte 1) after
上面的异常就是边间编码错误,设置一下:set uncoding=utf-8
正常情况下,启动完 立马会同步你所写sql的数据,关于怎么增量更新,和全量更新,请自行去搜索相关内容,很简单的;
还有同步的数据会出现中文乱码;
三、安装kibana6.3.2
下载解压就好:
修改下conf里的配置文件,配置你要连接的elasticsearch的的ip+端口
后台启动:
nohup kibana-6.3.2-linux-x86_64/bin/kibana &
正常启动后,访问页面就会出现如下内容:
可以参照下面的方法去设置kibana
https://www.jianshu.com/p/4d65ed957e62
elasticsearch 支持java api的调用方式可以集成到自己的项目中去,在这里就不多说了;