00000197
Elastic Stack(以前称为 ELK Stack)是一套由 Elastic NV 公司开发的开源数据管理和分析软件套件。它是一组强大工具的集合,专门用于从任何来源、任何格式的数据中实时地搜索、分析和可视化数据。
Elastic Stack 是一个功能完整、易于扩展的数据可观测性平台。它将数据采集、处理、存储和可视化无缝集成,使企业和开发者能够从海量杂乱的数据中快速提取有价值的信息,广泛应用于运维、安全和业务分析等领域。
Elastic Stack 主要由四个核心产品组成,首字母缩写为 ELK:
Beats
Logstash
Elasticsearch
Kibana
它们在整个数据处理流程中扮演着不同的角色,协同工作,形成了一个完整的数据管道。

Beats 是一个平台,由多种单一的、轻量级的数据采集器组成。它们被安装在需要收集数据的服务器上,负责从成百上千台机器和系统收集数据并发送给 Logstash 或 Elasticsearch。
常见的 Beats 包括:
Filebeat:最常用,用于收集和转发日志文件。
Metricbeat:用于收集系统和服务级的指标(如 CPU、内存、Redis、Nginx 等)。
Packetbeat:用于网络数据包分析,监控应用流量。
Winlogbeat:专门用于收集 Windows 事件日志。
Auditbeat:收集审计数据,监控服务器的完整性。
特点:占用资源少,使用 Go 语言编写,部署简单。
Logstash 是一个强大的数据处理引擎,用作数据管道。它能够动态地从多种数据源采集数据,并对数据进行转换和 enrichment(丰富),然后将其发送到指定的“存储库”(通常是 Elasticsearch)中。
Logstash 的管道包含三个阶段:
Input(输入):从数据源(如 Beats、Kafka、数据库、文件等)获取数据。
Filter(过滤):解析、转换和丰富数据。这是最核心的阶段,常用插件包括:
grok:解析非结构化的日志数据并将其结构化。
mutate:对字段进行修改,如重命名、删除、替换。
date:解析日期字段。
geoip:根据 IP 地址添加地理信息。
Output(输出):将处理后的数据发送到目的地,最常见的是 Elasticsearch,也可以是 Redis、Kafka、电子邮件等。
特点:功能强大,但相对重量级,需要 JVM 来运行。
Elasticsearch 是整个栈的核心。它是一个分布式、RESTful 风格的搜索和分析引擎。它接收来自 Logstash 或 Beats 的数据,并以其强大的倒排索引技术进行存储和索引,从而提供近乎实时的搜索能力。
核心特性:
分布式和高可用性:数据被分片(Shard)并在集群中的多个节点上进行复制(Replica),实现水平扩展和故障转移。
近实时搜索:数据索引后,在很短的延迟内(约 1 秒)即可被搜索到。
强大的 REST API:所有操作(索引、搜索、集群管理)都可以通过简单的 RESTful API 完成。
倒排索引:使用倒排索引数据结构,使得全文搜索效率极高。
多租户:支持多个索引,可以用于不同的项目和应用程序。
角色:负责海量数据的存储、索引和快速检索。
Kibana 是为 Elasticsearch 设计的开源分析和可视化平台。它提供了一个用户友好的 Web 界面,允许用户通过图表、图形、地图等方式探索和可视化存储在 Elasticsearch 中的数据。
主要功能:
数据探索(Discover):直接查询和浏览 Elasticsearch 中的原始数据。
可视化(Visualize):创建各种图表,如柱状图、折线图、饼图、指标图等。
仪表盘(Dashboard):将多个可视化组件组合成一个综合的监控视图。
Canvas:创建像素级完美的、基于数据的演示文稿。
Machine Learning:集成机器学习功能,自动检测数据中的异常。
APM:应用性能监控,用于追踪应用程序的性能问题。
Logs:专门的日志管理界面。
角色:将 Elasticsearch 中的数据转化为有商业价值的洞察力。
以一个 网站访问日志分析 为例:
采集:Filebeat被安装在 Web 服务器上,监控 Nginx 的访问日志文件,并将新的日志行发送给 Logstash。
处理:Logstash接收到日志后,使用 grok过滤器将杂乱的日志行解析成结构化的字段(如 client_ip、timestamp、request_method、status_code等),然后使用 geoip过滤器根据 client_ip添加地理位置信息。最后,将处理好的数据发送到 Elasticsearch。
存储与索引:Elasticsearch接收数据,进行索引,并将其存储在集群中。
可视化:运维人员在 Kibana中创建一个仪表盘,包含:
一个地图,显示全球访问者的分布。
一个折线图,显示每分钟的请求量。
一个饼图,显示 HTTP 状态码的比例。
一个数据表,列出访问量最高的 URL。
优势:
开源且功能强大:社区活跃,功能丰富。
易扩展:组件清晰,可以水平扩展以处理海量数据。
近实时性:从数据摄入到可查询,延迟极低。
一站式解决方案:覆盖了从数据采集到可视化的完整链路。
应用场景:
日志管理与分析(最主要):运维监控、故障排查、安全分析。
应用搜索:为网站或应用提供强大的搜索引擎。
指标分析:基础设施和应用程序性能监控。
安全分析(SIEM):使用 Elastic Stack 构建安全信息和事件管理系统。
业务智能:分析业务数据,生成报表和洞察。
架构变化对比
| 特性 | 7.x | 8.x | 9.x |
|---|---|---|---|
默认安全 |
可选 |
强制开启 |
进一步增强 |
集群协调 |
新子系统 |
稳定优化 |
云原生优化 |
向量搜索 |
基础支持 |
kNN搜索 |
增强向量 |
配置复杂度 |
中等 |
简化 |
进一步简化 |
云集成 |
基础 |
改进 |
深度集成 |