ELK三个开源软件的工作原理

news2024/9/22 1:35:40

一、Elasticsearch

Elasticsearch的工作原理主要涉及其数据处理、索引机制、查询过程以及集群管理等方面。一下是对Elasticsearch工作原理的详细解析:

1. 数据处理

1.1 数据导入

  • Elasticsearch支持多种数据源,包括直接输入、通过Logstash和Beats等工具处理的数据。他首先导入JSON格式的数据。
  • 数据导入后,Elasticsearch会对这些数据进行索引处理,以支持后续的快速搜索和分析。

1.2 索引机制

  • Elasticsearch使用倒排索引来促进快速全文搜索。倒排索引将文档中的每个词项映射到包含该词项的所有文档的列表,从而实现快速文本搜索。
  • 索引过程包括分词、分析、存储等步骤,其中分词是将文本切成词项的过程,分析则是对词项进行进一步处理(如去除停用词、词干提取等),最后存储到索引中。

2.查询过程

2.1 查询分发

  • 当用户发起查询请求时,Elasticsearch会将查询请求分发到集群中的多个节点上。
  • 每个节点会根据其存储的分片数据执行查询操作,并将查询结果返回到协调节点。

2.2 结果汇总

  • 协调节点会收集所有节点的查询结果,并进行合并、排序等处理。
  • 最终,协调节点将处理后的查询结果返回给用户。

2.3 查询类型

  • Elasticsearch支持多种查询类型,包括全文搜索、精确匹配、范围查询、聚合查询等。
  • 用户可以根据具体需求选择合适的查询类型,并通过Elasticsearch提供的查询DSL(Domain Specific Language)构建复杂的查询逻辑。

3.集群管理

3.1 节点发现

  • 当Elasticsearch节点启动时,它会利用多播(或单播,如果用户更改了配置)寻找急群众的其他节点,并与之建立连接。
  • 在集群中,一个节点被选举为主节点(master node),负责管理集群的状态和索引分片的分配。

3.2 分片与副本

  • Elasticsearch通过将索引分成多个分片(shard)来提高查询性能,每个分片可以在不同的节点上存储。
  • 为了提高数据的可靠性和可用性,Elasticsearch还会为每个分片创建副本(replica),并将副本存储在不同的节点上。
  • 当主分片不可用时,集群会自动将查询请求转发到副本分片上,以保证数据的可用性和一致性。

3.3 故障恢复

  • 如果集群中的某个节点出现故障,主节点会检测到该故障并启动错误处理程序。
  • 集群会重新均衡,将故障节点上的索引分片重新分配到其他节点上,以保证数据的完整性和可用性。

二、Logstash

Logstash通过插件机制实现各种功能,其核心工作流程可以概括为三个阶段:输入(Input)--过滤(Filter)--输出(Output)。在这个过程中,Logstash可以接收来自多个源的数据,对数据进行转换和处理,最终将数据发送到指定的目的地。

1. 输入(Input)阶段

  • 功能:负责从各种数据源接收数据。Logstash支持多种方式,如文件(file)、系统日志(syslog)、Redis、kafka、Filebeat等。
  • 插件:通过Input插件实现数据的接收。例如,files插件可以读取文件系统中的文件数据,sysylog插件可以监听系统日志消息,Redis插件可以从Redis插件可以从Redis读取数据等。

2. 过滤(Filter)阶段

  • 功能:对输入的数据进行解析、过滤和转换,将非结构化的数据转换为结构化的、可查询的标准化数据。
  • 插件:通过filter插件实现数据的处理。Logstash提供了多种filter插件,如grok(用于解析和结构化文本数据)、mutate(用于字段的转换,如删除、替换、修改等)、geoip(用于添加ip地址的地理位置信息)等。
  • 特点:filter插件是可选的,但它是Logstash实现数据转换和处理的关键环节。

3. 输出(Output)阶段

  • 功能:将处理后的数据发送到指定的目的地。Logstash支持多种输出方式,如Elasticsearch、文件(file)、Redis、Kafka等。
  • 插件:通过output插件实现数据的输出。例如,Elasticsearch插件可以将数据发送到Elasticsearch进行存储和查询,file插件可以将数据写入到文件系统中等。

4. 编解码器(Codecs)

  • 功能:编解码器是Logstash中用于对数据进行编码和解码的组件。他可以作为输入或输出的一部分进行配置,帮助用户轻松地对数据进行序列化和反序列化。
  • 常用编解码器:json编解码器用于对JSON格式的数据进行编码和解码,multiline编解码器用于将多行文本合并为一个单一的事件等。

5. 事件处理管道

  • Logstash的事件处理管道协调输入、过滤器和输出的执行。每个输入阶段都在其自己的线程中运行,并将事件写入到内存或硬盘的中央队列中。
  • 管道工作线程会从队列中提取一批事件,通过配置的过滤器运行事件批处理,然后在通过任意输出插件运行过滤后的事件。
  • 事件批处理的大小和管理工作现成的数量都是可配置的,用户可以根据实际需求进行调整。

6. 数据持久化和顺序性

  • Logstash默认在管道各阶段之间使用内存中的有界队列来缓冲事件。如果Logstash异常终止,存储在内存中的事件可能会丢失。
  • 为了防止数据丢失,用户可以启用Logstash的持久化队列功能,将正在进行的时间持久化到硬盘上。当维护时间顺序很重要,用户可以使用单个工作进程并设置 pipeline.ordered=>true ,以确保事件在批处理中保持其顺序。

 三、Kibana

 Kibana的工作原理主要围绕其与Elasticsearch的紧密集成,以及提供数据可视化、分析和探索的功能。以下是对Kibana工作原理的详细解析:

1. Kibana与Elasticsearch的关系

  • 数据源:Kibana是一个开源的数据可视化和探索工具,他主要设计用于与Elasticsearch一起工作。Elasticsearch是一个分布式搜索和分析引擎,能够处理大规模的数据,是Kibana的数据源。
  • 交互方式:Kibana通过与Elasticsearch交互,展示数据的可视化结果。所有的数据查询和分析都通过Elasticsearch完成,Kibana则提供了丰富的可视化工具和仪表盘功能,使用户能够轻松地理解和展示数据。

2. Kibana的工作原理

2.1 数据导入与索引:

  • 用户首先需要将数据导入到Elasticsearch中,Elasticsearch会对这些数据进行索引,以便快速检索和分析。
  • Kibana通过Elasticsearch的API与Elasticsearch进行通信,获取存储在Elasticsearch中的数据。

2.2 数据查询与分析:

  • Kibana提供了多种查询语言,如Kibana Query Language(KQL)和Lucene查询语法,用户可以使用这些语言来构建查询条件,检索和分析Elasticsearch中的数据。
  • KIbana还支持高级数据分析功能,如数据聚合、排序和过滤等,帮助用户从海量数据中提取有价值的信息。

2.3 数据可视化:

  • Kibana提供了丰富的可视化工具,如图标、表格、地图等,用户可以根据需要选择合适的可视化类型来展示数据。
  • 用户可以轻松地创建和共享动态仪表板,实时显示Elasticsearch查询的变化,帮助团队成员更好地理解和分析数据。

2.4 用户交互与界面:

  • Kibana拥有一个简单的、给予浏览器的界面,使用户能够快速上手并创建复杂的查询和可视化。
  • 用户可以通过KIbana的导航栏和工具栏来访问不通的功能区域,如"Discover"(发现)、"Visualize"(可视化)、"Dashboard"(仪表盘)等。

3. KIbana的典型工作流程

  • 数据导入:将需要分析的数据导入到Elasticsearch中。
  • 创建索引模式:在KIbana中创建索引模式,以指定如何与Elasticsearch中的数据进行及交互。
  • 构建查询:使用KIbana的查询语言构建查询条件,检索Elasticsearch中的数据。
  • 数据可视化:选择合适的可视化类型来展示查询结果,并创建仪表板以实时监控数据变化。
  • 分享与协作:将创建的仪表板分享给团队成员,以便共同分析和讨论数据。

4. KIbana的优势

  • 开源与免费:KIbana是开源的,用户可以免费试用并根据自己的需求进行定制。
  • 强大的可视化功能:KIbana提供了丰富的可视化工具,帮助用户以直观地方式展示数据。
  • 与Elasticsearch紧密集成:KIbana与Elasticsearch的无缝集成使得数据查询和分析变得更加高效和便捷。
  • 易于使用和分享:KIbana的基于浏览器的界面使得用户能够快速上手并创建复杂的查询和可视化,同时支持将创建的仪表板分享给团队成员进行协作。

Kibana的工作原理主要围绕其与Elasticsearch的紧密集成以及提供的数据可视化、分析和探索功能展开。通过Kibana,用户可以轻松地从海量数据中提取有价值的信息,并以直观的方式展示出来。

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

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

相关文章

js日期处理库--dayjs

js中处理日期是一件比较麻烦的事情,这里推荐使用day.js库来处理,文档:Day.js中文网 引入库 如果没有引入过dayjs,需要先执行npm install,然后import就能使用了 npm install dayjs import dayjs from dayjsconsole.log(dayjs().format()) 如果使用的…

leetcode日记(67)单词搜索

太坑了!老是时间超限,不是时间超限就是内存超限! 思路很简单,就是先遍历整个网格寻找开头,然后上下左右搜寻找下一个字母,引用递归。 最终看边答案边写出来的: class Solution { public:bool …

36-《茅膏菜》:自然奇境中的捕虫艺术家

茅膏菜 腺毛闪烁诱昆虫,粘液缠绕捕食成。 绿叶如网藏陷阱,茅膏菜展捕虫情。 中文名:茅膏菜 拉丁名:Drosera peltata Thunb. 别名:捕虫草、落地珍珠、一粒金丹、苍蝇草、珍珠草 科属:茅膏菜科茅膏菜属 生…

词向量,位置嵌入;归一化;自注意力层;投影;残差连接:防止梯度消失;MLP;

目录 词向量,位置嵌入 归一化 自注意力层 我们该如何处理Q、K和V向量呢 投影 残差连接:防止梯度消失 MLP 层归一化处理 GELU激活函数 MLP Weights 和MLP Projection Weights区别和联系 一、MLP Weights 二、MLP Projection Weights:输入数据或隐藏层的输出投影到…

指针(1)-学习笔记

指针(1)-学习笔记 1.内存1.1内存 2.指针变量和地址2.1取地址操作符(&)2.2指针变量和解引用操作符(*)2.2.1 指针变量2.2.2解引用操作符 3 指针变量类型的意义3.1指针的解引用3.2指针-整数3.3 void*指针 …

PyTorch深度学习实战(7)—— 线性回归

线性回归是机器学习的入门内容,应用十分广泛。线性回归利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系,其表达形式为$y wxbe$。其中,$x$和$y$是输入输出数据,$w$和$b$是可学习参数,误差$e$服…

Pod的调度机制

文章目录 一、Pod调度概述二、Pod调度策略实现方式三、kube-scheduler调度1、kube-scheduler调度的流程2、过滤阶段3、打分阶段4、kube-scheduler 调度示例4.1、创建 Deployment 资源清单4.2、应用Deployment4.3、查看被kube-scheduler自动调度的Pod 四、nodeName调度1、创建Po…

MySQL操作2——表的的操作(增删查改)

创建表; 样例: 注意不同的存储引擎创建出来的表在目录下的个数不同 显示此数据库下的所有表:show tables; show create table name \G ——查看创建表时的具体信息 查看某个表的结构:desc 表名; 查看表中储存的数据&…

阿里云与优酷联袂:Create@AI江湖创作大赛,探索AI创新边界

随着网剧《少年白马醉春风》的热播,许多人心中的江湖梦被唤醒,渴望踏入那个充满传奇色彩的影视世界,体验一段属于自己的江湖之旅。在 AIGC 技术日益成熟的今天,这一梦想变得触手可及。阿里云携手优酷,发起了 Create A…

Hadoop YARN:现代大数据集群资源管理与作业调度

1.Yarn的概述 1.1.解释Yarn的定义和基本概念 Hadoop YARN(Yet Another Resource Negotiator)是 Hadoop 2.x 版本引入的一种资源管理器,用于管理和调度大数据集群中的资源,是 Hadoop 集群的核心组件之一。YARN 的设计目标是提高 H…

浅谈C语言动态内存分配

1、什么是动态内存分配 正常情况下,我们创建变量,都是向计算机内存中申请一个静态的内存,也就是说,一旦申请成功,这块内存的大小便不能再改变,并且能申请多少内存在一定程度上都是确定的。比如说&#xff…

【网络层】路由基础

文章目录 技术背景IP 路由工作原理IP路由表 技术背景 路由是能够让整个Internet持续运转的关键。回看之前的网络历史,最开始用一根网线将两台设备连接起来,面对面就能通信。到后面出现了交换机,能够让区域内的所有设备互相通信,形…

WPF篇(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说,Border并不是一个布局控件,因为它并不是Panel的子类,而是Decorator装饰器的子类,而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…

少儿编程 2024年6月scratch四级 电子学会图形化编程等级考试四级真题和答案解析(选择题)

2024年6月scratch编程等级考试四级真题 选择题(共10题,每题2分,共20分) 1、运行下列程序,输入单词“PLAY”最后角色说 A、LY4AP B、AP4LY C、YA4PL D、PL4AY 答案:B 考点分析:考查积木综合…

英伟达元宇宙平台Omniverse的学习,技术调研

NVIDIA Omniverse™ 是一个基于 USD (Universal Scene Description) 的可扩展平台,可使个人和团队更快地构建自定义 3D 工作流并模拟大型虚拟世界。 Omniverse:三维设计协同、模拟的开发平台,实现3D实时渲染,RTX光线追踪技术 协…

顺序表各种接口的实现(C)

线性表 线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。在物理结构上并不一定是连续的,线性表在物…

Qt 小功能:加载等待动画——转圈圈

加载等待动画实现——转圈圈 效果图:(看封面最好) 关键要点 流畅的动画: 使用 QTimer 每 50 毫秒更新一次动画,确保动画流畅。 视觉效果: 使用 QPainter 的平滑像素转换和抗锯齿选项,提高动画…

DHU OJ 循环结构 回文数字

思路及代码&#xff1a; 由于只考虑5位和6位回文数&#xff0c;3个 for 循环次数为9*10*10还可以&#xff0c;就直接遍历了 //input n int 10< <100 #include<iostream> using namespace std; int main(){int n;cin >> n;int ans 0; //solution //判断是…

HTML 元素提供的附加信息--属性 ——WEB开发系列03

HTML 属性是指用于描述 HTML 元素的额外信息&#xff0c;它们提供了元素的特定配置或行为&#xff0c;属性通常包含在 HTML 元素的开始标签中。 元素也可以拥有属性&#xff0c;属性看起来像这样&#xff1a; 属性是元素的附加信息&#xff0c;它们不会显示在实际内容中。在前述…

适合初学者的2024年数据恢复软件指南

现在大家应该经常会将数据存储在一些存储设备里。但这些设备可能会因为各种原因导致数据意外的丢失&#xff0c;这时候如果我们掌握了全免费的数据恢复工具的使用方式&#xff0c;就可以尽可能的避免数据丢失的情况。 1.福晰数据恢复 连接直达&#xff1a;https://www.pdf365…