什么是ELK(小白简单快速的认识什么是ELK)

article/2025/11/4 8:17:13

Elastic Stack

写在前面:刚接触elk,总是有点懵懵懂懂,我一向是比较习惯在使用过后更好更快的了解这个东西是做什么的,但这个elk是真的有点恶心到我了,那就是对于初期的模拟应用对小白太太太不友好了,所以在网上看了很多关于elk的介绍。然后各种参差不齐、见解不一的文章就把我的脑袋搞大了,最后不知道看了多少篇文章才梳理出来了一些头绪,总结成下面这篇文章。
本文纯本着分享知识的本质,内有摘抄和引用,如有侵犯到哪位大佬,请联系我做相应处理。

一、ELK原理与介绍
1、ELK简介
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
1.1、Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
1.2、Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
1.3、Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
1.4、Filebeat隶属于Beats。目前Beats包含四种工具:
①Packetbeat(搜集网络流量数据)
②Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
③Filebeat(搜集文件数据)
④Winlogbeat(搜集 Windows 事件日志数据)
2、为什么用到ELK
一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。
一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。
一个完整的集中式日志系统,需要包含以下几个主要特点:
①收集-能够采集多种来源的日志数据
②传输-能够稳定的把日志数据传输到中央系统
③存储-如何存储日志数据
④分析-可以支持 UI 分析
⑤警告-能够提供错误报告,监控机制
ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。

中文官方文档:https://www.elastic.co/guide/cn/index.html
3、Logstash工作原理
Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。
在这里插入图片描述

3.1、Input:输入数据到logstash。
一些常用的输入为:
①file:从文件系统的文件中读取,类似于tail -f命令
②syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
③redis:从redis service中读取
④beats:从filebeat中读取
3.2、Filters:数据中间处理,对数据进行操作
一些常用的过滤器为:
①grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。内置120多个解析语法。
②官方提供的grok表达式:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
③grok在线调试:https://grokdebug.herokuapp.com/
④mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。
⑤drop:丢弃一部分events不进行处理。
⑥clone:拷贝 event,这个过程中也可以添加或移除字段。
⑦geoip:添加地理信息(为前台kibana图形化展示使用)
3.3、Outputs:outputs是logstash处理管道的最末端组件。
一个event可以在处理过程中经过多重输出,但是一旦所有的outputs都执行结束,这个event也就完成生命周期。
一些常见的outputs为:
①elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。
②file:将event数据保存到文件中。
③graphite:将event数据发送到图形化组件中,一个很流行的开源存储图形化展示的组件。
3.4、Codecs:codecs 是基于数据流的过滤器。
它可以作为input,output的一部分配置。Codecs可以帮助你轻松的分割发送过来已经被序列化的数据。
一些常见的codecs:
①json:使用json格式对数据进行编码/解码。
②multiline:将汇多个事件中数据汇总为一个单一的行。比如:java异常信息和堆栈信息。
4、Filebeat工作原理
Filebeat由两个主要组件组成:prospectors 和 harvesters。这两个组件协同工作将文件变动发送到指定的输出中。
在这里插入图片描述

4.1、Harvester(收割机)
负责读取单个文件内容。每个文件会启动一个Harvester,每个Harvester会逐行读取各个文件,并将文件内容发送到制定输出中。Harvester负责打开和关闭文件,意味在Harvester运行的时候,文件描述符处于打开状态,如果文件在收集中被重命名或者被删除,Filebeat会继续读取此文件。所以在Harvester关闭之前,磁盘不会被释放。默认情况filebeat会保持文件打开的状态,直到达到close_inactive(如果此选项开启,filebeat会在指定时间内将不再更新的文件句柄关闭,时间从harvester读取最后一行的时间开始计时。若文件句柄被关闭后,文件发生变化,则会启动一个新的harvester。关闭文件句柄的时间不取决于文件的修改时间,若此参数配置不当,则可能发生日志不实时的情况,由scan_frequency参数决定,默认10s。Harvester使用内部时间戳来记录文件最后被收集的时间。例如:设置5m,则在Harvester读取文件的最后一行之后,开始倒计时5分钟,若5分钟内文件无变化,则关闭文件句柄。默认5m)。
4.2、Prospector(勘测者)
负责管理Harvester并找到所有读取源。
在这里插入图片描述

Prospector会找到/apps/logs/*目录下的所有info.log文件,并为每个文件启动一个Harvester。Prospector会检查每个文件,看Harvester是否已经启动,是否需要启动,或者文件是否可以忽略。若Harvester关闭,只有在文件大小发生变化的时候Prospector才会执行检查。只能检测本地的文件。
4.3、Filebeat如何记录文件状态
将文件状态记录在文件中(默认在/var/lib/filebeat/registry)。此状态可以记住Harvester收集文件的偏移量。若连接不上输出设备,如ES等,filebeat会记录发送前的最后一行,并再可以连接的时候继续发送。Filebeat在运行的时候,Prospector状态会被记录在内存中。Filebeat重启的时候,利用registry记录的状态来进行重建,用来还原到重启之前的状态。每个Prospector会为每个找到的文件记录一个状态,对于每个文件,Filebeat存储唯一标识符以检测文件是否先前被收集。
4.4、Filebeat如何保证事件至少被输出一次
Filebeat之所以能保证事件至少被传递到配置的输出一次,没有数据丢失,是因为filebeat将每个事件的传递状态保存在文件中。在未得到输出方确认时,filebeat会尝试一直发送,直到得到回应。若filebeat在传输过程中被关闭,则不会再关闭之前确认所有时事件。任何在filebeat关闭之前为确认的时间,都会在filebeat重启之后重新发送。这可确保至少发送一次,但有可能会重复。可通过设置shutdown_timeout 参数来设置关闭之前的等待事件回应的时间(默认禁用)。

二、ELK架构图
1、架构图一
在这里插入图片描述

这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。
此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。
2、架构图二
在这里插入图片描述

此种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。
3、架构图三
在这里插入图片描述

此种架构将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。


http://chatgpt.dhexx.cn/article/3sJUFPxZ.shtml

相关文章

elk(Elasticsearch、Kibana、Logstash )有这篇就够了,超级详细,包教会

目录 1. elk介绍 2. elk安装(windows版) 3. elk安装(linux版) 4. 收集springboot项目日志(windows版) 5. 收集springboot项目日志(linux版) 6. elk 补充(后台运行&…

linux中找不到vim命令

1.首先查看vim 安装包,如下图 rpm -qa | grep vim 2.下载vim(需要连接网络) yum install -y vim* 3.安装成功后查看 rpm -qa | grep vim

vim命令模式指令一览

提示:本文介绍了linux下vim中的快捷指令。 文章目录 注意:本文所有指令都只在命令行模式下有效!!! vim指令图: 指令解析命令解析h光标向左移动j光标向下移动k光标向上移动l光标向下移动yy/nyy复制当前行/…

Linux中vim命令详解

vim 是linux中最基本的操作 vim常用模式 1、命令模式 2、插入模式 3、底行模式 4、可视化模式,命令模式按v进入 5、替换模式,命令模式下按r进入 1、插入模式 默认进入文件打开的是命令模式 在这个模式下是不能插入字符的 按“i”键,然后就进入到插入模式了,屏幕下…

vi/vim命令

四种模式 在日常的使用中,Linux并没有像Windows一样很方便的可视化界面,通常需要记很多的命令,复杂难记,今天我以不同模式的方式跟大家梳理哪些命令在哪种模式下使用,方便记忆。 vi/vim共分为四种模式,命…

Linux安装vim命令

最近在Linux上使用vim编辑器编写shell脚本的时候,遇到了这样一个问题,如下: -bash: vim: command not found 这是因为vim命令没有安装,于是我从网上搜索了很多关于安装vim命令的教程,不过大都比较繁琐,如今…

Ubuntu-vim 命令

Vim 基本上Vim 共分为三种模式,分别是 命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode) 先通过一个简单的关系图 来看一下这三个模式 的工作关系 命令模式&…

超详Linux之vim命令大全

打开Linux终端&#xff0c;开始创建第一个文件&#xff0c;回车进入vim编辑器&#xff08;命令模式&#xff09; [usermaster ~]$ vim textvim编辑器的三种模式转换 插入模式<>命令模式<>末行模式 命令模式 > 插入模式 按insert键或i键、a键、o键、s键等…

Git中的vim命令

现在做项目&#xff0c;一般使用的是Git来管理代码。 但是我一般熟用的指令局限于git clone&#xff0c;git add&#xff0c;git commit&#xff0c;git push&#xff0c;git pull。。。偶尔出现冲突就解决解决冲突&#xff0c;遇到没出现过的问题就上网搜一搜。 刚刚出现了一个…

vim命令:编辑模式和命令模式

vim命令&#xff1a;编辑模式和命令模式 BatmanLinux 0人评论 474人阅读 2018-01-04 19:07:16 vim&#xff1a;编辑模式 从一般模式进入编辑模式&#xff0c;只需你按一个键即可&#xff08;i,I,a,A,o,O,r,R&#xff09;。当进入编辑模式时&#xff0c;会在屏幕的最下一行出现…

Vi/Vim命令详解

Vi&#xff0c;是一款由加州大学伯克利分校&#xff0c;Bill Joy研究开发的文本编辑器。 vi是unix/linux操作系统中最经典的文本编辑器&#xff0c;只能是编辑字符&#xff0c;不能对字体、段落进行排版;它既可以新建文件&#xff0c;也可以编辑文件&#xff1b;它没有…

Linux 系统-----vim命令详解

vim命令详解 Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器&#xff0c;其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设计。 相关…

Linux--vim操作命令(全)

vim常用命令总结 &#xff08;转) 在命令状态下对当前行用 &#xff08;连按两次&#xff09;, 或对多行用n&#xff08;n是自然数&#xff09;表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n排版&#xff0c;相当于一般IDE里的code format。使用ggG可对…

【vim】vim命令|工具

目录 vim的查找功能 一&#xff0c;匹配&#xff1a; 二&#xff0c;正则表达式 三&#xff0c;快速查找 跳转移动 vim 文本行逆序化 vim跳转到指定行 vim删除 显示不可见字符 函数跳转&#xff08;需要插件ctags&#xff09; 移动 文档操作 翻页 复制 / 粘贴 查…

【Linux】VIM命令(全面详解)

VI和VIM命令详解 一.VI和VIM是什么&#xff1f;二.VI和VIM使用和区别&#xff1f;1.使用2.区别 三.VIM的三种格式1.普通模式2.编辑模式&#xff08;插入模式&#xff09;3.指令模式&#xff08;命令模式&#xff09; 四.VI/VIM键盘图 一.VI和VIM是什么&#xff1f; VI是Unix操作…

linux中vim命令详解(操作大全)

光标的移动 1.用h, j,k,l 来表示光标的移动 vim的金如何退出 2.如何退出vim编辑器操作行 先打出esc推出选项然后shift冒号 &#xff0c;然后输入q!就可以了 3.如果想进虚拟机中编辑器看操作的话&#xff0c;需要输入vimtutor命令就可以进入vim虚拟器教程了 vim的编辑 4.x代…

vim常用命令总结

文章目录 vi/vim 常用命令总结如何进入vim1. vi/vim的工作模式切换2. vim命令键盘图3. 常用命令模式命令3.1 光标移动1. 移动键2. 行内移动3. 行间移动4. 标记定位5. 查找定位 3.2 复制剪切粘贴常用复制剪切粘贴命令 4. 常用底线命令行模式命令4.1 设置行号4.1 撤销 5. vim配置…

Linux学习之vim命令

无论是作为一个开发&#xff0c;或者是测试&#xff0c;亦或是运维&#xff0c;都会在很多工作中接触linux。而在linux中&#xff0c;就不得不知道一个文件编辑器。熟悉linux的人都知道的一句话&#xff1a;一切皆文件。所以&#xff0c;想要在linux中让你的操作溜起来&#xf…

vim常用指令

目录 一、模式间切换 1.插入模式 2.末行模式 3.命令模式 二、命令模式常用命令集 移动光标 复制 删除(剪切)文字 替换 撤销上一次操作 更改 跳至指定的行 三、 vim末行模式常用命令集 列出行号 跳到文件中的某一行 查找字符 保存文件 离开vim 一、模式间切换…

Vim中的常用命令总结(持续补充完善)

文章目录 前言VIM命令Vim的三种模式(1) 命令模式(2) 插入模式(3) 退出模式 跳转(1) gg &#xff1a;跳转到文件开头(2) Shift g &#xff1a;跳转到文件结尾 分割窗口(1) :vsplit &#xff1a;垂直分割(2) :split &#xff1a;水平分割窗口 VIM中常用文本处理命令查找(1) /pat…