Elasticsearch6.X 记一次ELK+Beats+kafka实时日志搭建过程(linux小白)
很早之前就在windows上搭建过ELK日志,最近项目用到分布式系统,涉及到很多linux服务器,再用原来的logstash去采集日志明显不合适,原因是logstash占用内存过高,每台机子上都部署的话比较浪费内存。以前是用windows环境,现在用阿里云的CentOS7.4,其中也有许多坑(对于我这linux小白来说),记录下来希望能帮助其他人
说一下环境与软件配置:
linux服务器:阿里云CentOS7.4
kafka版本:阿里云kafka消息队列
ELK+Filebeat版本:6.3.0
正式开始:
一、Elasticsearch配置与安装
Elasticsearch的安装与在windows上的安装没什么区别,只是linux小白可能会遇到一些坑
1.下载elasticsearch-6.3.0安装包并且解压,我这里解压到根目录/ELK/下面
2.修改config目录下jvm.options与elasticsearch.yml文件
jvm.options文件:elasticsearch的默认运行内存为1GB,根据实际需要,修改成自己想要的。可以设置成不超过机器物理内存的50%,但是不要超过32G,31G较为合适,(这里设置为3G)。
-Xms3g
-Xmx3g
elasticsearch.yml文件:改文件主要是做一些集群的配置(如集群名称,端口号,节点名称,主节点,数据节点等等),如果想要跨机子访问,network.host设置为:
network.host: 0.0.0.0
如果在阿里云内网环境不同机子搭建的集群,记得要把所有节点的地址都要加到discovery.zen.ping.unicast.hosts参数中区,格式为:
discovery.zen.ping.unicast.hosts: ["172.18.x.x:9300","172.18.x.x:9300", "172.18.x.x:9300"]
其中9300为默认transport连接端口,如果前面做了修改,请一起修改。
3.创建ES用户和组(创建elsearch用户组及elsearch用户),因为使用root用户执行ES程序,将会出现错误;所以这里需要创建单独的用户去执行ES 文件,命令如下:
命令一:groupadd elsearch #创建用户组
命令二:useradd elsearch -g elsearch #创建用户
命令三:chown -R elsearch:elsearch /ELK/elasticsearch-6.3.0 #该命令是更改该文件夹下所属的用户组的权限
命令四:chmod 755 /ELK/elasticsearch-6.3.0/modules/x-pack/x-pack-ml/platform/linux-x86_64/bin/controller #需要给xpack的脚本增加可执行权限(这是其他资料没提及到的)
4.创建好之后,切换到创建的用户,进入到bin 目录下执行命令:
./elasticsearch (执行 sh elasticsearch -d是后台运行)
前端执行时会出现以下错误:
解决上面2个问题的方法:
1)修改/etc/security/limits.conf ,在文件后面加上下面2行
* soft nofile 65536
* hard nofile 65536
2)问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144;
切换到root用户,执行命令:
sysctl -w vm.max_map_count=262144
上述方法修改之后,如果重启虚拟机将失效,解决办法:在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
即可永久修改。
5.切换到新建的用户elsearch,进入到bin 目录下执行 sh elasticsearch 命令就可以了(执行 sh elasticsearch -d 是后台运行)
如果没有什么问题话,就可以安全生成了;然后执行:curl 'http://127.0.0.1:9200/' 命令,就出现下面的结果
6.end。Elasticsearch部署成功,(其他节点同理,注意添加到discovery.zen.ping.unicast.hosts: ["172.x.x.1:9300","172.x.x.2:9300", "172.x.x.3:9300"]参数中)
二、kibana部署,这个比较简单,下载linux版本的kibana,解压到/ELK/目录下后,
启动命令需要先给kibana权限
chmod 755 /ELK/kibana-6.3.0-linux-x86_64/bin/kibana
再启动kibana(可用root用户启动):
sh /ELK/kibana-6.3.0-linux-x86_64/bin/kibana (后台启动命令:nohup /ELK/kibana-6.3.0-linux-x86_64/bin/kibana &)
三、kafka部署,因为我是直接购买的阿里云的kafka消息队列,故不用部署,在VPC内网中可用直接连
四、部署logstash,这个和在windows区别也不大,解压到/ELK/目录下后,
启动命令需要先给logstash权限
chmod 755 /ELK/logstash-6.3.0/bin/logstash
再启动(注意,配置文件logstash.conf得文件编码要是utf-8,logstash消费kafka消息写入ES的配置,请查阅其他资料,这里不赘述)
/ELK/logstash-6.3.0/bin/logstash -f /ELK/logstash-6.3.0/bin/logstash.conf
后台启动命令:nohup /ELK/logstash-6.3.0/bin/logstash -f /ELK/logstash-6.3.0/bin/logstash.conf &
配置好上面的之后只差在每一个应用服务器上配置Filebeat,监听应用日志消息写入kafka
五、下载Filebeat的linux对应版本,解压到/ELK/目录下后(其他Beat系列同理)
启动命令需要先给Filebeat权限
chmod 755 /ELK/filebeat-6.3.0-linux-x86_64/filebeat
再执行命令
./filebeat -e -c filebeat.yml (后台启动:nohup ./filebeat -e -c filebeat.yml &)
下附 filebeat监听日志消息写入kafka配置
至此,所有配置都已完成,打开kibana查看日志的实时消息吧
好啦,最好放一下整体的的架构图
有什么问题欢迎留言咨询,希望能帮到您。