目录
前言
简单而必要的理论知识,elkb之间的关系(就几句话,请务必看,我认为很重要!)
开始搭建!
1.准备虚拟机
1.1创建虚拟机
1.2进入虚拟机
2.搭建ELKB集群
2.1elasticsearch的安装
2.2 kibana的安装
2.3 logstash的安装
2.4 filebeat的安装
尾声
我发现国内关于ELK搭建教程很多,但是ELKB加上集群的结合的搭建教程却很少!以至于我自己在搭建的时候疯狂的踩坑,报废了一台又一台虚拟机
因此我想帮助想要搭建elkb集群的朋友快速搭建!
我也是看了许多博主大佬的文章并根据此搭建成功,也推荐有兴趣的各位去看看哟:
由于本人电脑内存16G,8核处理器,因此只准备3台虚拟机,处理器和内存按最小配置来,并且都不要安装gui,建议最小安装省内存!(内存多的就随便你,可以不用那么省吃俭用)
三台虚拟机处理器都这么分配
内存,最小建议:3个g
如果你的电脑内存比较富余,那也可以4个g哦
如果极限压缩的话,安装kibana和安装filebeat的那一台可以配置2.5个g,logstash那台还是别省了,logstash跑起来会疯狂的收割你的内存!怪不得es官方要给logstash搞那么多的辅助工具,我现在就想解决内存优化的问题,如果有大佬知道要怎么做,欢迎来讨论~
硬盘的话就随意了,如果没有实际用到的话并不会真正的占用你宿主机的资源,我是分配了30g。20g也没问题
总结:
- ELKBCk 安装elasticsearch+kibana 2核 2.5g内存 30g硬盘
- ELKBCl 安装elasticsearch+logstash 2核 3g内存 30g硬盘
- ELKBCf 安装elasticsearch+filebeat 2核 2.5g 30g硬盘
1.由于我是最小安装,还需要为虚拟机安装一些额外的命令
//ifconfig命令,ping网络
yum install -y net-tools
//vim命令,偷偷说一句我本来连vim都没装,用自带的vi,结果还是发现vim好用。。。
yum -y install vim
//tab补全
yum -y install epel-release
//wget命令,获取网络资源
yum -y install wget
//安装zip解压缩,这我是没装,因为我有WinSCP可以在宿主机和虚拟机之间传文件
yum -y install unzip zip
2.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3.配置系统的环境变量,参考自ELK集群搭建
vim /etc/security/limits.conf
添加下面的内容,注意 * soft nproc 4096 这里不要设置2048,我设置2048之后es运行是会报错的!
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
vim /etc/sysctl.conf
添加以下内容
vm.max_map_count=655360
配置生效
sysctl -p
4.然后,强烈建议配置静态环ip,具体操作请看这篇文章:CentOS Stream 9设置静态IP
5.jdk环境。你可以配jdk也可以不配,es会有源生自带。但如果想要配置但不会配置的话可以看这这位博主大佬的这篇:centos安装jdk完整步骤
6.更改自己的hostname主机名
hostnamectl set-hostname ELKBCk
----自此虚拟机环境便搭建完成,接下来进入elkb集群搭建!
回顾一下
- ELKBCk 安装elasticsearch+kibana 2核 2.5g内存 30g硬盘
- ELKBCl 安装elasticsearch+logstash 2核 3g内存 30g硬盘
- ELKBCf 安装elasticsearch+filebeat 2核 2.5g 30g硬盘
说明一下我的安装目录吧,我是都安装在/user/local/下的,如果精致一点可以安装在自己喜欢的目录下!
1.首先三台机子都要安装elasticsearch,es7.15.1可以在华为的镜像源找到
//cd进入想要安装的目录下
wget https://mirrors.huaweicloud.com/elasticsearch/7.15.1/elasticsearch-7.15.1-linux-x86_64.tar.gz
2.解压,我这里就不重命名了,方便自己以后可以查看版本
tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz
3.进入elasticsearch-7.15.1内,建data文件夹
mkdir data
4.进入config文件夹下,更改配置文件
vim elasticsearch.yml
添加以下内容。我这里是让所有节点都有资格成为data和master节点,而在正式的生产环境中,会指定特点的节点让他们参与选举
#集群名称
cluster.name: elkbc
#节点名称
node.name: ELKBCk
#master节点选举资格
node.master: true
#data节点选举资格
node.data: true
path.data: /usr/local/elasticsearch-7.15.1/data
path.logs: /usr/local/elasticsearch-7.15.1/logs
bootstrap.memory_lock: false
#配置自己的ip
network.host: 192.168.10.130
http.port: 9200
#包含候选主节点的名称,并在集群中每个候选主节点上进行定义
cluster.initial_master_nodes: ["ELKBCk", "ELKBCf", "ELKBCl"]
#节点地址,互相连通
discovery.zen.ping.unicast.hosts: ["192.168.10.130", "192.168.10.131", "192.168.10.132"]
#这里的值为:候选节点数 / 2 + 1
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
5.创建用户并授权,es不允许root用户启动
useradd elkb
passwd elkb
chown -R elkb:elkb /usr/local/elasticsearch-7.15.1
6.启动并测试
su - elkb -c "/usr/local/elasticsearch-7.15.1/bin/elasticsearch -d"
启动之后,可以在宿主机上先配置一下hosts,就可以直接输入elkbck进行访问
浏览器输入
http://elkbck:9200/
出现以下结果,证明这台虚拟机配置成功!you Know,for Search~
其他2台虚拟机步骤与上述没有区别,仅仅只要改变一下节点名称就可以了。
当你3台机子都配置完成后,检查一下他们的主节点是否一样,在浏览器上输入
http://elkbck:9200/_cat/master?v
http://elkbcl:9200/_cat/master?v
http://elkbcf:9200/_cat/master?v
得到的结果一定是一样的,证明三台都成功了!
----此时,es的安装就结束了,你可以休息一下,喝一口水奖励一下自己了。之后一口气搞完所有的搭建。
在ELKBCk这台虚拟机上安装kibana
进入/usr/local,下载,可以通过华为的镜像源进行下载
wget https://mirrors.huaweicloud.com/kibana/7.15.1/kibana-7.15.1-linux-x86_64.tar.gz
解压,并且重命名为kibana
tar -zxvf kibana-7.15.1-linux-x86_64.tar.gz && mv kibana-7.15.1-linux-x86_64 /usr/local/kibana
进入kibana,创建logs文件夹
mkdir /usr/local/kibana/logs
进入logs文件夹,创建空的log文件
touch /usr/local/kibana/logs/kibana.log
进入 /usr/local/kibana/conf/ 修改配置文件kibana.yml。
kibana还有官方的汉化,只不过不太完善,翻译的也很怪!我个人是不太喜欢
server.port: 5601
#此配置是允许远程的机子连接,默认是localhost,我直接改为0.0.0.0
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.10.130:9200", "http://192.168.10.131:9200", "http://192.168.10.132:9200"]
#kibana的索引
kibana.index: ".kibana"
#kibana日志文件输出
logging.dest: /usr/local/kibana/logs/kibana.log
#汉化,汉化不完全,有些翻译有点怪,没有默认的英文解释的清楚,想体验的朋友也可使试一下
#i18n.locale: "zh_CN"
kibana也不允许root用户启动,因此要授权
chown -R elkb:elkb /usr/local/kibana
启动kibana
su - elkb -c "/usr/local/kibana/bin/kibana &"
在浏览器输入elkbck:5601,出现这个图标就是成功!(需要启动全部部署的es才能正常访问kibana)
----至此kibana的安装就完成了!
在ELKBCl上安装
进入 /usr/local/ ,下载,也是通过华为的镜像
wget https://mirros.huaweicloud.com/logstash/7.15.1/logstash-7.15.1-linux-x86_64.tar.gz
解压缩,重命名
tar -zxvf logstash-7.15.1-linux-x86_64.tar.gz && mv logstash-7.15.1-linux-x86_64 /usr/local/logstash
进入logstash中的conf配置文件夹下,修改配置
vim logstash.yml
#添加以下内容
http.host: "192.168.10.131"
http.port: 9600
新建一个logstash-log.conf配置文件,专门用于日志传输
vim logstash-log.conf
#添加以下内容
# Beats -> Logstash -> Elasticsearch pipeline.
# 输入通过filebeat,输出到es
input {
beats {
port => 5044
}
}
#我没有设置用户,有设置用户的在下面加上就行
output {
elasticsearch {
hosts => ["http://192.168.10.130:9200", "http://192.168.10.131:9200", "http://192.168.10.132:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
action => "index"
#user => "elastic"
#password => "changeme"
}
}
logstash需要以root用户启动!启动logstash,将日志输出到output.log中
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-log.conf >> /usr/local/logstash/output.log 2>&1 &
检查启动是否成功,可以查看日志
tail -f /usr/local/logstash/output.log
出现以下结果“Starting server on port: 5044”说明启动成功!
----logstash的安装也弄完了!
在ELKBCf上安装filebeat
进入 /usr/local/ ,下载filebeat。
华为的镜像只更新filebeat至7.9.3版本,以后的版本不再提供,很是可惜。因此我们直接从官方网站上下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.15.1-linux-x86_64.tar.gz
解压,重命名
tar -zxvf filebeat-7.15.1-linux-x86_64.tar.gz && mv filebeat-7.15.1-linux-x86_64 /usr/local/filebeat
进入filebeat中,新建一个filebeat-log.yml专门负责log文件的收集,paths为要收集的路径(我这里是随便找了个地方收集日志,方便后续实验)
vim logstash-log.yml
#添加以下内容
#其中paths为读取读取日志的路径
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/filebeat/logs/*.log
#- /usr/.*log 可以设置多路径,按这种方式就可以了
output.logstash:
hosts: ["192.168.10.131:5044"]
setup.kebana:
enabled: true
host: "192.168.10.130:5601"
进入filebeat的logs文件夹下,新建一个b.log文件
vim b.log
#添加以下内容
this is b.log
启动filebeat
/usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat-log.yml >/dev/null 2>&1 &
在es,logstash,filebeat,kibana都启动成功的前提下,我们进入到kibana下,点击Management下的Stack Management;进入后在点击kibana下的Index Patterns,再点击右上角的按钮“create index pattern”,新建一个index pattern。
之后返回主页,在Discover下就可以看到我们的filebeat传输的日志内容了,this is b.log,成功!!
----自此filebeat的安装就完成了 ,整个ELKB集群的搭建也完成了!
呼,写完了~
如果本文章能帮到你,那可真是我莫大的荣幸呀!
如果有发现错误,欢迎指正~