试验环境
本次试验的elastic stack
软件都为7.0.1
版本,现在官网最新的为7.1版本,用户可在官方下载下载地址。
主机名 | ip地址 | 服务 |
---|---|---|
efk-node1 | 192.168.20.211 | elasticsearch、kibana、jdk8 |
efk-node2 | 192.168.20.212 | elasticsearch、cerebro、jdk8 |
real-server | 192.168.20.250 | filebeat |
环境准备
安装JDK
elasticsearch需要jdk环境的支持,7.0.1版本默认已经自带JDK了,但是为了日后扩展问题,我们还是手动配置一边JDK环境。以下操作在efk-node1
和efk-node2
主机上进行:
1 | # 下面下载链接因授权问题,需用户前往JDK官网下载 |
设置服务器的最大文件数
1 | $ cat >> /etc/security/limits.conf << EOF |
设置服务器打开的最大进程数
1 | $ cat > /etc/security/limits.d/20-nproc.conf << EOF |
设置nmap数量对虚拟内存的支持
1 | $ cat >> /etc/sysctl.conf << EOF |
本地host解析
1 | cat >> /etc/hosts << EOF |
安装elasticsearch
以下操作在efk-node1
和efk-node2
主机上进行:
下载和解压
1 | # 创建elastic工作目录 |
修改配置文件
下面只列出已配置的参数
1 | $ cat elasticsearch-7.0.1/config/elasticsearch.yml | egrep -v "^$|^#" |
创建运行elasticsearch用户
elasticsearch默认是不运行root用户运行的,因此我们得创建一个新用户来运行elasticsearch。
1 | $ useradd elastic |
创建依赖文件
1 | $ mkdir /var/log/elasticsearch # 创建日志目录 |
准备elasticsearch systemctl文件
1 | [Unit] |
启动elasticsearch
1 | $ systemctl daemon-reload # 加载systemctl配置文件 |
Tips: elasticsearch7.0.1安装完默认自带基础版的X-Pack功能,使用铂金版的需要购买或者参考破解X-pack进行破解。
验证集群状态
通过上面的配置,我们的elasticsearch服务器已经启动,并且默认监听在9200
和9300
端口。9200端口
: 为web访问提供服务;9300端口
:为集群节点提供通信。
1 | # 验证集群节点数,其中master为*的代表该节点为主节点 |
由上可知,我们的elasticsearch集群已经正常工作了,并且在2台集群节点下/var/lib/elasticsearch目录下都有相同的数据。更多关于elasticsearch REST API请参考官方说明。
cluster apis _cat apis Search apis Document apis
安装 Kibana
以下操作只在efk-node1
主机上进行:
下载和解压
1 | # 进入elastic工作目录 |
修改配置文件
下面只列出已配置的参数
1 | $ cat kibana-7.0.1-linux-x86_64/config/kibana.yml | egrep -v "^$|^#" |
创建依赖文件
1 | $ touch /var/log/kibana.log # 创建日志文件 |
Tips:默认Kibana是支持root运行的,我这里为了统一elasticsearch运行环境所以打算elastic用户运行。
准备kibana systemctl文件
1 | [Unit] |
启动kibana
1 | $ systemctl daemon-reload # 加载systemctl配置文件 |
Kibana默认监控在5601端口上,此时可以通过
http://192.168.20.211:5601
访问kibana。
安装cerebro可视化集群管理工具
cerebro是一个使用Scala,Play Framework,AngularJS和Bootstrap构建的开源(MIT许可)elasticsearch web可视化的监控工具,Github项目
以下操作只在efk-node2
主机上进行:
下载和解压
请前往https://github.com/lmenezes/cerebro/releases
地址下载cerebro工具
1 | $ tar zxvf cerebro-0.8.3.tgz |
准备cerebro systemctl文件
1 | [Unit] |
命令启动cerebro
1 | # 默认9000端口 |
systemctl方式启动cerebro
1 | $ systemctl daemon-reload # 加载systemctl配置文件 |
访问cerebro
通过浏览器访问http://192.168.20.212:1234
就可以cerebro工具了。该工具详细的显示了es集群状态、节点数、索引数、分片数、文档数以及数据大小等参数。
安装filebeat
此前文档我们已经说明了关于filebeat的原理,以及一些配置文件参数。现在我们只初略的说明我们已使用的配置参数。以下操作只在real-server
主机上进行:(也就是我们业务所跑的服务器,我们要抓取的是业务日志,所以当然是安装在业务服务器上咯)
下载和解压
1 | # 进入elastic工作目录 |
本例我们使用filebeat监控tomcat日志和nginx日志
修改配置文件
以配置文件方式支持tomcat日志输入
下面只列出已配置的参数,关于参数说明,请参考此前文档
1 | $ cat filebeat-7.0.1-linux-x86_64/filebeat.yml |
catalina.out
和localhost_access
都需要使用一定的格式。方便filebeat处理多行事件日志。
以模版方式支持nginx日志输入
默认filebeat自带诸多服务日志模版,如:nginx、redis、apache、IIS、kafka等等。默认都在filebeat解压后module
、modules.d
目录中。
1 | $ cat /elastic/filebeat-7.0.1-linux-x86_64/modules.d/nginx.yml.disabled |
启动nginx模版
1 | $ cd /elastic/filebeat-7.0.1-linux-x86_64 |
准备filebeat systemctl文件
1 | [Unit] |
启动filebeat
1 | $ systemctl daemon-reload # 加载systemctl配置文件 |
至此简单的EFK集群搭建完成。在生成环境中 我们还会在filebeat和elasticsearch中间加入kafka和logstash来提高日志数据的高效传输和更强的日志过滤功能,而kafka又可以配置成集群模式。
在当前文档中我们并未说明kibana如何使用,请参考官方使用教程
v1.5.2