ELK系列之一---探索ELK奇妙世界:初识日志界大名鼎鼎的ES集群!

news2024/11/17 15:54:36

目录

一、为什么要使用ELK

二、ELK简介

三、Elaticsearch入门

3.1、什么是elaticsearch

3.2、elaticsearch的底层优点

3.2.1、全文检索

3.2.2、倒排索引

3.3、elaticsearch集群原理


一、为什么要使用ELK

一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。

一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

一个完整的集中式日志系统,需要包含以下几个主要特点:

  • 收集-能够采集多种来源的日志数据

  • 传输-能够稳定的把日志数据传输到中央系统

  • 存储-如何存储日志数据

  • 分析-可以支持 UI 分析

  • 警告-能够提供错误报告,监控机制

ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。

二、ELK简介

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat隶属于Beats。目前Beats包含四种工具:

    1. Packetbeat(搜集网络流量数据)

    2. Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)

    3. Filebeat(搜集文件数据)

    4. Winlogbeat(搜集 Windows 事件日志数据)

三、Elaticsearch入门

3.1、什么是elaticsearch

用官网的话说就是:Elasticsearch是基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产规模工作负载的速度和相关性进行了优化。使用 Elasticsearch 可以近乎实时地搜索、索引、存储和分析各种形状和大小的数据。

Elasticsearch 是Elastic Stack的核心,为 Elastic Search、可观察性和安全性解决方案提供支持。

Elasticsearch 的使用范围越来越广泛。以下是一些示例:

  • 监控日志和事件数据。存储日志、指标和事件数据,以实现可观察性和安全信息和事件管理 (SIEM)。

  • 构建搜索应用程序。向应用程序或网站添加搜索功能,或在组织的内部数据源上构建企业搜索引擎。

  • 向量数据库。存储和搜索向量化数据,并使用内置和第三方自然语言处理 (NLP) 模型创建向量嵌入。

  • 检索增强生成 (RAG)。使用 Elasticsearch 作为检索引擎来增强生成式 AI 模型。

  • 应用程序和安全监控。有效监控和分析应用程序性能和安全数据。

  • 机器学习。使用机器学习自动实时模拟数据行为。

3.2、elaticsearch的底层优点

3.2.1、全文检索

如在对一个输入框输入东西进行搜索的时候,在使用关系型数据库存储时,那么就需要使用到模糊查询,其SQL语句如下。如果是直接使用SQL的模糊查询对数据进行检索,那么下面这条sql语句,在数据量大的时候,会非常的慢,并且最重要的是,根据B+树的底层数据结构,下面这条SQL不走索引,因此在海量数据检索时,一般不会考虑使用这个SQL

select * from product where name like '%衣服%'

针对上述的问题,就可以引入这个为什么使用elasticSearch了。其底层就是会通过一个程序扫描文本的每一个单词,针对单字或者单词建立索引,并保存该单词在文本中的位置、以及出现的次数。然后在用户查询时,就会通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体的文本位置,所以就可以将具体的内容读取出来了。这样速度就非常的高效,并且底层也使用到了索引,即倒排索引。

3.2.2、倒排索引

首先先说一下什么是正排索引,就是底层不会提前建立好索引,而是在查找时,会去判断数据中是否存在这个关键字,如果存在,那么就会记录这个关键字的位置以及出现的次数,这样又有点类似于这个使用SQL了。

由于正排索引效率并不高,并且查询出来的数据并不完整,因此es底层就参考这个正排索引,设计出了这个倒排索引,主要由id,关键字和这个索引下表index组成。如下有以下数据,都是英文组成,因此关键字就是以一个空格为一个关键字,因此可以对这个倒排索引进行如下的总结:

1,就是会将这些数据进行一个关键字的分词,然后将每一个词建立一个index的下标索引;

2,建立索引之后,就会进行一个去重的操作,根据关键字进行去重,然后再合并,并且将index存放在一起;

3,然后会根据关键字进行一个排序,由于这使用的是英文,所以直接根据首字母进行排序

正排和倒排总结

正排索引就是根据这个关键字去进行一个全文检索的定位,最后再获取到那一条数据的id,然后根据id获取到那一条数据。倒排就是先将关键词进行一个拆分,然后根据拆分的关键词进行一个数据的定位,定位之后再获取到数据的index索引值,这个值对应的就是数据的id,然后根据id去定位那一条数据。

最大的区别就是:正排是后获取id,然后根据id获取整条数据;倒排是先获取id,就是通过关键字单位获取到的index索引值,然后根据这个id获取到文档中的全部数据 ,简单理解就是正向索引是key找value,反向索引就是通过value找key,这个vaue就是对应的id,数据库中被称为id,es中被称为index。

3.3、elaticsearch集群原理

ES天生就是分布式架构的。ES的底层是Lucene,而Lucene只是一个搜索引擎库,没有并发设计 ,没有分布式相关的设计,因此要想使用Lucene来处理海量数据,并利用分布式的能力,就需要在其之上进行分布式的相关设计。ES就是这样一款建立在Lucene基础之上,赋予其分布式能力的存储引擎,说成天生就是分布式架构的一点也不过分。

集群是有多个节点组成的,在ES集群中有多个不同种类型的节点。节点是一个Elasticsearch的实例,本质上是一个Java进程。每个节点上面都保存着集群的状态信息,包括所有的节点信息、所有的索引和相关的Mapping于Setting信息和分片的路由信息等。节点按照角色可以划分为主节点、数据节点、协调节点和预处理节点等。

Master节点负责管理集群状态信息,包括处理创建、删除索引等请求,决定分片被分配到哪个节点,维护和更新集群状态。值得注意的是,只有Master节点才能修改集群的状态信息,并负责同步给其他节点。可见,Master节点非常重要,在部署上需要考虑单点风险。

协调节点负责接收客户端的请求,将请求路由到到合适的节点,并将结果汇集到一起。

数据节点是保存数据的节点,增加数据节点可以解决水平扩展和解决数据单点的问题。

预处理节点是数据前置处理转换的节点,支持 pipeline管道设置,可以对数据进行过滤、转换等操作。

更多关于节点内容参考:

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/modules-node.html

分片是ES分布式存储的基石,是底层的基本读写单元。分片的目的是分割巨大的索引,将数据分散到集群内各处。分片分为主分片和副本分片,一般情况,一个主分片有多个副本分片。主分片负责处理写入请求和存储数据,副本分片只负责存储数据,是主分片的拷贝,文档会存储在具体的某个主分片和副本分片上。


欢迎关注作者的公众号,公众号每天分享运维干货文章 

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

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

相关文章

Linux -文件I/O操作

文章目录 C语言文件I/O相关函数操作fopen/fcolsefwritefseekfprintf/fscanffgets/fputs 系统调用相关接口open/closewrite/read C语言文件I/O相关函数操作 fopen/fcolse fopen 函数用于打开一个文件,并根据指定的模式(如只读、只写、读写等&#xff09…

SaaS行业渠道管理的深度探索:两种增长模式哪个更强?

在当今数字化时代,SaaS(Software-as-a-Service)行业正以前所未有的速度重塑企业运营模式。随着市场的日益成熟与竞争的加剧,渠道管理不再仅仅是产品销售的通道,而是成为了SaaS企业构建生态体系、实现业务飞跃的重要策略…

分类预测|基于粒子群优化轻量级梯度提升机算法数据预测Matlab程序PSO-LightGBM 多特征输入多类别输出

分类预测|基于粒子群优化轻量级梯度提升机算法数据预测Matlab程序PSO-LightGBM 多特征输入多类别输出 文章目录 一、基本原理二、实验结果三、核心代码四、代码获取五、总结 分类预测|基于粒子群优化轻量级梯度提升机算法数据预测Matlab程序PSO-LightGBM 多特征输入多类别输出 …

电脑录屏软件哪家强?这6款高效免费工具让你轻松捕捉电脑屏幕

在数字化浪潮的推动下,电脑录屏软件的选择变得琳琅满目,本文旨在帮助您挑选出最适合您需求的录屏工具。 电脑录屏软件在我们的日常工作、学习乃至娱乐活动中扮演着越来越重要的角色。无论是为了记录PPT的演示过程、捕捉QQ、微信、腾讯会议等设计软件的对…

C8T6超绝模块--按键检测点亮LED

C8T6超绝模块–按键检测点亮LED 大纲 按键原理初始化LED初始化按键编写main 具体案例 按键原理 (这里针对的是我的板子的原理图,具体的查看自己的板子)注意看,这里按键一端接到的是地,当我们没按下按键时,其默认是低电压&…

linux环境下升级nodejs版本

文章目录 简介清除缓存信息确保已安装Node.js和npm安装n模块使用n来升级Node.js查看可用的Node.js版本升级Node.js到最新版本注意事项版本兼容性考虑 简介 在Linux环境下,使用npm的n模块来升级Node.js版本是一种非常流行且便捷的方法。n是一个Node.js版本管理工具&…

【OpenCV】通过迭代器获取图像的像素

文章目录 1. 前置知识2. 通过迭代器获取图像的像素 1. 前置知识 🐧 什么叫做像素? 最小的 图像单元,每个像素可以看成图像中的一个点,它具有颜色、亮度等属性。 cv::Mat是OpenCV中用来处理图像数据的主要数据结构,他实…

tomato靶场通关攻略

1.御剑2014找到IP地址 2.dirb扫描目录 3.再次详细扫描目录 4.访问找到的目录文件 进入antibots中 5.搜寻一会再info.php里面发现有东西 6.这个地方貌似可以进行利用 7.查看源代码发现包含include文件上传漏洞 8.网址后面跟?image../../../../../../../etc/passwd 9.既然可以查…

ceph-iscsi 手动安装过程中的一些问题记录以及解决办法

ceph-iscsi 手动安装教程 安装教程,建议直接看官方文档,猛戳传送门。官方教程是英文版的(不知道有没有中文版),都是一些基础英语,问题不大,实在不行找个翻译软件帮帮忙,哈哈哈。 多…

黄力医生揭秘血栓‘成长’之路,七类人群需高度警惕!

血栓,这个潜伏在血液中的“隐形杀手”,悄无声息地阻塞着生命的通道。它如同道路上的障碍,一旦形成,便可能随着血液流向身体各处,引发脑梗、心梗甚至肺栓塞等严重后果。然而,大多数血栓在形成初期并无明显症…

CodeMeter赋能工业应用程序市场,实现安全与灵活的应用管理

面临挑战 在快速发展的工业自动化领域,软件保护和许可成为各行业决策者日常面临的关键问题。无论是自制还是购买,都需应对复杂的集成任务和多样化的用户需求。对于软件开发者来说,将先进的保护和许可技术(如CodeMeter)…

ISO 26262中的失效率计算:SN 29500-11 Expected values for contactors

目录 引言 1 基准条件下的失效率 2 失效率转换 2.1 失效率预测模型 2.2 开关速率应力系数 2.3 电压应力系数 2.3.1 电压应力系数计算模型 2.3.2 电压应力系数计算 2.4 电流应力系数 2.4.1 电流应力系数计算模型 2.4.2 电流应力系数计算 2.5 温度应力系数 2.6 环境…

Web前端 lucky-canvas【大转盘 九宫格 老虎机】抽奖插件(适用JS/TS、Vue、React、微信小程序、Uniapp和Taro)

Web前端 lucky-canvas 抽奖插件(JS/TS、Vue、React、微信小程序、Uniapp和Taro) 基于 JS Canvas 实现的【大转盘 & 九宫格 & 老虎机】抽奖,致力于为 WEB 前端提供一个功能强大且专业可靠的营销组件,只需要通过简单配置即…

一篇常见第三方库之以及详细使用示例教程

作者:郭震 我们介绍了几个常用的 Python 第三方库,包括 NumPy、Pandas、Matplotlib 和 Requests.本篇将通过一些简单的示例来演示如何有效地使用这些库,以帮助小白理解它们的基本用法.通过这些案例,你可以直观感受到这些库在日常编程中的价值. NumPy NumPy 是一个强…

计算机毕业设计选题推荐-动漫网站-动漫管理系统-Java/Python

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

虚拟化pve查看存储空间使用情况

通过命令行查看 pvesm 是 Proxmox VE 的存储管理工具,可以用来查看存储空间的使用情况。 pvesm status这个命令会列出所有配置的存储设备及其使用情况,包括总空间、已用空间和可用空间。 在 Proxmox VE (PVE) 中,local 和 local-lvm 是两种…

软考超详细准备之软件设计师的计算机系统题型一(上午题)

目录 考试技巧: 上午题: 下午题: 第一道数据流图 第二道数据库 第三道 UML 第四道算法题 第五道程序题 软考刷题之计算机系统 cpu 相关习题 运算器 相关习题 控制器 相关习题 计算机的基本单位: 加法: ​编辑 加减法 相关习题 数据表示 各种码制的范围 相…

AI时代的信仰是什么

信仰是人们内心深处的信念,是推动人类前进的驱动力。AI从几十年前的缓慢探索,到如今的飞速发展,是什么信仰在驱动这一切呢? 摩尔定律 聊起信仰,我就会想起信息时代的摩尔定律。摩尔定律是由英特尔联合创始人戈登摩尔…

微信支付开通商家转账到零钱方法【必过技巧】

自从微信支付关闭,企业付款到零钱后,改成了商家转账到零钱,申请开通这一功能审核很严格。想把微信商户里的钱转到个人微信上就很麻烦了。 首先看下开通条件 开通条件 暂时不支持小微商户、个体工商户。 保持正常健康交易。 转账规则 日限…

【LabVIEW学习篇 - 17】:人机交互界面设计01

文章目录 VI属性设置编辑器选项窗口外观窗口大小窗口运行时的位置执行 对话框对话框使用范例自定义对话框 VI属性设置 在LabVIEW中,设计人机交互界面还是很方便的,主要是因为LabVIEW针对行业特点提供了丰富的控件,使其具有极其强大的图形数据…