ELK技术栈简介

news2024/12/26 20:38:16

ELK技术栈简介

  • ELK是什么
  • ELK组件
    • Elasticsearch
      • ES基本概念
      • ES适用场景
    • Logstash
      • Input插件
      • Filter插件
      • Output插件
      • Codecs
    • Kibana
    • Beats

ELK是什么

ELK 即 Elasticsearch + Logstash + Kibana,是指Elastic公司开发的三种免费开源软件。其中,Elasticsearch是一个基于Apache Lucene的RESTful风格的分布式搜索引擎,Logstash是一款轻量的日志收集、处理和分发工具,Kibana则为Elasticsearch提供了一个前端可视化界面。ELK后来被更名为Elastic Stack,并在前面三种开源软件的基础上引入了Beats,用于提供轻量级的日志收集和传输功能。

对于数据量较小的业务场景,ELK可以采用如下的经典架构进行部署:

在这里插入图片描述

如果是数据量较大的业务场景,则可以考虑如下的部署架构:

在这里插入图片描述

ELK组件

Elasticsearch

Elasticsearch(后文简称ES)最早发布于2010年,是一款基于Apache Lucene实现的分布式全文检索和分析引擎。ES完全开源免费,使用Java语言开发,被归类于NoSQL数据库。不同于传统的关系型数据库,ES以非结构化的方式存储数据,因此不支持SQL查询。在ES中检索数据最简单的方法就是使用它提供的REST API。

ES基本概念

ES中基本概念与关系型数据库的对应关系:

ES概念关系型数据库概念
IndexDatabase
DocumentRow
TypeTable
FieldColumn

ES中有以下重要的基本概念:

  1. Index(索引)

ES中的Index是文件的逻辑分区,类似于关系型数据中的database概念。

  1. Documents(文档)

Documents是Index内部存储的JSON对象,类似于关系型数据库中表里面的一行数据。Documents是ES中数据存储的基本单元。

一个Document由不同的Fields构成。每个Field都是一个键值对,其中Key是Field的名称,Value则可以是字符串、数字、布尔表达式、对象、或者数组中的任意一种数据类型。

  1. Fields(属性/字段)

Field即字段或属性,类似于关系型数据库中的列。Field是ES中最小的独立单位的数据。

  1. Types(类型)

Types被用来进一步划分相似类型的数据。每个Type代表一种唯一类型的Documents。每个Type由一个名称和一个Mapping组成。通过添加_type属性来指定Type。

⚠️ 从ES 7开始,官方将Types列为deprecated。从ES 8开始,不再支持在查询中使用Types。

  1. Mapping(映射)

与关系型数据库中的schema类似,ES中的Mapping用于定义Index内部的不同Types。Mapping定义了特定类型Document的Fields——数据类型(比如字符串和整数)以及Fields在ES中应该如何被索引和存储。

Mapping可以显式定义,也可以在使用模板对Document进行索引时自动生成。模板包含的设置和Mapping可以被自动应用到新的索引。

  1. Node(节点)

Node是指运行了单个ES实例的主机。Node是ES集群中的一个成员,可以存储数据、参与集群索引以及检索操作。

  1. Shards(分片)

索引大小是导致ES崩溃的常见原因。由于每个Index可以存储的Documents数量没有限制,因此索引占用的磁盘空间量可能会超过服务器的上限。一旦索引逐渐逼近该限制,索引就会开始失效。

ES的分片机制可以把一个Index内部的数据水平拆分到多个节点上。它通过将一个Index切分为多个底层物理的Lucene Index来完成索引数据的分割存储功能。每一个物理的Lucene Index称为一个分片(Shard)。每一个分片内部都是一个全功能且独立的索引,可以由ES集群中的任意一个节点存储。

ES支持通过跨分片和节点的分布式操作来提高性能。用户可以控制每个索引的分片数量,并将这些分片托管在ES集群中的任意节点上。我们可以在创建索引时定义分片的数量,但是一旦创建完成,主分片的数量就不能再修改

  1. Replicas(副本)

为了能够轻松地从系统故障(例如意外停机或网络问题)中恢复,ES支持为分片创建副本。此时,原始分片被称为主分片(Primary shard),其副本称为副本分片(Replicas shard)。每个主分片可以有一个或多个副本。副本可以处理读请求,因此增加副本分片可以提高搜索性能。

副本旨在确保高可用性,所以它们不能与对应的主分片位于相同的节点上

与分片类似,副本的数量可以在创建索引时定义。与分片不同的是,副本的数量也可以在创建索引后随时动态修改。

🍎总结一下:

  • 一个ES Index集群中有多个Node。每个Node都是一个ES实例;
  • 每个Node上会有多个Shard和Replicas。同一个主Shard和它对应的Replicas不会位于同一个Node上;
  • 每个Shard都对应一个底层物理的Lucene Index文件;
  • 每个Lucene Index都由多个Segment段文件组成。每个段文件都存储有Documents。

ES适用场景

适用场景:

  • 全文检索:实现对海量数据的快速检索,自定义打分、排序机制。
  • 日志分析:通过ELK技术栈对日志进行收集统计,用于业务分析和错误排查。
  • 分布式文档:对json支持完善,对地理位置支持完善。
  • 数据可视化:配合Kibana或Grafana从多个维度对数据做聚合分析。

主要缺点:

  • 不支持事务:如果应用场景有强一致性要求,需要ES与关系型数据库结合使用。
  • 不擅长关联查询:ES不擅长关系型数据库的多表关联查询,性能很差。
  • 非实时数据:由refresh_interval决定,最快1s延迟。

Logstash

Logstash可以看作是一条具备实时数据传输和过滤能力的管道(Pipeline)。不同来源的数据被采集后从管道的输入端传入,经过一定的数据过滤和标准化处理,最终从输出端被传输到不同的目的地。Logstash提供大量插件,用于解析、转换和缓存任何类型的数据。

由Logstash聚合和处理的事件(Event)需要经历三个流程阶段:收集(Collection)、处理(Processing)和分发(Dispatching),分别由输入插件(Input plugins)、过滤插件(Filter plugins)、以及输出插件(Output plugins)完成。

Input插件

Logstash能够聚合来自各种不同数据来源的日志和事件。它提供50多种分别支持不同平台、数据库和应用的输入插件来采集数据。

常见的输入数据类型有file、beats、syslog、redis、http、tcp、udp、stdin。

Filter插件

Logstash提供大量的过滤插件来对采集到的数据进行中间处理。

常见的过滤插件包括grok、date、mutate、drop、clone、geoip。其中Grok是Logstash最重要的过滤插件,它可以将文本格式的字符串转换为结构化的数据,并支持正则表达式。

Output插件

Logstash提供一系列输出插件来将采集到的数据推送到不同的目的端。如果用户没有定义output,Logstash会自动创建一个stdout输出。一个Event可以经过多个输出插件。

常见的输出组件有elasticsearch、file、graphite、statsd等。

Codecs

Codecs即编解码器,可以在Input和Output中使用。例如,在数据进入输入插件之前对数据进行解码,在数据离开输出插件之前对其进行编码。

常见的Codecs有plain、json、multiline、msgpack。

Kibana

Kibana是一个完全开源的基于浏览器的用户界面,可以用来搜索、分析和可视化存储在Elasticsearch索引中的数据。Kibana不支持与其他数据库一起使用。

Beats

Beats是一种基于Go语言开发的轻量级数据采集工具。大多数Beats都直接安装在数据源上,用于特定的数据收集目的。Beats采集到的数据会被转发到Elasticsearch或Logstash。

常见的Beats包括filebeat、topbeat、heartbeat、metricbeat、packetbeat、auditbeat、functionbeat、winlogbeat。

  1. filebeat
    Filebeat用于采集和发送日志文件。Filebeat可以安装在几乎任何操作系统上,包括作为Docker容器部署,还附带了针对特定平台(如Apache、MySQL、Docker等)的内部模块,包含针对这些平台的默认配置和Kibana对象。

  2. heartbeat
    用于健康检查。

  3. metricbeat
    采集各种系统和平台的各种系统级度量指标。

  4. packetbeat
    采集服务器之间的网络包数据,可以用于应用程序和性能监控。

  5. winlogbeat
    专门为收集Windows事件日志而设计,可以用来分析安全事件、已安装的更新等等。

References
【1】https://elastic-stack.readthedocs.io/en/latest/introduction.html
【2】https://logz.io/learn/complete-guide-elk-stack/
【3】https://zhuanlan.zhihu.com/p/78309627
【4】https://www.jianshu.com/p/e8226138485d
【5】https://www.elastic.co/guide/en/elasticsearch/reference/6.0/_basic_concepts.html
【6】https://github.com/elastic
【7】https://logz.io/blog/10-elasticsearch-concepts/
【8】https://zhuanlan.zhihu.com/p/379656230

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于PHP+MYSQL在线小说阅读网的设计与实现

随着互联网信息的发展,人们在闲暇的时候更多的原因选择小说来进行阅读,一方面扩展自己的阅读圈,另一方面消磨闲暇时光,但是当下的很多小说网站,要么是要收取高昂的阅读法,要么就是整个网站多充斥着大量的广告,为了给广大网友一个健康,免费的阅读空间我们开发了本系统 本在线小说…

【JS】数据结构之树结构

文章目录树结构二叉树二叉搜索树平衡树(AVL树)红黑树回顾其他数据结构(每种数据结构都有自己特定的应用场景): 数组:通过下标查询很快,插入和删除数据的时候,效率会很低,…

新品上线 | 企企通推出达人管理系统,助力达人营销提效增速

01、直播市场发展迅速 企企通达人管理系统应运而生 近年来,直播凭借其即时性、互动性、多样化的优势,迅速在互联网占据一席之地,“直播”模式不断扩展,直播电商应运而生。 在技术发展与市场需求双重驱动下,中国直播市…

day04 springmvc

day04 springmvc 第一章 SpringMVC运行原理 第一节 启动过程 1. Servlet 生命周期回顾 生命周期环节调用的方法时机次数创建对象无参构造器默认:第一次请求 修改:Web应用启动时一次初始化init(ServletConfig servletConfig)创建对象后一次处理请求se…

嵌入式Linux系统中ARM汇编语言的使用方法

大家好,今天主要大家聊一聊,如何在ARM中使用汇编语言的方法。 目录 第一:汇编基础简介 第二:处理器内部数据传输指令 第三:存储器访问指令 第一:汇编基础简介 我们在学习嵌入式Linux开发的时候是绝…

【用户画像】Redis_Jedis测试、将人群包存放到Redis中、挖掘类标签处理过程、决策树、用SparkMLLib实现决策树

文章目录一 Redis_Jedis_测试1 Jedis所需要的jar包2 连接Redis注意事项3 测试相关数据类型(0)测试连接(1)Key(2)String(3)List(4)set(5&#xff0…

shiro-第一篇-基本介绍及使用

shiro 概述 shior的话,在第一次听说的时候单纯的任务它就是一个安全框架,可以对访问接口的用户进行验证等工作,类似拦截器或过滤器的东西,但是在学习后,发现远远不止这些,它的灵活性和易用性让我震惊&…

408 | 【计网】第二章 物理层 回顾

自用冲刺笔记整理。 部分图片来自王道。 加油ヾ(◍∇◍)ノ゙ (一)通信基础 1.信道、信号、带宽、码元、波特、速率/数据率、信源与信宿等基本概念 单向通信、半双工通信(双方都可接发,不能同时)、全双工通信码元:用一个固定时长(码元宽度)的信号波形表示一位k进制数字。 …

高项 风险管理论文

六个过程: 1,规划风险管理:决定如何进行规划和实施项目风险管理活动。 2,识别风险:判断哪些风险会影响项目,并以书面形式记录其特点。 3,实施定性风险分析:对风险概率和影响进行评…

通信原理学习笔记5-2:数字调制——连续相位和恒包络问题(非线性功放、连续相位CP FSK信号、最小频移键控MSK、GMSK)

为了最大程度利用非线性功放,需要降低信号PAPR,这要求信号具有恒包络特性信道带宽有限,需要降低信号带外泄露(进而传输失真小),要求信号具有连续相位特性(从而高频成分少) 波形连续…

[附源码]java毕业设计文章管理系统查重PPT

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

让你不在为设计商品详情页而烦恼的工具

不想使用之前的详情页设计模板想更换怎么办?不满意自己用软件设计的详情页模板怎么办?下面跟着小编,教你使用这个在线设计工具乔拓云,在工具内不仅有大量的详情页设计模板,还有海量的详情页免扣设计素材能直接使用&…

[附源码]java毕业设计小区物业管理系统论文

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

springmvc-ssm整合

前言:在座的各位大佬好,最近学习了ssm,然后这是一篇整合ssm的笔记,参考的网上某马视频课的笔记嘿嘿~SSM整合需要掌握↓↓↓↓↓↓↓↓一、SSM整合【重点】1 SSM整合配置问题导入1.1 SSM整合流程1.2 SSM整合配置1.2.1 创建工程,添加…

2022年度中国PCB百强榜单公布

近日,2022慕尼黑华南电子展在深圳圆满举办。电巢直播作为电子工程领域流量前沿、专业度高的在线直播平台,参与了本次展会并搭建了“云观展”平台,对展会进行了全程实时直播。 在这场全国性的“电子企业盛会”中,有1100余家来自不…

你真的了解Spring的依赖查找吗?

1.写在前面 前面的博客我们介绍了Spring的总览,今天我们来了解下Spring的依赖查找的相关的内容,我们会从它的前世今生来带你了解下,以及各种类型的查找的方式,同时介绍对应的相对比较安全的查找的方式。以及会介绍一些比较常见的…

分布式系统设计模式和一致性协议,你用过哪些?

1、布隆过滤器 Bloom过滤器是一种节省空间的概率数据结构,用于测试元素是否为某集合的成员。它用于我们只需要检查元素是否属于对象的场景。 在BigTable(和Cassandra)中,任何读取操作都必须从组成Tablet的SSTable中读取。如果这些…

用于光波导耦合的倾斜光栅分析

1. 摘要 因其在确定衍射级上的高衍射效率,倾斜光栅广泛用于将光耦合到光波导中。如今,倾斜光栅广泛用于增强现实和混合现实应用中。本示例中将示范如何使用VirtualLab Fusion分析文献中具有特定参数的某些倾斜光栅的几何形状(例如倾斜角、填充…

Word控件Spire.Doc 【图像形状】教程(1) ;如何在 Word 中插入图像(C#/VB.NET)

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

使用OpenCV计算两幅图像的协方差

要计算协方差首先要知道协方差的数学原理。 定义 Cov(X,Y) E{ [X-E(X)][Y-E(Y)] }为随机量X与Y的协方差。 其中E(X)为随机变量X的期望(均值),E(Y)为随机变量Y的期望(均值)。 我们通常用下面的这个公式计算协方差。 Cov(X,Y)E(XY)-E(X)E(Y) 另外,大家…