ELK Stack 教程:Kibana、Logstash 和 Elasticsearch 是什么?
什么是 ELK Stack?
ELK Stack 是三个开源产品——Elasticsearch、Logstash 和 Kibana 的集合。ELK stack 提供集中式日志记录,以便识别服务器或应用程序的问题。它允许您在单个位置搜索所有日志。它还通过在特定时间范围内连接日志来帮助查找多个服务器中的问题。
- E 代表 ElasticSearch:用于存储日志
- L 代表 LogStash:用于日志的发送、处理和存储
- K 代表 Kibana:一个可视化工具(一个 Web 界面),通过 Nginx 或 Apache 托管
ElasticSearch、LogStash 和 Kibana 均由 Elastic 公司开发、管理和维护。
ELK Stack 旨在使用户能够从任何来源、任何格式的数据中提取数据,并实时搜索、分析和可视化该数据。
ELK Stack 架构
现在,在本 ELK stack 教程中,我们将学习 ELK 架构
这是 ELK stack 的简单架构
- 日志:标识需要分析的服务器日志
- Logstash:收集日志和事件数据。它还会解析和转换数据
- ElasticSearch:Logstash 转换后的数据被存储、搜索和索引。
- Kibana:Kibana 使用 Elasticsearch 数据库进行探索、可视化和共享
但是,还需要另一个组件用于数据收集,即 Beats。这促使 Elastic 将 ELK 重命名为 Elastic Stack。
在处理大量数据时,您可能需要 Kafka、RabbitMQ 进行缓冲和弹性。为了安全起见,可以使用 nginx。
现在,在本 Elastic stack 教程中,让我们深入了解所有这些开源产品:
什么是 Elasticsearch?
Elasticsearch 是一个NoSQL 数据库。它基于 Lucene 搜索引擎,并使用 RESTful API 构建。它提供简单的部署、最大的可靠性和易于管理。它还提供高级查询以执行详细分析,并将所有数据集中存储。它有助于快速搜索文档。
Elasticsearch 还允许您存储、搜索和分析大量数据。它主要用作支持已完成搜索需求应用程序的底层引擎。它已被现代 Web 和移动应用程序的搜索引擎平台所采用。除了快速搜索外,该工具还提供复杂分析和许多高级功能。
Elastic search 的特性
- 使用 Java 编写的开源搜索服务器
- 用于索引任何类型的异构数据
- 具有 JSON 输出的 REST API Web 界面
- 全文本搜索
- 近实时 (NRT) 搜索
- 分片、复制的可搜索 JSON 文档存储
- 无模式、基于 REST 和 JSON 的分布式文档存储
- 多语言和地理位置支持
Elasticsearch 的优点
- 存储无模式数据,并为您的数据创建模式
- 借助多文档 API 逐条处理您的数据记录
- 执行数据过滤和查询以获得洞察
- 基于 Apache Lucene 并提供 RESTful API
- 为实时索引使用提供水平可伸缩性、可靠性和多租户功能,以加快搜索速度
- 帮助您垂直和水平扩展
Elastic Search 中使用的重要术语
现在,在本 ELK 教程中,让我们学习 ElasticSearch 中使用的关键术语
术语 | 用途 |
---|---|
集群 | 集群是节点的集合,这些节点共同保存数据并提供联合索引和搜索功能。 |
节点 | 节点是 Elasticsearch 实例。当 Elasticsearch 实例启动时创建。 |
索引 | 索引是具有相似特征的文档集合。例如,客户数据、产品目录。在执行索引、搜索、更新和删除操作时非常有用。它允许您在一个集群中定义任意数量的索引。 |
文档 | 它是可索引的基本信息单元。它以 JSON(键:值)对的形式表示。‘{“user”: “nullcon”}’。每个文档都与一个类型和一个唯一的 ID 相关联。 |
分片 | 每个索引可以分成多个分片,以便能够分发数据。分片是索引的原子部分,如果您想添加更多节点,可以将其分布在集群中。 |
什么是 Logstash?
Logstash 是数据收集管道工具。它收集数据输入并将其馈送到 Elasticsearch。它收集来自不同来源的各种类型的数据,并使其可供进一步使用。
Logstash 可以统一来自不同来源的数据,并将数据规范化到您想要的目的地。它允许您清理和民主化所有数据,以供分析和可视化用例使用。
它包含三个组件
- 输入:传递日志以将其处理成机器可理解的格式
- 过滤器:一组用于执行特定操作或事件的条件
- 输出:已处理事件或日志的决策者
Logstash 的特性
现在,在本 LogStash 教程中,让我们学习 LogStash 的特性
- 事件通过内部队列在每个阶段之间传递
- 允许为您的日志提供不同的输入
- 日志的过滤/解析
Logstash 的优势
- 提供数据处理的集中化
- 它分析各种结构化/非结构化数据和事件
- ELK LogStash 提供插件以连接到各种类型的输入源和平台
什么是 Kibana?
Kibana 是一个数据可视化工具,它完成了 ELK stack。此工具用于可视化 Elasticsearch 文档,并帮助开发人员快速了解它。Kibana 仪表板提供各种交互式图表、地理空间数据和图形来可视化复杂查询。
它可用于搜索、查看和交互存储在 Elasticsearch 目录中的数据。Kibana 帮助您执行高级数据分析,并在各种表格、图表和地图中可视化数据。
在 Kibana 中,有不同的方法可以对数据执行搜索。
以下是最常见的搜索类型
搜索类型 | 用途 |
---|---|
自由文本搜索 | 用于搜索特定字符串 |
字段级搜索 | 用于在特定字段中搜索字符串 |
逻辑语句 | 用于将搜索组合成逻辑语句。 |
邻近搜索 | 用于在特定字符邻近范围内搜索词语。 |
现在,在本 Kibana 教程中,让我们学习 Kibana 的重要特性
Kibana 的特性
- 强大的前端仪表板,能够可视化来自 elastic 集群的索引信息
- 支持对索引信息的实时搜索
- 您可以搜索、查看和交互存储在 Elasticsearch 中的数据
- 执行数据查询并以图表、表格和地图形式可视化结果
- 可配置的仪表板,用于在 elasticsearch 中切片和分析 logstash 日志
- 能够以图表等形式提供历史数据
- 易于配置的实时仪表板
- Kibana Elasticsearch 支持对索引信息的实时搜索
Kibana 的优点和缺点
- 易于可视化
- 与 Elasticsearch 完全集成
- 可视化工具
- 提供实时分析、图表、汇总和调试功能
- 提供直观且用户友好的界面
- 允许共享搜索过的日志快照
- 允许保存仪表板和管理多个仪表板
为什么需要日志分析?
在基于云的环境基础设施中,性能和隔离非常重要。云中虚拟机的性能可能因特定的负载、环境和系统中的活动用户数量而异。因此,可靠性和节点故障可能成为一个重大问题。
日志管理平台可以监控上述所有问题,还可以处理操作系统日志、NGINX、用于 Web 流量分析的 IIS 服务器日志、应用程序日志以及 AWS(Amazon Web Services)上的日志。
日志管理有助于 DevOps 工程师、系统管理员做出更好的业务决策。因此,通过 Elastic Stack 或类似工具进行日志分析很重要。
ELK vs. Splunk
Elk | Splunk |
---|---|
Elk 是开源工具 | Splunk 是商业工具。 |
由于 Kibana 的原因,Elk stack 不提供 Solaris 可移植性。 | Splunk 提供 Solaris 可移植性。 |
处理速度受到严格限制。 | 提供准确快速的处理。 |
ELK 是一个技术栈,由 Elastic Search-Logstash-Kibana 组合而成。 | Splunk 是一个专有工具。它提供本地部署和云解决方案。 |
在 ELK 中,搜索、分析和可视化只有在 ELK stack 设置完成后才可能。 | Splunk 是一个完整的可用数据管理包。 |
ELK 工具不支持与其他工具集成。 | Splunk 是一个用于设置与其他工具集成的有用工具。 |
案例研究
NetFlix
Netflix 大量依赖 ELK stack。该公司使用 ELK stack 来监控和分析客户服务运营的安全日志。它允许他们索引、存储和搜索来自十几个集群(近 800 个节点)的文档。
著名的社交媒体营销网站 LinkedIn 使用 ELK stack 来监控性能和安全。IT 团队将 ELK 与 Kafka 集成,以支持其实时负载。他们的 ELK 操作包括六个不同数据中心的 100 多个集群。
Tripwire
Tripwire 是一个全球安全信息事件管理系统。该公司使用 ELK 来支持信息包日志分析。
中等
Medium 是一个著名的博客发布平台。他们使用 ELK stack 来调试生产问题。该公司还使用 ELK 检测 DynamoDB 热点。此外,使用此堆栈,该公司每周可以支持 2500 万独立读者以及数千篇发布帖子。
ELK stack 的优点和缺点
优点
- 当企业各种应用程序的日志汇聚到一个 ELK 实例时,ELK 效果最佳
- 它为这个单一实例提供了惊人的见解,并且无需登录一百个不同的日志数据源
- 快速本地安装
- 易于部署,可垂直和水平扩展
- Elastic 提供多种语言客户端,包括 Ruby、Python、PHP、Perl、.NET、Java 和 JavaScript 等
- 支持不同编程和脚本语言的库可用
缺点
- 当您处理复杂设置时,堆栈中的不同组件可能难以处理
- 没有像试错法那样的事情。因此,做得越多,学到的越多
摘要
- 当试图识别服务器或应用程序问题时,集中式日志记录会很有用
- ELK 服务器栈对于解决与集中式日志记录系统相关的问题非常有用
- ELK stack 是三个开源工具 Elasticsearch、Logstash Kibana 的集合
- Elasticsearch 是一个 NoSQL 数据库
- Logstash 是数据收集管道工具
- Kibana 是一个数据可视化工具,它完成了 ELK stack
- 在基于云的环境基础设施中,性能和隔离非常重要
- 在 ELK stack 中,处理速度受到严格限制,而Splunk 提供准确快速的处理
- Netflix、LinkedIn、Tripware、Medium 都在使用 ELK stack 来开展业务
- ELK Syslog 在各种企业应用程序的日志汇聚到一个 ELK 实例时效果最好
- 当您处理复杂设置时,堆栈中的不同组件可能难以处理
请参考我们的ElasticSearch 面试题和答案,供初级和经验丰富的候选人参考。