1、ELK概述
ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。
ELK 是 Elasticsearch、Logstash、Kibana 的缩写,这三个工具组合在一起,用于数据收集、存储、搜索和可视化分析。它们的角色如下:
-
Elasticsearch:超级快速的搜索、分析工具,可以在海量数据中快速查找数据,实时分析数据。功能强大、灵活,用于很多公司做大数据分析、实时搜索的工具
-
Logstash:多功能”数据搬运工“,从各种来源(如日志文件、数据库)收集数据, 分析、过滤、格式化,输出到Elasticsearch。用于数据分析,监控和处理过程,让你可以轻松处理各种数据
-
Kibana:数据可视化工具,提供图形界面来展示和分析存储在Elasticsearch中的数据,支持创建各种图表和仪表板。用于监控系统、查询日志
简单理解
ELK Stack 是一个一体化的工具包,帮助用户从多个数据源中收集数据、存储并进行快速搜索、分析和可视化,适合于日志分析、监控、数据可视化等场景。
2、Elasticsearch(分布式全文搜索引擎)
Elastic Search简介及安装(windows,附:ELK安装)_es官网-优快云博客
ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。
Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。
Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档。
2.1 核心功能
-
全文搜索:Elasticsearch最广为人知的功能是全文搜索。它能够对文本数据进行快速的全文索引和搜索,是实现复杂搜索功能的理想工具。
-
实时数据分析:支持实时的数据更新和查询,适合用于日志分析、监控数据的实时处理等场景。
-
分布式架构:Elasticsearch基于分布式架构设计,支持跨集群的数据存储和检索,使其在扩展性和性能上具有很大优势。
-
RESTful API(沟通协议):Elasticsearch使用简单的HTTP接口(RESTful API),支持通过各种语言和平台进行集成。
2.2 架构与组件
-
集群(Cluster):一个或多个Elasticsearch节点(实例)组成一个集群,集群中的所有节点协同工作,共享数据和负载。
-
节点(Node):运行Elasticsearch的单个实例,节点可以有不同的角色(如主节点、数据节点等),负责存储数据和处理查询。
-
索引(Index):一个索引类似于传统数据库中的一个表,包含了一个数据集。每个索引都有唯一的名称,用于引用其中的文档。
-
文档(Document):Elasticsearch中的最小数据单元,每个文档是一个JSON格式的对象,存储在索引中。
-
分片(Shard):每个索引可以被分割为多个分片(shards),每个分片是一个Lucene索引。分片提供了数据的分布和并行处理能力,确保系统的高可用性和可扩展性。
-
副本(Replica):每个分片都可以有一个或多个副本,用于数据冗余和提高系统的容错能力。
2.3 使用场景
-
日志和事件数据分析:适合处理大规模的日志、事件流数据,提供实时的查询和分析能力。常与Logstash和Kibana(组成ELK Stack)一起使用。
-
全文搜索应用:如电子商务网站中的产品搜索,社交媒体平台的用户内容搜索。
-
监控和报警系统:通过与Kibana等工具结合,提供数据的可视化和实时监控功能。
-
商业智能(BI):支持复杂数据查询和分析,帮助企业从数据中获取洞察。
2.4 Elasticsearch优点与缺点
优点:
-
高性能:得益于Lucene的底层支持,Elasticsearch在处理全文搜索和分析操作时性能非常优越。
-
易扩展:其分布式架构设计使得集群可以随着数据量的增长而轻松扩展。
-
灵活性强:支持多种数据类型和复杂查询语法,可以适应各种不同的应用需求。
-
开放源代码:免费且活跃的社区支持,用户可以自由定制和扩展。
缺点:
-
资源消耗:作为一个内存密集型应用,Elasticsearch对硬件资源的要求较高,尤其在处理大量数据时。
-
难学:虽然Elasticsearch易于集成,但对于新手来说,理解其复杂的查询DSL(Domain Specific Language)和架构可能需要一些时间。
-
管理复杂性:在大型分布式集群环境中,管理和调优Elasticsearch需要相当的专业知识
https://nodejs.org/en/download nodejs 安装包
3、Logstash(数据收集引擎)
Logstash 作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后将处理后的数据发送到存储或分析系统(例如Elasticsearch)。 Logstash 由 Ruby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。
3.1 主要特点
-
数据收集:
Logstash能够从多种数据源(如日志文件、数据库、消息队列等)收集数据。
它支持各种输入插件,这些插件帮助你从不同的系统或服务中提取数据。
-
数据处理:
Logstash使用过滤器插件来处理数据,可以对数据进行清洗、格式转换、字段解析等操作。
支持丰富的数据处理操作,比如正则表达式解析、日期转换、字段拆分和合并等。
-
数据输出:
处理后的数据可以被发送到多种输出目标,如Elasticsearch、关系型数据库、消息队列、文件系统等。
输出插件的灵活性使得Logstash能够与各种系统集成。
-
可扩展性:
Logstash的架构允许通过插件轻松扩展和自定义,插件包括输入插件、过滤器插件、输出插件和编码插件等。
-
实时处理:
Logstash支持实时数据处理,适用于需要快速数据流的场景,比如实时日志监控、数据流分析等。
3.2 使用场景
-
日志收集和分析:从各种日志文件中提取数据(如系统日志、应用日志),然后将数据发送到Elasticsearch进行集中化分析和监控。
-
数据转换:在数据进入目标存储之前,对其进行清理、格式化和标准化处理。
-
数据流整合:从多种来源获取数据,将其汇聚到一个统一的平台进行进一步的分析和决策支持。
3.3 数据流向****
input(数据采集) filter(数据过滤、分析、格式化) output (数据输出到ES搜索引擎)
3.3 其他 数据收集组件
① Filebeat
轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中。行解析
filebeat 结合 logstash 带来好处: 1)通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力 2)从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取 3)将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件 4)使用条件数据流逻辑组成更复杂的处理管道
缓存/消息队列(redis、kafka、RabbitMQ等):可以对高并发日志数据进行流量削峰和缓冲ÿ