前言
公司在18年因双十一订单量激增,导致应用服务器IO压力巨大,程序执行缓慢,运维效率低下(本地日志文件)。
经过深入研究搭建了基于Elasticsearch的日志平台,将IO操作从程序中剥离出来,日志首先发送至RabbitMQ,Logstash作为消费者接受并处理数据,最后转发到Elasticsearch进行存储,Kibana作为前台工具进行数据展示。,目前系统运行稳定,支持PB级数据秒级查询,关联查询等多种查询方式,并可以通过脚本控制索引的定期清理。
此篇博客将详细为大家讲解整个日志系统的搭建过程。系统搭建还是相对比较简单的,但运行一段时间后你将会发现各种问题,比如kibana挂掉,elasticsearch健康状况变为红色,存储空间不足,内存不足,运行缓慢等等问题。这些问题我会在后期新开一篇博客详细讲解,另外对日志系统涉及到的各种开源服务及他们之间的关系进行详细讲解,
下图是整个日志系统的架构图
一、安装Elasticsearch
-
安装java环境(java环境必须是1.8版本以上的)
-
解压Elasticsearch压缩包
#tar -zxf elasticsearch-6.5.1.tar.gz
- 添加用户elk
因为Elasticsearch5.0之后,不能使用root账户启动,我们先创建一个elk组和账户:
添加用户组
#groupadd elk
添加用户
#useradd elk -g elk -p elk
添加文件权限
#chown -R elk.elk /home/elk
- 修改配置文件
vim /etc/sysctl.conf
添加如下配置:
#vm.max_map_count=655360
保存并并执行命令:
sysctl -p
vim /etc/security/limit.d/20-nproc.conf
添加如下配置
* hard nproc 4096
#vim /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
vim config/elasticsearch.yml
修改elasticsearch配置文件
cluster.name: my-es
node.name:node-1
network.host:10.0.5.78
http.port: 9200
transport.tcp.port: 9300
#避免出现跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"
- 启动Elasticsearch
首次运行(能看到错误信息)
su elk -c "/home/elk/elasticsearch-6.5.1/bin/elasticsearch &"
后台运行
nohup./bin/elasticsearch&
- 添加防火墙端口号
添加
firewall-cmd --zone=public --add-port=9200/tcp --