为秀
  • 首页
  • 新闻
  • 软件
  • 笔记
  • 问答
问答

ELK是什么

祥林 ⋅ 2年前

ELK又被称为ELK Stack,既然被称为Stack,说明它并不是某一种技术,它是Elastic公司推出的一整套日志收集、分析和展示的解决方案。ELK分别为3个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。下面我们分别来介绍这三个项目。

Elastic Search

Elastic Search(简称ES)毫无疑问是ELK的核心,他是一个分布式的开源搜索和分析引擎,适用于几乎所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。说到Elastic Search就不能不提Apache Lucene。Lucene是一个高性能、全功能的全文检索引擎库,但其仅仅是一个库,需要使用Java将Lucene集成到应用程序中,并且需要一定的信息检索学知识才能了解其工作原理。而Elasticsearch 同样使用 Java 编写,其内部使用 Lucene 做索引与搜索,但它隐藏了Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API,从而使全文搜索变得简单。同时,针对大数据场景,ES可以分布式部署于上千台节点,处理PB级数据。下面介绍几个ES的基本概念

集群(Cluster)

集群是一个或多个节点(服务器)的集合,这些节点负责保存全部数据,并在所有节点之间提供联合索引和搜索功能。

节点(Node)

节点是一台服务器,它是群集的一部分,存储数据并参与群集的索引和搜索功能。

索引(Index)

索引是具有相似特征的文档的集合。 例如,可以为客户数据创建索引,为产品目录创建另一个索引,为订单数据创建另一个索引。 索引由名称标识(必须全为小写),并且对该索引中的文档执行索引,搜索,更新和删除操作时,该名称用于引用索引。

倒排索引(inverted index)

Elasticsearch 使用倒排索引(也称为反向索引)来进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。而一般关系型数据库所用的正向索引(forward index)如果需要通过关键词来所某个文档,需要遍历全部文档,对于全文检索来说,效率低下。

Logstash

Logstash是一个开源的数据收集引擎,可以为ES收集来自不同数据源的数据,并利用其丰富的过滤器,对数据进行实时解析和转换,而ES并不是logstash的唯一输出选择,它同样可以为数据库、消息队列、云存储等多种应用提供数据。

工作原理

ELK是什么-为秀
Logstash事件处理管道包括三个阶段:输入→过滤→输出。输入会生成事件,过滤器会对其进行修改,输出会将它们发送到其他地方。输入和输出支持编解码器,使您可以在数据进入或退出管道时对其进行编码或解码,而不必使用单独的过滤器。

输入(Input)

Logstash可以在同一时间从不同的常用来源捕捉数据,比如日志、指标、Web应用和数据存储等。

筛选器(Filter)

筛选器是Logstash管道中的中间处理设备。如果事件符合特定条件,则可以将过滤器与条件语句结合使用,对事件执行操作。比如常用的过滤器插件grok,它可以将非结构化的日志机构化,将日志消息分解成逻辑命名的字段,便于查询、分析和可视化。

输出(Output)

输出是Logstash管道的最后阶段。一个事件可以通过多个输出,但是一旦完成所有输出处理,该事件就完成了执行。根据不同的用途,logstash的输出到不同的下游,比如这些经过筛选的数据如果用于分析,就会被输出到Elastic Search或者MongoDB,如果用于监控就会被输出到Nagios或者Zabbix,如果用于存档就会被输出到HDFS或者S3。

Kibana

Kibana是一个开源的分析和可视化平台,用来搜索、查看储存在ES所以含中的数据。Kibana强大的交互功能可以使用户轻松地执行高级数据分析,并且以各种图表、表格和地图的形式可视化数据,其展示界面基于浏览器,简单易懂,能够快速创建和共享动态仪表板,实时显示ES查询的变化。

Beats

Beats是ELK stack中后来加入的一个组件,它是一个轻量级的数据采器,我们知道logstash也具有数据采集功能,但由于logstash是基于java开发,需要依赖虚拟机,同时又要进行数据处理,因此在性能方面并不令人满意。而beats在数据收集层面上并不进行过于复杂的数据处理,只是进行数据采集并传输给下游,另一方便,由于beats采用go语言开发,go是一种系统编程语言,具有并发友好以及部署方便的特点,能够在不依赖虚拟机的情况下运行,因此在数据采集方面性能优于logstash。Beats以libbeat为核心库的架构,方便用户创建出适合于不通类型数据采集的Beats。
目前官方负责维护的Beats和所收集的数据有以下几种。

Auditbeat|审计数据|
Filebeat|日志文件|
Functionbeat |云端数据|
Heartbeat |可用性监测数据
Journalbeat |系统日志
Metricbeat |系统或服务的轻量型指标
Packetbeat |网络数据
Winlogbeat |Windows事件日志

通过Beats采集的数据可以直接传输到ES,如果需要事先处理,也可以先发送到Logstash进行解析,然后再传输给ES,下图是Beats的常见使用方法。
ELK是什么-为秀

# Elasticsearch# Kafka# Kibana# Logstash
- THE END -
0 0 share
本文由 @祥林 修订发布于 2020-11-15。
本文系作者 @祥林 原创发布在 为秀。未经许可,禁止转载。
PREV
分组交换是什么
NEXT
数据库系统的结构
相关文章
  • Elasticsearch是什么
  • TiDB是什么
  • X协议是什么
  • X11-forwarding是什么
  • API是什么
  • REST API是什么
评论 (0)
祥林 不忘初心,方得始终
标签
API (1) Atlassian (1) DAU (1) Elasticsearch是什么 (1) ElasticSearch集群健康 (1) ES是什么 (1) ES集群 (1) ES集群健康 (1) HTTPS (1) Jira (1) MAU (1) PV (1) QPS (1) raspberry-pi-CM4 (1) RestAPI (1) Spring Initializr (1) start.spring.io (1) TPS (1) UV (1) X11-forwarding (1) X协议 (1) 云端知识库 (2) 云计算 (2) 互连 (1) 关系数据库 (2) 内存 (1) 吞吐量 (1) 并发 (1) 并发数 (1) 搭建start.spring.io (1) 操作系统 (41) 数据库 (6) 树莓派 (3) 泛型 (1) 禅道 (1) 线程安全 (2) 网络分类 (1) 网络协议 (2) 计算机系统层次结构 (2) 计算机系统结构 (3) 计算机组成 (1) 计算机网络 (6) 软件测试 (1) 进程 (2) 项目管理 (2)
Copyright © 2020-2023 为秀. All rights reserved. 川公网安备 51019002002633号 蜀ICP备20007773号