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

目录

一、为什么要使用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.mzph.cn/diannao/53149.shtml

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

相关文章

vue3.5更新内容

vue3.5发布于2024.9.4 更新内容如下&#xff1a; 一、useId 每个模块都可以从vue中引入一个useId&#xff0c;这个useId自动递增 不会重复 感觉也没啥用 <script setup> import { useId } from vueconst id useId() </script> <template><form><…

Docker 镜像导出与加载:从入门到精通

在容器化技术的世界中&#xff0c;Docker 镜像的导出与加载是开发与运维人员经常会用到的技能。本文将详细介绍如何导出 Docker 镜像为本地 tar 文件&#xff0c;并如何将其重新加载为 Docker 镜像&#xff0c;并分享一些操作中的小技巧与趣味总结。 一、Docker 镜像导出的秘…

HTTP 二、进阶

四、安全 1、TLS是什么 &#xff08;1&#xff09;为什么要有HTTPS ​ 简单的回答是“因为 HTTP 不安全”。由于 HTTP 天生“明文”的特点&#xff0c;整个传输过程完全透明&#xff0c;任何人都能够在链路中截获、修改或者伪造请求 / 响应报文&#xff0c;数据不具有可…

vue2踩坑记录:el-select如何绑定对象

页面上的下拉框&#xff1a; 选中人员之后&#xff0c;需要使用人员的其它信息做后续操作。所以不能只绑定用户Id&#xff0c;需要绑定整个item(用户对象)&#xff0c;这样每次change事件所获取到的newValue是整个对象&#xff0c;而且v-model中的变量指向的也是整个对象&#…

算法练习题10:leetcode76最小覆盖子串-滑动窗口

目录 题目 题目描述 约束条件 解决思路 代码 getOrDefault(c, 0) 方法 方法签名 参数 返回值 示例 getOrDefault 与 get 的主要区别 Integer 题目 题目描述 给定两个字符串 s 和 t&#xff0c;请你在字符串 s 中找到包含 t 中所有字符的最小子串。 要求&#xf…

十四、低空安全综合管理服务平台建设方案

1、系统背景 由于低空安全研究关系到国家战略安全保障,世界各国相继开展了相关法律法规建设,以及一系列的理论与技术保障研究。为了保障低空空域安全,需推动建立各省级安全管理平台,做好与企业级监控服务平台的管理衔接和数据共享,强化本区域内民用无人机的安全监管工作;…

Node.js中的SQLite库:安装、对比与选择指南

嘿&#xff0c;各位Node.js的江湖好汉们&#xff0c;今天咱们来聊聊如何在Node.js中安装SQLite库&#xff0c;并且来一场SQLite库的PK大战&#xff0c;看看哪个库才是你的“菜”&#xff01; 一、安装SQLite库&#xff1a;轻松加愉快 想要在Node.js中使用SQLite数据库&#x…

解决el-table中使用el-input无法聚焦问题

在el-table中点击单元格时使用el-input或其他表单组件编辑单条数据。会出现聚焦不上的问题&#xff0c;需要手动点击才能够聚焦。究其原因是因为点击单元格时页面已自动聚焦到单元格&#xff0c;此时无法自动聚焦到对应的表单&#xff0c;需要手动设置。 <template><e…

进来一起把【数据结构】的【栈与队列】狠狠玩弄,痛快到大汗淋漓

1前言&#xff1a;顾名思义&#xff0c;栈与队列是两个东西&#xff0c;栈和队列&#xff01;对的&#xff0c;栈和队列&#xff01;&#xff01;&#xff0c;没错&#xff0c;在念一遍&#xff0c;【栈】 和 【队列】&#xff01;&#xff01;&#xff01;但是本质都是差…

数字化转型工具有哪些 无锡振宁科技

数字化转型已经成为现代企业不可忽视的趋势。为了帮助企业在这个过程中取得成功&#xff0c;选择合适的工具至关重要。今天&#xff0c;无锡振宁科技想和大家聊聊一些在数字化转型中不可或缺的工具&#xff0c;以及它们具体能带来哪些优势和变化。 1. 云计算平台 云计算是数字…

Yapi部署文档

Yapi是高效、易用、功能强大的API管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接口管理服务 官网地址&#xff1a;Yapi 环境&#xff1a; l Git l NodeJs&#xff08;7.6&#xff09; l Mongodb&#xff08;2.6&#xff09; 1、 NodeJs的安装 获取资源 …

第十八章程序清单合集——Java语言程序设计基础篇

目录 程序清单18_1ComputeFactorial.java 程序清单18_2ComputeFibonacci.java 程序清单18_1ComputeFactorial.java package chapter_18;import java.util.Scanner;public class 程序清单18_1ComputeFactorial {public static void main(String[] args) {Scanner input new S…

webpack打包报错UglifyJs Unexpected token: punc (,)

项目当dev命令运行时能正常运行&#xff0c;打包后却报错UglifyJs Unexpected token: punc (,)&#xff0c; > yarn buildCreating an optimized production build... Failed to compile.Failed to minify the bundle. Error: static/js/main.js from UglifyJs Unexpected …

VBA学习(71):Excel VBA 访问带密码保护的Access数据库/用户窗体设置/EXCEL用户+密码登录界面(Access版)

前两天我们分享了一个用户密码登录EXCEL的案例【Excel VBA 用户窗体设置/一步一步代你设计EXCEL用户密码登录界面】&#xff0c;文中提及数据存储在Access中的情况&#xff0c;今天我就来把数据表&#xff08;tb用户&#xff09;移到Access中&#xff0c;修改一下代码&#xff…

cortex-m4系列绝对地址函数跳转问题

一、环境&#xff1a; cortex-m4&#xff0c;IAR&#xff0c;J-LINK。 二、问题&#xff1a; 1&#xff09;、首先&#xff0c; 我将另一个程序中的函数扣出来&#xff0c;通过j-flash-lite下载到MCU的一个固定地址Flash中。 2&#xff09;、然后&#xff0c; 声明一个变量为…

力扣刷题--821. 字符的最短距离【简单】

题目描述&#x1f357; 给你一个字符串 s 和一个字符 c &#xff0c;且 c 是 s 中出现过的字符。 返回一个整数数组 answer &#xff0c;其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 两个下标 i 和 j 之间的 距离 为 abs(i…

Elastic Stack--ELFK实例与Dashboard界面

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 学习B站博主教程笔记&#xff1a; 最新版适合自学的ElasticStack全套视频&#xff08;Elk零基础入门到精通教程&#xff09;Linux运维必备—Elastic…

低代码技术:简化应用开发,推动数字化转型

在当今快速变化的技术环境中&#xff0c;企业面临着巨大的压力&#xff0c;需要快速响应市场需求并持续推动数字化转型。传统的应用开发方式往往复杂且耗时&#xff0c;开发周期长且需要大量的编程工作。为了应对这些挑战&#xff0c;低代码技术应运而生&#xff0c;为企业提供…

oracle startup失败,ORA-01078: failure in processing system parameters

SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file /data/oracle/product/11.2.0/db_1/dbs/initorc1.ora 出错的原因可能是&#xff1a;文件名字不正确&#xff0c;文件权限不对&#xff0c;文件不存在&#x…

基于激光雷达的无人机相互避障

本框架是基于激光雷达的无人机群自主避障代码&#xff1a; 其主体框架利用ORCA算法&#xff0c;他是经典的多智能体相互避障算法&#xff0c;此版本只能规避动态障碍物&#xff0c;不能规避环境形成的静态障碍物我们对ORVA算法稍作修改&#xff0c;使其可以分布式部署&#xff…