ELK Stack教程:Kibana Logstash 和 Elasticsearch
⚡ 智能摘要
ELK Stack 结合了三个开源工具——Elasticsearch、 Logstash以及 Kibana——用于收集、存储、搜索和可视化机器数据,为工程团队提供集中式日志记录和实时分析,以便更快地对服务器和应用程序进行故障排除。

ELK Stack 是应用最广泛的开源集中式日志记录和日志分析解决方案之一。本 ELK Stack 教程将解释 Elasticsearch、 Logstash,以及 Kibana,这三个工具是如何协同工作的,以及该平台在现实世界的监控和可观测性工作中是如何使用的。
什么是 ELK Stack?
此 麋鹿栈 是三个开源产品的集合——Elasticsearch、 Logstash以及 Kibana。它提供集中式日志记录,让您可以在一个位置搜索所有日志,从而帮助您识别服务器或应用程序的问题。它还可以帮助您关联特定时间范围内多个服务器上的日志。
- E Elasticsearch 是 Elasticsearch 的缩写,用于存储日志。
- L 代表 Logstash用于船舶ping处理和存储日志。
- K Kibana 代表: 可视化工具 (通过 Nginx 或 Apache 托管的)Web 界面。
Elasticsearch, LogstashKibana 和 Android 都是由一家名为 Swift 的公司开发、管理和维护的。 松紧带.
ELK Stack 的设计宗旨是让用户能够从任何来源、以任何格式获取数据,然后实时搜索、分析和可视化这些数据。
麋鹿栈 Archi质地
既然您已经了解了堆栈是什么,本节将解释 ELK 架构以及数据如何在组件之间流动。
ELK流程遵循清晰的顺序,其中每个工具都有其特定的任务:
- 日志数据: 已确定需要分析的服务器日志。
- Logstash: 收集日志和事件数据,然后对其进行解析和转换。
- Elasticsearch: 数据转换 Logstash 已存储、搜索和索引。
- Kibana: 使用 Elasticsearch 数据库来探索、可视化和分享见解。
然而,为了进行数据收集,通常会添加第四个组件,名为 Beats。Beats 是安装在服务器上的轻量级数据采集器,正是由于 Beats 的加入,Elastic 将 ELK 更名为 Elastic Stack。
当处理海量数据时,可以在管道前面添加 Kafka 或 RabbitMQ 来进行缓冲和提高弹性。
为了增加安全性,可以在堆栈前面放置一个反向代理,例如 Nginx。
考虑到架构,以下各节将更详细地了解堆栈中的每个开源产品。
什么是弹性搜索?
Elasticsearch 是一个 NoSQL数据库 它基于 Lucene 搜索引擎,并采用 RESTful API 构建。它提供简单的部署、高可靠性和易于管理的特性,并将所有数据集中存储,以便您可以运行高级查询和快速文档搜索。
Elasticsearch 还允许您存储、搜索和分析大量数据。它最常被用作底层引擎,为具有高搜索需求的应用程序提供支持。
由于 Elasticsearch 在快速搜索的基础上增加了分析和许多高级功能,因此已被现代 Web 和移动应用程序的搜索平台广泛采用。
Elasticsearch 的特点
Elasticsearch 提供了一套丰富的数据索引和搜索功能:
- 一个用开源语言编写的搜索服务器 Java.
- 能够对任何类型的异构数据进行索引。
- 提供基于 REST API 的 Web 界面,并输出 JSON 格式的数据。
- 全文检索。
- 近实时(NRT)搜索。
- 一个分片式、可复制、可搜索的 JSON 文档存储系统。
- 无模式、基于 REST 和 JSON 的分布式文档存储。
- 支持多语言和地理位置信息。
Elasticsearch 的优势
- 存储无模式数据,也可以为您的数据创建模式。
- 允许您使用多文档 API 逐条操作记录。
- 支持对数据进行筛选和查询,以获取洞察。
- 基于 Apache Lucene,并提供 RESTful API。
- 提供水平可扩展性、可靠性和多租户功能,实现实时索引和更快的搜索。
- 支持垂直和水平方向的缩放。
下表解释了在使用 Elasticsearch 时会遇到的关键术语:
| 术语 | 用法 |
|---|---|
| Cluster | 集群是由多个节点组成的集合,这些节点共同存储您的数据,并提供组合索引和搜索功能。 |
| Node | 节点是指单个 Elasticsearch 实例。它在 Elasticsearch 实例启动时创建。 |
| 索引 | 索引是具有相似特征的文档集合,例如客户数据或产品目录。它可用于索引、搜索、更新和删除操作,并且可以在一个集群中定义多个索引。 |
| 文件 | 文档是可被索引的基本信息单元。它以 JSON 键值对的形式表示,每个文档都关联着一个类型和一个唯一 ID。 |
| 碎片 | 每个索引都可以拆分成多个分片以分发数据。分片是索引的原子组成部分,随着节点的增加,分片可以分布在集群的各个位置。 |
什么是 Logstash?
Logstash 是该技术栈的数据收集管道工具。它收集数据输入并将其馈送到 Elasticsearch,从不同来源收集各种类型的数据,使其可供后续使用。
Logstash 它可以整合来自不同来源的数据,并将其规范化为您选择的格式。这使您可以清理所有数据并使其通用化,从而适用于各种分析和可视化用例。
它由三个部分组成:
- 输入: 传入日志并将其转换为机器可读格式。
- 过滤器: 一组对事件执行特定操作的条件。
- 输出: 负责路由每个已处理事件或日志的决策者。
特点 Logstash
Logstash 它包含多项使日志处理更加灵活的功能:
- 事件通过内部队列依次经过各个阶段。
- 允许输入不同的日志格式。
- 支持日志过滤和解析。
的优点 Logstash
- 集中处理您的数据。
- 分析各种结构化和非结构化数据及事件。
- 提供插件,可连接多种类型的输入源和平台。
什么是 Kibana?
Kibana 是完善 ELK Stack 的数据可视化工具。它用于可视化 Elasticsearch 文档,并通过交互式图表、地理空间数据和图形帮助开发人员快速深入了解数据,使复杂的查询变得易于理解。
您可以使用 Kibana 来搜索、查看和操作存储在 Elasticsearch 索引中的数据。它还可以帮助您执行高级操作。 数据分析 并以各种表格、图表和地图的形式呈现您的数据。
Kibana 支持多种数据搜索方法。以下列出了最常用的搜索类型:
| 搜索类型 | 用法 |
|---|---|
| 自由文本搜索 | 用于搜索特定字符串。 |
| 字段级搜索 | 用于在特定字段内搜索字符串。 |
| 逻辑陈述 | 用于将搜索语句合并成一个逻辑语句。 |
| 邻近搜索 | 用于搜索特定字符范围内的词语。 |
Kibana 还提供了一系列强大的功能,用于探索索引数据:
- 一个功能强大的前端仪表板,可将 Elasticsearch 集群中的索引信息可视化。
- 支持对索引信息进行实时搜索。
- 允许您搜索、查看和交互存储在 Elasticsearch 中的数据。
- 对数据执行查询,并将结果以图表、表格和地图的形式可视化。
- 一个可配置的仪表盘,用于进行各种切片和分析。 Logstash 日志记录在 Elasticsearch 中。
- 以图表等形式提供历史数据。
- 提供易于配置的实时仪表盘。
Kibana的优点和缺点
任何工具都有其优势,Kibana 也不例外,这些优势解释了它为何如此受欢迎:
- 数据可视化轻松便捷。
- 与 Elasticsearch 完全集成。
- 用作专用可视化工具。
- 提供实时分析、图表绘制、汇总和调试功能。
- 提供直观、用户友好的界面。
- 允许共享您搜索过的日志快照。
- 允许保存和管理多个仪表盘。
但也需要注意一些局限性:
- 它只能以 Elasticsearch 作为数据源。
- 构建和调整复杂的仪表盘可能需要经历一段陡峭的学习曲线。
为什么要进行日志分析?
在基于云的基础设施中,性能和隔离性非常重要。
云端虚拟机的性能会因具体负载、环境和活跃用户数量而异,因此可靠性和节点故障可能会成为重大问题。
A 日志管理平台 可以监控所有这些问题。它还可以处理操作系统日志、Nginx 和 IIS Web 服务器日志以进行流量分析、应用程序日志以及在 AWS 上生成的日志(Amazon Web服务).
最终,日志管理有所帮助。 DevOps的 工程师和系统管理员能够做出更明智、更基于数据的决策。因此,通过 Elastic Stack 或类似工具进行日志分析变得至关重要。
ELK 与 Splunk
一个常见的问题是 ELK Stack 与……相比如何 Splunk的这是一种流行的商业替代方案。下表总结了主要区别:
| 麋鹿 | Splunk的 |
|---|---|
| ELK 是一个开源工具。 | Splunk 是一个商业工具。 |
| ELK不提供 Solaris 得益于 Kibana,它具有良好的便携性。 | Splunk 提供 Solaris 可移植性。 |
| 处理速度受到严格限制。 | 提供准确快捷的处理服务。 |
| ELK 是由 Elasticsearch、 Logstash以及 Kibana。 | Splunk 是一款专有工具,提供本地部署和云解决方案。 |
| 在 ELK 中,只有在堆栈设置完成后才能进行搜索、分析和可视化。 | Splunk 是一款开箱即用的完整数据管理软件包。 |
| ELK 与其他工具的内置集成功能有限。 | Splunk 可用于设置与其他工具的集成。 |
客户案例
许多知名公司都依赖 ELK Stack 来大规模运行日志记录和分析。以下示例展示了它在生产环境中的应用。
Netflix
Netflix 该公司严重依赖 ELK Stack 来监控和分析其客户服务运营的安全日志。该平台允许 Netflix 对由大约 800 个节点组成的 15 个集群中的文档进行索引、存储和搜索。
职业社交网站 LinkedIn 使用 ELK Stack 来监控性能和安全性。其团队将 ELK 与 Kafka 集成,以实时处理负载,该操作覆盖六个数据中心的 100 多个集群。
绊
Tripwire 是一家全球安全信息和事件管理 (SIEM) 提供商,它使用 ELK Stack 来支持信息包日志分析。
中
Medium,这个流行的博客发布平台,使用 ELK Stack 来调试生产环境中的问题并进行检测 DynamoDB 热点网站。该技术栈帮助公司每周支持 25 万独立读者和数千篇新文章。
ELK Stack 的优点和缺点
优势
ELK Stack 具有多项优势,这也是它被广泛采用的原因:
- 当企业中各种应用程序的日志汇聚到单个 ELK 实例中时,效果最佳。
- 它仅凭一个实例就能提供丰富的洞察,无需登录数百个不同的数据源。
- 快速现场安装。
- 易于部署,并可进行垂直和水平扩展。
- Elastic 提供多种语言客户端,包括 Ruby。 PythonPHP、Perl、.NET Java和 Java脚本。
- 许多编程和脚本语言都有相应的库。
缺点
尽管ELK Stack有很多优点,但也存在一些需要考虑的缺点:
- 随着系统配置的日益复杂,各个组件的管理可能会变得困难。
- 学习曲线确实很陡峭,所以在积累经验的过程中,要做好经历一些试错的准备。


