文章目录
ELK 企业级日志分析系统
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散存储在不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。就很繁琐、效率低下。当务之急我们使用集中化的日志管理,例如:开源的rsyslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。
ELK平台是一套完整的日志集中处理解决方案,它将ElasticSearch、Logstash和Kibana三个开源工具配合使用,以满足用户对日志的查询、排序、统计等强大需求。
完整日志系统基本特征:
- 收集:能够采集多种来源的日志数据
- 传输:能够稳定的把日志数据解析过滤并传输到存储系统
- 存储:存储日志数据
- 分析:支持 UI 分析
- 警告:能够提供错误报告,监控机制
ELK的组成及功能
-
Elasticsearch
- 简介:Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,它提供了搜集、分析、存储数据三大功能。它是用Java开发的,并可通过RESTful Web接口与用户进行通信。
- 特点:
- 分布式:Elasticsearch可以扩展到上百台服务器,处理PB级别的数据。
- 实时性:提供近乎实时的搜索和分析能力。
- 高性能:通过分布式索引和分片技术,实现高效的搜索和查询。
- 可扩展性:支持动态扩展,增加或减少节点以应对不同的负载需求。
- 多用途:不仅限于日志分析,还可以用于网站搜索、大数据分析等多种场景。
-
Logstash
- 简介:Logstash是ELK的中央数据流引擎,它主要负责从各种数据源采集数据,对数据进行过滤、分析、丰富和转换,然后输出到指定的目的地(如Elasticsearch)。
- 特点:
- 动态数据源:支持从多种数据源(如文件、数据库、消息队列等)采集数据。
- 强大插件功能:具有丰富的插件库,支持各种数据处理和转换操作。
- 数据管道模型:采用数据管道模型,将数据的采集、处理、输出过程抽象为输入、过滤器和输出三个阶段。
- 性能优化:支持批量处理和缓存机制,以提高数据处理效率和稳定性。
-
Kibana
- 简介:Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在Elasticsearch指标中的日志数据。
- 特点:
- 数据可视化:提供丰富的数据可视化工具,如图表、表格、地图等,帮助用户直观地理解数据。
- 动态仪表板:支持创建动态仪表板,实时显示Elasticsearch查询的变化。
- 简单易用:具有简单的、基于浏览器的界面,用户可以快速上手并进行数据分析。
- 高级数据分析:支持执行高级数据分析操作,如聚合、排序、筛选等。
工作原理:
- 在所有需要收集日志的服务器上部署Logstash(或替代方案如Filebeat)。
- Logstash收集日志,对数据进行过滤、分析和格式化处理。
- 处理后的日志数据被发送到Elasticsearch进行索引和存储。
- 用户通过Kibana的图形界面查询、分析和可视化存储在Elasticsearch中的日志数据。
扩展组件及功能
-
Filebeat
- 简介:Filebeat是一个轻量级的日志文件数据搜集器,通常安装在需要采集数据的客户端上。它能够快速收集指定目录和格式的日志文件,并将其发送到Logstash或Elasticsearch进行进一步处理。
- 优势:相比Logstash,Filebeat在资源消耗和性能上具有明显优势。它占用较少的内存和CPU资源,能够高效地处理高并发日志数据。
- 应用场景:常应用于ELFK(ELK+Filebeat)架构中,作为Logstash的替代方案,以减轻资源消耗并提高性能。
-
缓存/消息队列(Redis、Kafka、RabbitMQ等)
- 简介:缓存/消息队列组件用于对高并发日志数据进行流量削峰和缓冲。它们能够保护数据不丢失,并对整个架构进行应用解耦。
- 功能:
- 流量削峰:在高并发场景下,缓存/消息队列能够吸收并存储大量的日志数据,从而减轻后端处理系统的压力。
- 数据缓冲:在数据生成和处理之间存在时间差时,缓存/消息队列能够存储临时数据,确保数据的完整性和一致性。
- 应用解耦:通过引入缓存/消息队列,可以将日志数据的生成、处理和存储等过程进行解耦,提高系统的灵活性和可扩展性。
- 应用场景:在大型分布式系统中,缓存/消息队列组件常用于构建高可用性和可扩展性的日志处理架构。
-
Fluentd
- 简介:Fluentd是一个流行的开源数据收集器,用于从各种数据源收集数据并发送到指定的目的地。相比Logstash,Fluentd更加轻量级、易用和资源消耗更少。
- 优势:Fluentd支持多种数据源和目的地,具有丰富的插件和灵活的配置选项。它使用Go语言编写,具有较高的性能和可靠性。
- 应用场景:常应用于EFK(Elasticsearch+Fluentd+Kibana)架构中,特别是在Kubernetes集群中进行数据统一收集时,Fluentd是一个受欢迎的选择。
ELK的工作原理
- 数据收集:Logstash作为数据收集引擎,从各种数据源(如日志文件、数据库等)采集数据。
- 数据处理:Logstash对采集到的数据进行过滤、分析、丰富和转换等操作,以满足后续存储和分析的需求。
- 数据存储:处理后的数据被存储到Elasticsearch中,Elasticsearch会对数据进行索引和存储,以便进行高效的搜索和查询。
- 数据分析和可视化:用户通过Kibana的图形化界面,对存储在Elasticsearch中的数据进行搜索、分析和可视化操作。Kibana提供了丰富的数据可视化工具,帮助用户直观地理解数据并做出决策。
ELK的应用场景
ELK主要用于部署在企业架构中,收集多台设备上多个服务的日志信息,并将其统一整合后提供给用户。虽然ELK在日志分析领域具有广泛应用,但它不仅仅适用于日志分析,还可以支持其他任何数据分析和收集的场景。例如:
- 日志分析:收集、分析并可视化系统日志、应用程序日志和安全日志等,帮助系统运维和开发人员了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。
- 监控和报警:通过与Kibana等工具结合,提供数据的可视化和实时监控功能,及时发现并处理潜在问题。
- 数据可视化:利用Kibana的图形化界面,将存储在Elasticsearch中的数据以图表、表格等形式展示出来,帮助用户直观地理解数据并做出决策。
- 商业智能(BI):支持复杂数据查询和分析,帮助企业从数据中获取洞察并优化业务决策。
ELK部署指南
环境准备(在Node1、Node2节点上操作)
- 关闭防火墙和SELinux
systemctl stop firewalld setenforce 0 - 设置Java环境
- 检查Java版本
java -version - 如果没有安装Java,使用以下命令安装:
yum -y install java-1.8.0-openjdk*
- 检查Java版本
部署 Elasticsearch 软件(在Node1、Node2节点上操作)
-
安装 Elasticsearch RPM 包
- 上传
elasticsearch-6.7.2.rpm到/opt目录 - 安装 RPM 包
cd /opt rpm -ivh elasticsearch-6.7.2.rpm
- 上传
-
修改 Elasticsearch 主配置文件
- 备份原配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak - 编辑配置文件
vim /etc/elasticsearch/elasticsearch.yml - 修改以下配置项:
cluster.name: my-elk-cluster node.name: node1 # Node2节点为node2 node.master: true node.data: true path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch bootstrap.memory_lock:
- 备份原配置文件


5132

被折叠的 条评论
为什么被折叠?



