ELK部署参考文档
简单介绍:
ELK是三个开源工具组成,简单解释如下:
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
场景分析:
日志主要包括系统日志、应用程序日志和安全日志等等。运维人员和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
这里采用开源实时日志分析ELK平台能够完美的解决我们上述的问题,当然也还有别的平台或者工具可以使用,这里只讨论ELK,官方网站:https://www.elastic.co
截止目前elk官网提供最新稳定版本为5.4.0
需要实现效果:
1、系统messages日志通过本地beat方式(数据不做任何处理)导入到elasticsearch中,最后通过kibana可以查询。
2、Apache访问日志通过远程beat方式(数据经过处理)导入到elasticsearch中,通过kibana可以搜索日志中任何一个字段展示,也可以组合模糊查询索。也就是说将apache日志按json格式存储到elasticsearch中。
3、不同客户端的Nginx访问日志、Apache访问日志、系统日志均通过不同的匹配条件正则处理导入到elasticsearch中。Nginx和系统日志需要编写简单对应的正则表达式。主要注意事项:
1、Elk版本号保持一致。 2、所有节点操作系统版本最好保持一致,尽可能使用目前centos7.3稳定版本。Elk三个节点的配置需要比其它节点都要高一点,为2C4G,其它均为2C2G。内存太低这都是我踩过的坑。要求所有节点均能通外网,需要安装软件包。
3、关闭防火墙和selinux。
4、elk为了统一都使用tar包安装所有软件。用yum安装特别是logstash会遇到很多坑。
5、搭建过程不难,难的是各个项目互相调试,难的是elk的高级使用方法。
说明:
本文目的只带你入门,至于elk更高级的应用和使用方法请查看官网或者其它技术文档。这里把所有的应用都单独分开部署是为了以后部署到docker容器中。当然你也可以都部署在一台服务器上。
详细信息:
IP地址 | 主机名 | 用途 | 安装软件 |
192.168.2.25 | apache | 客户端 | httpd、filebeat |
192.168.2.26 | nginx | 客户端 | nginx、filebeat |
192.168.2.27 | logstash | 日志分析处理 | logstash、filebeat |
192.168.2.28 | elasticsearch | 存储数据 | elasticsearch |
192.168.2.30 | kibana | 查询数据 | kibana |
安装步骤:
1、Elk三个节点安装jdk,jdk可以去oracle官方网站下载,版本号可以和我的不一样
- rpm -ivh jdk-8u102-linux-x64.rpm

2、安装elasticsearch节点
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz
- tar zxvf elasticsearch-5.4.0.tar.gz
- mv elasticsearch-5.4.0 /usr/local/elasticsearch
- cd /usr/local/elasticsearch/config
- 备份elasticsearch默认配置文件,以防修改出错
- cp elasticsearch.yml elasticsearch.yml.default
编辑后如下:

添加elasticsearch用户,tar包启动必须使用普通用户运行
- useradd elasticsearch
- chown -R elasticsearch:elasticsearch /usr/local/elasticsearch
打开sysctl.conf文件,添加如下内容:
- vm.max_map_count = 655360
- sysctl -p /etc/sysctl.conf
打开/etc/security/limits.conf文件,修改打开文件句柄数
- * soft nofile 65536
- * hard nofile 65536
- * soft nproc 65536
- * hard nproc 65536
- su - elasticsearch
- cd /usr/local/elasticsearch
- bin/elasticsearch

第一次启动需要一些时间,因为需要做一些初始化动作,如果没启动成功请查系elasticsearch的相关日志解决。注意上面只是前台启动调试,在后台需要加&,需要重新启动。
查看端口是否开启

curl简单的测试

3、安装logstash节点
- wget https://artifacts.elastic.co/downloads/logstash/logstash-5.4.0.tar.gz
- tar zxvf