客户端同学应该理解的 ELK Stack 组件知识

1,748 阅读4分钟

点赞关注,不再迷路,你的支持对我意义重大!

🔥 Hi,我是丑丑。本文 GitHub · Android-NoteBook 已收录,这里有 Android 进阶成长路线笔记 & 博客,欢迎跟着彭丑丑一起成长。(联系方式在 GitHub)

前言

  • ELK Stack 是一套开源的数据搜索 / 分析解决方案,核心组件包括:Elasticsearch、Logstach、Kibana 和后来的 Beants。对于客户端同学来说,一般只会接触到其中的 Kibana 组件。
  • 在这篇文章里,我将简单总结 ELK Stack 背后运行的架构逻辑,以及总结 Kibana 的使用。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。

目录


1. 背景

传统的日志分析是直接从日志文件中grep / awk 日志信息,这种方式文本搜索慢,难以多维度查询。在大型系统中,往往采用的是分布式部署的架构(不同服务模块部署在不同的服务器节点上)。在出现问题时,需要一套集中化的日志管理工具来收集 / 分析所有节点上的日志,提高定位问题的效率。

提示:

  • Linux grep 命令:用于查找文件里符合条件的字符串;
  • awk 是一个文本分析工具。

2. ELK Stack 架构

ELK Stack 组件包含 Elasticsearch、Logstash、Beats 和 Kibana。早期版本的 ELK 组件只包含 Elasticsearch、Logstash 和 Kibana 三个组件,这就是 “ELK” 三个字母的来源。在 2015 年,ELK 组件增加了 Beats,为了命名方便,以后 ELK 组件的更新迭代版本都统称为 ELK Stash。依据

下面简单介绍几个组件的负责的职能,因为我们是客户端同学,只要理解大概的用途即可。

  • Elasticsearch: 开源的分布式搜索和分析引擎(RESTful 风格);

  • Logstash: 开源的数据采集工具,允许在将数据索引到 Elasticsearch 之前,收集多个来源的数据,进行过滤和转换。在实现上,Logstash 采取的是 C/S 架构,Logstash Agent 安装在需要收集数据的主机上,Logstash Server 收集各个主机上的数据。

  • Kibana: 开源的 Elasticsearch 数据可视化和管理工具,可以提供多种实时图表(例如:直方图、线形图、饼状图、地图等)。

  • Beats: 轻量级的数据采集工具,集合了多种单一用途数据采集器。早期 ELK 组件采用 Logstash 进行日志收集,但是 Logstach 对资源消耗高,使用 Beats 性能占用更加轻量。Beats 和 Logstash 虽然有重叠的功能,但是依然可以将数据转发至 Logstash 获得更强大的数据转换能力。

另外,ELK Stack 组件往往还需要配合 Kafka 或 Redis 消息队列,这是为了降低数据丢失隐患。在没有消息队列的情况下,如果服务侧组件出现故障,那么会出现数据丢失。而引入消息队列的情况下,在出现故障时数据会被存储下来,降低了数据丢失隐患。


3. Kibana 的使用

对于客户端同学,更关心的应该在面向分析侧的 Kibana,这一节我们就着重来总结 Kibana 的使用。

3.1 数据搜索

数据搜索是 Kibana 最基础也是最主要的功能,在数据探索(Discover)页面可以交互式地探索你的数据。

简单熟悉下页面中的几块区域:

  • 搜索条件:可以使用简单的文本查询,或者使用 Lucene 语法,也可以使用基于 JSON 的 Elasticsearch 查询 DSL;
  • 时间筛选:选择搜索数据的时间跨度,需要注意选择是跨度越长,对应的数据搜索耗时越大;
  • 项目筛选:选择搜索数据的项目,一般每个项目的日志是独立收集并通过 Logstash 采集到 Elasticsearch;
  • 字段筛选:对搜索结果进行过滤,只显示包含特定字段值的数据。

在数据展示区,你可以看到所有筛选后的数据。展开具体一条数据,其中的 msg 字段值就是你的项目中上报的数据(payload)。

3.2 可视化

在可视化(Visualize)页面可以创建可视化控件,在仪表盘(Dashboards)页面可以把你创建的多个可视化控件整合在一起展示。


参考资料


创作不易,你的「三连」是丑丑最大的动力,我们下次见!