ELK日志分析系统+部署ELK
ELK组件
ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求
- ElasticSearch
(1)是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志
(2)Elasticsearch是用Java开发的,可通过RESTful Web接口,让用户可以通过浏览器与Elasticsearch通信
(3)Elasticsearch是个分布式搜索和分析引擎,优点是能对大容量的数据进行接近实时的存储、搜索和分析操作
(4)Elasticsearch可以划分为三种:主节点、数据节点和客户端节点
1.master主节点:
elasticsearch.yml:
node.master:true
node.data:false
主要功能:维护元数据,管理集群节点状态;不负责数据写入和查询
配置要点:内存可以相对小一些,但是机器一定要稳定,最好是独占的机器
2.data数据节点
elasticsearch.yml:
node.master:false
node.data:true
主要功能:负责数据的写入与查询,压力大
配置要点:大内存,最好是独占的机器
3.client客户端节点
elasticsearch.yml:
node.master:true
node.data:true
主要功能:综合上述三个节点的功能。
配置要点:大内存,最好是独占的机器。
特别说明:不建议这种配置,节点容易挂掉
4.一般配置主节点3台服务器,数据节点与客户端节点配置比例一般在3:1左右,根据实际情况调节
- Logstash
(1)作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给Elasticsearch
(2)Logstash由JRuby语言编写,运行在Java虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能,常用于日志处理 - Kibana
是基于Node.js开发的展示工具,可以为Logstash和ElasticSearch提供图形化的日志分析Web界面展示,可以汇总、分析和搜索重要数据日志 - Filebeat
轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat就能快速收集数据,并发送给logstash进行解析,或是直接发给Elasticsearch存储,性能上相比运行于JVM上的loqstash优势明显,是对它的替代
为什么要使用ELK
- 日志主要包括系统日志,应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及。错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误
- 往往单台机器的日志我们使用grep、awk等工具就能基本实现简单析,但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样感觉很繁琐和效率低下
- 当务之急我们使用集中化的日志管理,例如∶开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心
- 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率
完整日志系统基本特征
- 收集∶能够采集多种来源的日志数据
- 传输∶能够稳定的把日志数据解析过滤并传输到存储系统
- 存储∶存储日志数据
- 分析∶支持UI分析
- 警告∶能够提供错误报告,监控机制
ELK的工作原理
- 在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署Loqstash
- Logstash收集日志,将日志格式化并输出到Elasticsearch群集中
- Elasticsearch对格式化后的数据进行索引和存储
- Kibana从ES群集中查询数据生成图表,并进行前端数据的展示
部署ELK
服务器准备
主机 | ip | 安装包 |
---|---|---|
node1 | 192.168.80.11 | Elasticsearch、kibana、Elasticsearch-head(便于管理ES集群) |
node2 | 192.168.80.12 | Elasticsearch |
apache | 192.168.80.13 | httpd、Logstash |
部署Elasticsearch(在node1/2上)
关闭防火强和安全功能
systemctl stop firewalld.service
setenforce 0
更改主机名并配置域名解析
--------192.168.80.11--------
hostnamectl set-hostname node1
su
--------192.168.80.12---------
hostnamectl set-hostname node2
su
echo '192.168.80.11 node1' >> /etc/hosts
echo '192.168.80.12 node2' >> /etc/hosts