1. 服务分配
es1:192.168.90.22(elasticsearch+kibana)
es2:192.168.90.23(elasticsearch+cerebro)
##修改hosts文件,使其能通过域名访问
2. 搭建前先修改用户可以使用的最大文件数,最大线程,最大内存等资源使用量
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 4096
注:如果设置的数值是数值不够大,在你启动elasticsearch是就会报错,你可以根据报错信息来调整3. 安装java环境
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel java-1.8.0-openjdk-headless
4. 部署elasticsearch
yum localinstall -y elasticsearch-6.2.2.rpm
mkdir -pv /data/elk/{data,logs}
chown -R elasticsearch.elasticsearch /data/elk/
##rpm包我都提前下了,https://www.elastic.co/downloadsvim /etc/elasticsearch/elasticsearch.yml
cluster.name: elk
node.name: es1 ##两台命名不一样,我是用主机名
path.data: /data/elk/data
path.logs: /data/elk/logs
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["es1", "es2"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
(因为Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。)
##直接用service命令启动就行了
##如果你启动elasticsearch失败了,可以到http://blog.csdn.net/qq942477618/article/details/53414983 去找有没有,但然具体修改还是要看你的报错,这个也只是提供一下思路而已
5. kibana安装在es1上
yum localinstall -y kibana-6.2.2-x86_64.rpm
##修改修配置文件就可以直接启动了
[root@es1 ~]# vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "192.168.90.22"
elasticsearch.url: http://localhost:9200
[root@es1 ~]# /etc/init.d/kibana start
6. es2安装cerebro来可视化集群管理
wget https://github.com/lmenezes/cerebro/releases/download/v0.7.2/cerebro-0.7.2.zip
[root@es2 cerebro-0.7.2]# vim conf/application.conf
hosts = [
{
host = "http://192.168.90.23:9200"
name = "elk"
},
##启动
./bin/cerebro -Dhttp.port=1234 -Dhttp.address=192.168.90.23 &
##通过1234端口访问
7. 安装logstash
##一般都是装在要收集日志的主机上,不过我这边只是试验我就直接安装在es1上
yum localinstall -y logstash-6.2.2.rpm
##这边的索引只是为了测试,所以就简单写,具体还要考实际主机的日志格式来写
Vim /etc/logstash/conf.d/test.conf
input{stdin{}}
output {
elasticsearch {
action => "index"
hosts => "192.168.90.22:9200"
index => "test"
}
}
##如果你安装了nginx,也可以写这个
input {
file {
path => "/var/log/nginx/*.log" #日志存放位置,*是所有,你也可以只选一个access.log
type => "test"
start_position => "beginning" #从文件开始出读
}
}
filter{
grok {
match => {
"message" => "%{IPORHOST:IP} - %{USER:User} \[%{HTTPDATE:Time}\] \"%{WORD:HTTP_Method} %{NOTSPACE:Request} HTTP/%{NUMBER:HTTP_Version}\" %{NUMBER:Status} (?:%{NUMBER:Bytes}|-) \"(?:%{URI:HTTP_Referer}|-)\" \"%{GREEDYDATA:User_Agent}\"" ##nginx默认格式
}
}
}
output {
elasticsearch {
action => "index"
hosts => "192.168.90.22:9200"
index => "nginx" ##索引名
}
stdout {
codec => rubydebug
}
}
##启动logstash
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf
8. 访问kibana
##最后根据需要建立图表
9. 防火墙端口
##默认情况下
elasticsearch之间通过9300
logstash传过来是9200
kibana页面是5601
cerebro的端口是最后你启动时输入多少就是多少