ELK Stack教程:Kibana Logstash 和 Elasticsearch

⚡ 智能摘要

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

  • 🧩 堆栈角色: Elasticsearch 用于存储和索引数据, Logstash 处理和发送日志,Kibana 将结果可视化。
  • 🔎 Elasticsearch: 一款基于 Lucene 的 NoSQL 搜索引擎,可索引异构数据,并通过 REST API 返回近乎实时的全文搜索结果。
  • 🛠️ Logstash: 一个管道,用于从多个来源摄取、过滤和转换日志,然后将其馈送到 Elasticsearch 中。
  • 📊 Kibana: 一个网络仪表盘,可以将索引数据转换为交互式图表、地图和图形,以便快速浏览。
  • 📦 Elastic Stack: 轻量级 Beats 分发器在边缘收集数据,这促使 Elastic 将 ELK 更名为 Elastic Stack。
  • 🏢 生产用途: NetflixLinkedIn 和 Medium 在大型集群上运行 ELK,用于日志记录、安全和监控。
  • ELK 对比 Splunk: ELK 是免费开源的,而 Splunk 是一个商业平台,具有更快的处理速度和更广泛的集成。

ELK Stack架构展示了Kibana如何运作, LogstashElasticsearch 和 Elasticsearch 协同工作,实现集中式日志记录和分析。

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。

ELK Stack架构图显示了 LogstashElasticsearch 和 Kibana 数据流

当处理海量数据时,可以在管道前面添加 Kafka 或 RabbitMQ 来进行缓冲和提高弹性。

为了增加安全性,可以在堆栈前面放置一个反向代理,例如 Nginx。

基于 ELK Stack 架构,并添加了 Beats 用于数据收集

考虑到架构,以下各节将更详细地了解堆栈中的每个开源产品。

什么是弹性搜索?

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

职业社交网站 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有很多优点,但也存在一些需要考虑的缺点:

  • 随着系统配置的日益复杂,各个组件的管理可能会变得困难。
  • 学习曲线确实很陡峭,所以在积累经验的过程中,要做好经历一些试错的准备。

常见问题

Beats 是轻量级的开源数据传输工具,以代理的形式安装在服务器上。Filebeat 用于转发日志文件,Metricbeat 用于收集系统指标。它们可以将数据直接发送到 Elasticsearch 或通过其他方式发送。 Logstash由于添加了 Beats 用于数据收集,Elastic 将 ELK Stack 更名为 Elastic Stack。

ELK 代表 Elasticsearch, Logstash以及 Kibana。当 Elastic 将其轻量级数据打包工具 Beats 添加到产品线后,合并后的产品更名为 Elastic Stack。因此,Elastic Stack 指的是包含上述三个工具以及 Beats 和其他功能(例如安全性和机器学习)的产品。

是的,Elasticsearch。 LogstashElasticsearch 和 Kibana 均可免费下载。自 2024 年起,Elastic 以开源 AGPLv3 许可证提供 Elasticsearch 和 Kibana,同时还提供 SSPL 和 Elastic 许可证。机器学习和告警等高级功能需要付费订阅。

Elasticsearch 是一个基于 Apache Lucene 构建的、面向文档的 NoSQL 数据库,它支持模式灵活,并通过 REST API 进行查询。关系型数据库使用固定的表、行和 SQL,并遵循 ACID 事务。Elasticsearch 针对全文搜索和近实时分析进行了优化,而非严格的事务一致性。

生产节点通常至少需要 16 GB 内存,JVM 堆内存设置为内存的 50% 左右,并保持在 30 GB 以内。小型测试或独立部署环境所需的内存更少。Beats 和 Logstash 比 Elasticsearch 需要的资源少得多。

Grok 是一个 Logstash 这是一个过滤器插件,它使用基于正则表达式的可重用模式,将非结构化的日志行解析成结构化的、命名的字段。它被广泛用于……trac在将 Web 服务器和应用程序日志索引到 Elasticsearch 之前,提取这些日志中的时间戳、IP 地址和状态代码。

Elasticsearch 内置机器学习功能,可以模拟正常的日志行为并自动标记异常情况。这些 AIOps 功能可以将相似的消息分组、检测异常数据量并加快根本原因分析,从而缩短平均解决时间。工程师在采取任何行动之前,仍应审查已标记的事件。

是的。例如这样的工具。 ChatGPTGitHub 副驾驶 可以起草 Logstash 通过简短提示即可获取 grok 模式、Elasticsearch 查询 DSL 和 Kibana 设置。务必测试生成的管道,因为 AI 可能会引用过时的字段名称或已弃用的语法。

总结一下这篇文章: