简介

首先要了解ELK架构

这种结构因为需要在各个服务器上部署 Logstash,而它比较消耗 CPU 和内存资源,所以比较适合计算资源丰富的服务器,否则容易造成服务器性能下降,甚至可能导致无法正常工作。

Beats 同样作为ELK Stack的新成员,包含

Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户

这种架构解决了 Logstash 在各服务器节点上占用系统资源高的问题。

filebeat是一个轻量级日志收集器,有多轻量?和logstatsh一比的话就很轻量了

首先logstatsh是使用java编写的,所以跑起来需要占用jvm资源,默认的堆大小就是1g

而filebeat是使用go语言写的,占用的资源比logstatsh少的多

官网的原话

使用

官方文档

其实需要我们配置的地方就是收集日志的策略,在filebeat.yml里有很多日志策略的配置

比如说你只要收集info或者error的日志,或者合并某段日志

因为不指定合并日志的策略,filebeat会一行一行的显示在kibana上,但是比如说一些sql的日志就是占几行的

我这里的需求就很简单,日志全部收集,需要合并日志,只要通过配置multiline这个配置

multiline.pattern: '^\['
multiline.negate: true
multiline.match: after 根据你配置其他多行选项的方式,与指定正则表达式匹配的行将被视为上一行的延续或新多行事件的开始。 你可以设置 negate 选项以否定模式。
multiline.pattern 匹配的正则
multiline.match after 或 before,合并到上一行的末尾或开头
multiline.negate 默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行

效果

实战

日志格式

配置

收集info的日志

原理

示例图

实现

整个 filebeat 主要包含以下重要组件:

  1. Crawler:负责管理和启动各个 Input
  2. Input:负责管理和解析输入源的信息,以及为每个文件启动 Harvester。可由配置文件指定输入源信息。
  3. Harvester: Harvester 负责读取一个文件的信息。
  4. Pipeline: 负责管理缓存、Harvester 的信息写入以及 Output 的消费等,是 Filebeat 最核心的组件。
  5. Output: 输出源,可由配置文件指定输出源信息。
  6. Registrar:管理记录每个文件处理状态,包括偏移量、文件名等信息。当 Filebeat 启动时,会从 Registrar 恢复文件处理状态。

filebeat 的整个生命周期,几个组件共同协作,完成了日志从采集到上报的整个过程。

关于如何保证日志文件的正确性,input里有两个重要的状态offsetfinished

  1. offset: 代表文件当前读取的 offset,从 Registrar 中初始化。Harvest 读取文件后,会同时修改 offset。
  2. finished: 代表该文件对应的 Harvester 是否已经结束,Harvester 开始时置为 false,结束时置为 True。

对于每次定时扫描到的文件,概括来说,会有三种大的情况:

  1. Input 找不到该文件状态的记录, 说明是新增文件,则开启一个 Harvester,从头开始解析该文件
  2. 如果可以找到文件状态,且 finished 等于 false。这个说明已经有了一个 Harvester 在处理了,这种情况直接忽略就好了。
  3. 如果可以找到文件状态,且 finished 等于 true。说明之前有 Harvester 处理过,但已经处理结束了。

除此之外,一个比较有意思的点是,Filebeat 甚至可以处理文件名修改的问题。即使一个日志的文件名被修改过,Filebeat 重启后,也能找到该文件,从上次读过的地方继读。

这是因为 Filebeat 除了在 Registrar 存储了文件名,还存储了文件的唯一标识。对于 Linux 来说,这个文件的唯一标识就是该文件的 inode ID + device ID。

参考文章

FileBeat简单使用的更多相关文章

  1. elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统

    前言 刚从事开发那段时间不习惯输出日志,认为那是无用功,徒增代码量,总认为自己的代码无懈可击:老大的叮嘱.强调也都视为耳旁风,最终导致的结果是我加班排查问题,花的时间还挺长的,要复现问题.排查问题等, ...

  2. fileBeat的简单使用

    Beat的简单使用 Filebeat配置 Output 常见日志格式封装 简单使用filebeat格式化nginx日志 Filebeat的配置: # 修改filebeat.yml # vim file ...

  3. Filebeat原理与简单配置入门

    Filebeat工作原理 Filebeat由两个主要组件组成:prospectors 和 harvesters.这两个组件协同工作将文件变动发送到指定的输出中. Harvester(收割机):负责读取 ...

  4. CentOS7下 简单安装和配置Elasticsearch Kibana Filebeat 快速搭建集群日志收集平台

    目录 1.添加elasticsearch官网的yum源 2.Elasticsearch 安装elasticsearch 配置elasticsearch 启动elasticsearch并设为开机启动 3 ...

  5. Filebeat日志收集简单使用

    1.简略介绍 轻量型日志采集器,用于转发和汇总日志与文件. 官网: https://www.elastic.co/cn/beats/filebeat 2.本文实现的功能 3.事先必备: 至少一台Kaf ...

  6. 日志分析 第四章 安装filebeat

    在进行前面准备之后可以开始安装了,我们的安装顺序是filebeat--->logstash--->elasticsearch filebeat安装很简单,先下载filebeat,这里我们使 ...

  7. filebeat安装与基础用法

    来自官网,版本为1.2 下载rpm包并安装 wget -c https://download.elastic.co/beats/filebeat/filebeat-1.2.3-x86_64.rpm r ...

  8. ELK+FileBeat+Log4Net搭建日志系统

    ELK+FileBeat+Log4Net搭建日志系统 来源:https://www.zybuluo.com/muyanfeixiang/note/608470 标签(空格分隔): ELK Log4Ne ...

  9. Logstash学习1-logstash的简单例子

    如何安装ELK Redis插件 1. 安装好logstash后.2. 最简单的logstash.logstash -e 'input { stdin { } } output { stdout {} ...

  10. Filebeat中文指南

    Filebeat中文指南 翻译自:https://www.elastic.co/guide/en/beats/filebeat/current/index.html 译者:kerwin 鸣谢:tory ...

随机推荐

  1. [转帖]harbor镜像仓库清理操作

    https://www.cnblogs.com/FengGeBlog/p/15517706.html 两年前清理过一次harbor镜像,而现在又要面临清镜像的操作了,笔者目前所在的公司镜像是存放在ce ...

  2. [转帖]PG-用户|角色管理

    https://www.cnblogs.com/binliubiao/p/14415203.html 1. 角色 ​ 决定发起连接的命令的初始访问权限.在PG中,角色和用户相当于是一样的对象.区别在于 ...

  3. 【转帖】eBay 云计算“网”事:网络超时篇

    https://www.infoq.cn/article/JmCbkA0XX9NqrcX6loIo eBay技术荟 2020-06-19 本文字数:5508 字 阅读完需:约 18 分钟 导读 eBa ...

  4. [转帖]BIS出口管制新规说明会,进一步明确十大问题

    https://zhuanlan.zhihu.com/p/573765504 10月13日晚9点,BIS就出口管制新规举行电话会议简报,出口执法助理副部长Thea Kendler主持会议.小白总结要点 ...

  5. [转帖]技术派-epoll和IOCP之比较

    直入正题 Epoll 用于Linux系统: IOCP 是用于 Windows: Epoll 是当事件资源满足时发出可处理通知消息: IOCP 则是当事件完成时发出完成通知消息. 从应用程序的角度来看, ...

  6. vue2-vue3监听子组件的生命周期的两种方式

    1.生命周期 生命周期是指:vue实例从创建到销毁这一系列过程.vue官网生命周期如下图所示: vue的生命周期有多少个 beforeCreate, created, beforeMount, mou ...

  7. 小程序跳转到h5页面无法获取参数

    在小程序中,遇见这样一个需求: 小程序(携带token)跳转到H5页面: 在H5端取token;将token作为参数: 然后返回来的信息, 这里遇见一个问题,在created中无法获取地址栏的参数: ...

  8. elementui表格内容超出显示省略号

    有些时候表格的内容太长了: 但是elementui中的表格,会进行换行处理: 此时表格的高度就会发生变化 这样就不好看,此时就要进行省略号来出来这个问题: el-table是有这个控制属性的::sho ...

  9. Python Coroutine 池化实现

    Python Coroutine 池化实现 池化介绍 在当今计算机科学和软件工程的领域中,池化技术如线程池.连接池和对象池等已经成为优化资源利用率和提高软件性能的重要工具.然而,在 Python 的协 ...

  10. NLP国内外大模型汇总列表[文心一言、智谱、百川、星火、通义千问、盘古等等]

    NLP国内外大模型汇总列表[文心一言.智谱.百川.星火.通义千问.盘古等等] 中国大模型列表大全,全面收集有明确来源的大模型情况,包括机构.来源信息和分类等,随时更新. Awesome family ...