一、elastic search搭建
1、环境centos->usr目录下创建elk目录,然后在elk目录下分别创建es目录,kibana目录,logstash目录
2、下载对应的.tar.gz包并解压。
elasticsearch-6.5.4, kibana-6.5.4-linux-x86_64, logstash-6.5.4
(这里最好三者的版本号要一致)
3、es从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户
创建用户组:
groupadd elsearch
创建用户,-g代表把es用户分配到es用户组中,-p代表给es用户设置密码为es123456:
useradd elkroot -g elsearch -p 123456
修改权限,更改elasticsearch文件夹以及内部文件的所属用户以及组为es,-R表示逐级(N层目录)
chown -R elsearch:elsearch /usr/elk/es/elasticsearch-6.5.4
su elkroot
4、修改config目录下的文件elasticsearch.yml
cluster.name: my-application #集群名称
#node.name: node-1 #节点名称
path.data: /usr/elk/es/data/elasticsearch #文件路径
path.logs: /usr/elk/es/logs/elasticsearch #日志路径
network.host:0.0.0.0 #服务IP地址
5、给用户elsearch授予路径权限
chown elkroot:elsearch -R ./*
6、启动报错解决方案:
2、ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [3797] for user [elsearch] is too low, increase to at least [4096]
ElasticSearch启动报错,bootstrap checks failed
修改elasticsearch.yml配置文件,允许外网访问。
vim config/elasticsearch.yml
network.host: 0.0.0.0
启动失败,检查没有通过,报错
[2018-05-18T17:44:59,658][INFO ][o.e.b.BootstrapChecks ] [gFOuNlS] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
编辑 /etc/security/limits.conf,追加以下内容;
-
soft nofile 65536
-
hard nofile 65536
此文件修改后需要重新登录用户,才会生效
[2]: max number of threads [3797] for user [elsearch] is too low, increase to at least [4096]
-
soft nproc 4096
-
hard nproc 4096
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p
重新启动,成功。
7、analysis-ik 6.5.3(中文分词器)
安装执行命令:
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.3/elasticsearch-analysis-ik-6.5.3.zip
8、启动命令: ./bin/elasticsearch
后台启动: ./bin/elasticsearch -d
使用ps aux|grep elasticsearch可以查看是否启动
二、Logstash实现mysql同步数据到elasticsearch
- 安装插件
由于这里是从mysql同步数据到elasticsearch,所以需要安装jdbc的入插件和elasticsearch的出插件:logstash-input-jdbc、logstash-output-elasticsearch
logstash插件安装命令
cd logstash-6.5.4/bin
./logstash-plugin install logstash-input-jdbc
./logstash-plugin install logstash-output-elasticsearch
2.下载mysql的连接库jar包(版本库):
将jar包"mysql-connector-java-8.0.17.jar"
放至logstash-7.6.2\logstash-core\lib\jars目录下
在config目录下,创建配置文件(logstash-mysql-es.conf):
添加如下配置
input {
jdbc {
# mysql相关jdbc配置
jdbc_connection_string => "jdbc:mysql://192.168.3.31:3306/logimis.iot?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
jdbc_user => "userid"
jdbc_password => "yourpwd"
# jdbc连接mysql驱动的文件目录
jdbc_driver_library => "./config/mysql-connector-java-8.0.17.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => true
jdbc_page_size => "50000"
jdbc_default_timezone =>"Asia/Shanghai"
# mysqlSQL语句
statement => "select im_id,im_name, im_updatetime from iot_menu where im_updatetime>= :sql_last_value "
# 也可以使用文件
# statement_filepath => "./config/jdbc.sql"
# 这里类似crontab,可以定制定时操作,比如每分钟执行一次同步(分 时 天 月 年)
schedule => "* * * * *"
#type => "jdbc"
# 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
#record_last_run => true
# 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
use_column_value => true
# 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 一般是mysql主键
tracking_column => "im_updatetime"
tracking_column_type => "timestamp"
last_run_metadata_path => "./logstash_capital_bill_last_id"
# 是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
clean_run => false
#是否将 字段(column) 名称转小写
lowercase_column_names => false
#分页
#jdbc_paging_enabled => true
#jdbc_page_size => 10000
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200"
#索引名可以理解为数据库
index => "logimis_iot"
document_id => "%{im_id}"
#类型可以理解为表
document_type => "iot_menu"
#template_overwrite => true
}
#这里输出调试,正式运行时可以注释掉
stdout {
# codec => json_lines
}
}
运行一下命令
./logstash-6.5.4/bin/logstash -f ./logstash-6.5.4/config/logstash-mysql-es.conf
后台执行
nohup ./logstash-6.5.4/bin/logstash -f ./logstash-6.5.4/config/logstash-mysql-es.conf > logs/logstash.out 2>&1 &
停止 logstash
ps -aux|grep logstash
三、Kibana 配置文件 kibana.yaml修改
允许远程访问
server.host: “0.0.0.0”
elasticsearch.username: “elsearch”
elasticsearch.password: “elsearch”
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
ps -ef|grep kibana
ps -ef|grep 5601
都找不到
尝试 使用 fuser -n tcp 5601
kill -9 端口
ps -ef|grep node 或 netstat -anltp|grep 5601
启动即可 ./kibana
后台启动: nohup ./bin/kibana &