ELK(六)—Filebeat安装部署

news2024/11/25 18:32:43

目录

  • 一、介绍
    • 1.1特点
    • 1.2使用原因
    • 1.3结构图
    • 1.4工作流程
  • 二、安装部署
    • 2.1下载
    • 2.2启动
    • 2.3监控日志文件
    • 2.4自定义字段
  • 三、连接Elasticsearch
  • 四、工作原理

一、介绍

Filebeat是一个轻量级的日志和文件数据收集器,属于Elastic Stack(ELK Stack)中的一个组件。它的主要作用是搜集、传输和转发各种类型的日志和事件数据,将这些数据发送到中央的Elasticsearch集群或者Logstash进行处理和存储。以下是Filebeat的一些关键特性和使用原因:

Filebeat的官网网址如下:https://www.elastic.co/cn/beats/filebeat

image.png

1.1特点

  1. 轻量级: Filebeat是一个小型的、轻量级的代理,对系统资源的消耗相对较低。
  2. 易于配置: Filebeat的配置相对简单,可以通过YAML文件轻松配置日志路径、数据输入、输出等。
  3. 多数据输入: 支持多种输入源,包括文件、日志文件、系统日志等。
  4. 多数据输出: 可以将数据发送到Elasticsearch、Logstash等多个目标。
  5. 模块化: 支持模块化的配置,可轻松集成到Elastic Stack中。
  6. 实时性: 提供近实时的数据传输,支持快速检测和响应。

1.2使用原因

  1. 集中日志管理: Filebeat帮助组织集中管理日志数据,通过将日志数据发送到Elasticsearch中,用户可以使用Kibana等工具来轻松搜索和分析数据。
  2. 实时监控: Filebeat的实时数据传输能力使得用户能够迅速监测系统中发生的事件,帮助实现实时监控和警报。
  3. 日志数据分析: Filebeat能够解析和发送各种日志格式,包括结构化和非结构化的数据,以便进行更深入的分析。
  4. 简化数据流程: Filebeat通过将数据发送到Elasticsearch或Logstash,使得整个数据流程更为简单和灵活。
  5. 集成到Elastic Stack: 作为Elastic Stack的一部分,Filebeat无缝集成到Elasticsearch、Logstash、Kibana等组件中,为日志和事件处理提供了完整的解决方案。

总体而言,Filebeat是一个强大的工具,使得日志和事件数据的搜集和处理变得更为简单和高效。通过与其他Elastic Stack组件配合使用,用户可以建立一个强大的实时日志分析和监控系统。

1.3结构图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.4工作流程

Filebeat的工作流程可以总结为以下几个步骤:

  1. Input 输入: 在Filebeat的配置中,可以指定多个数据输入源,这些源可以是文件、日志文件、系统日志等。用户可以使用通配符指定多个源,以便匹配到相应的日志文件。
  2. Harvester 收割机: 一旦Filebeat匹配到日志文件,就会启动一个称为Harvester的组件。Harvester负责从日志文件中源源不断地读取数据,确保Filebeat可以实时地捕捉到新的日志事件。
  3. Spooler 卷轴: Harvester将收割到的日志数据传递给Spooler,这是Filebeat内部的一个组件。Spooler的作用是将接收到的数据进行缓冲和处理,并将它们传递到后续的输出目标。
  4. Output 输出: Filebeat支持将数据发送到多个输出目标,其中最常见的是Elasticsearch和Logstash。数据可以通过输出插件配置,灵活地传递到用户指定的目标,从而实现集中式存储、分析和可视化。

整个流程中,Filebeat保证了日志数据的实时性,从而满足了用户对于快速响应和实时监控的需求。通过将Filebeat与Elasticsearch、Logstash等组件结合使用,用户可以轻松地构建强大的实时日志处理和分析系统。

二、安装部署

2.1下载

机器是直接wget下载

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.11.1-linux-x86_64.tar.gz

也可以去官网上下载 https://www.elastic.co/cn/downloads/beats/filebeat

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image.png

下载完成后,就是解压操作了

tar -zxvf filebeat-8.11.1-linux-x86_64.tar.gz

重命名

mv filebeat-8.11.1-linux-x86_64 filebeat

进入到filebeat目录下,进行操作(需要新建一个.yml文件)

vim hmiyuan.yml

在文件输入下面的内容

filebeat.inputs: # filebeat input输入
- type: stdin    # 标准输入
  enabled: true  # 启用标准输入
setup.template.settings: 
  index.number_of_shards: 3 # 指定下载数
output.console:  # 控制台输出
  pretty: true   # 启用美化功能
  enable: true
  1. filebeat.inputs: 定义Filebeat的输入源。在这里,您配置了一个 stdin 输入,表示通过标准输入读取日志。
  2. setup.template.settings: 配置模板的一些设置。在这里,您指定了索引的分片数为 3。
  3. output.console: 配置Filebeat的输出目的地。在这里,您将日志输出到控制台,并启用了美化功能。

2.2启动

./filebeat -e -c hmiyuan.yml

./filebeat -e -c hmiyuan.yml 命令是在以 hmiyuan.yml 为配置文件运行 Filebeat,-e 标志表示在启动时显示调试信息。

启动成功画面

image.png

然后我们在控制台输入信息

image.png

随后我们在控制台可以看到一个json格式的输出,内容如下

image.png

2.3监控日志文件

在filebeat目录下创建一个“hmiyuan-log.yml”文件,文件内容如下:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/elk/logs/*.log
setup.template.settings:
  index.number_of_shards: 3
output.console:
  pretty: true
  enable: true

filebeat.inputs: 定义 Filebeat 的输入配置,这里指定了一个日志输入。

  • type: log: 表示输入类型是日志文件。
  • enabled: true: 启用该输入。
  • paths: 指定要监视的日志文件路径。在这个例子中,它监视 /opt/elk/logs/ 目录下所有以 .log 结尾的文件。

setup.template.settings: 用于设置模板相关的配置。

  • index.number_of_shards: 3: 设置 Elasticsearch 索引的分片数量为

output.console: 配置输出到控制台的设置。

  • pretty: true: 启用漂亮的输出,使日志更易读。
  • enable: true: 启用控制台输出。

文件创建好了之后,我们需要创建上文中的path中文件了。

mkdir -p /opt/elk/logs

上面的配置完成后,我们就可以进行测试看是否配置完成了。

echo "hello world" >> /opt/elk/logs/test.log

重启启动filebeat并指定配置文件

./filebeat -e -c hmiyuan-log.yml

image.png

可以看到文件中的内容以及被filebeat读取出来了

追加数据

 echo "你好,陌生人" >> test.log

可以看到新增的数据也成功被收集了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在"/opt/elk/log"中的添加新文件,同时添加数据

echo "a new directory" >> one.log

image.png

2.4自定义字段

当我们的元数据没办法支撑我们的业务时,我们还可以自定义添加一些字段.

修改"filebeat-log.yml"文件的内容。

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/elk/logs/*.log
  tags: ["web", "test"]  
  fields:  
    from: web-test
  fields_under_root: true 
setup.template.settings:
  index.number_of_shards: 3
output.console:
  pretty: true
  enable: true

新添加部分解析

  1. Tags(标签):

    tags: ["web", "test"]
    

    这里通过 tags 字段为事件添加了两个标签,即 “web” 和 “test”。标签是一种用于标识事件的方式,它可以在后续的处理中用于过滤或分类事件。

  2. Fields(字段):

    fields:
      from: web-test
    

    通过 fields 字段添加了一个自定义字段,即 from: web-test。这是一种为事件添加额外信息的方式,您可以根据需要添加不同的字段。在这个例子中,为事件指定了来源是 “web-test”。

  3. Fields Under Root(添加到根节点):

    fields_under_root: true
    

    fields_under_root 设置为 true,这表示将自定义字段添加到事件的根节点,而不是作为子节点。这样,添加的字段会直接位于事件的顶层,而不是嵌套在其他字段中。

这些配置的添加使您能够在 Filebeat 采集的日志事件中附加额外的信息,以便更好地进行后续处理和分析。

修改完成后,重启filebeat

./filebeat -e -c hmiyuan-log.yml

添加数据到“/opt/elk/logs/test.log”中

echo "a god day" >> /opt/elk/logs/test.log

image.png

可以看到自定义字段已经成功显示出来了。

三、连接Elasticsearch

继续修改“hmiyuan-log.yml”文件,添加elasticsearch的ip以及暴露出来的端口号。

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/elk/logs/*.log
  tags: ["web", "test"]
  fields:
    from: web-test
  fields_under_root: false
setup.template.settings:
  index.number_of_shards: 1
output.elasticsearch:
  hosts: ["192.168.150.190:9200"] #这里填写elasticsearch机器的ip以及端口,可以添加多台机器

重启启动filebeat

./filebeat -e -c hmiyuan-log.yml

查看filebeat启动的时候输出的相关信息,可以看到已经成功连接到了190这台机器上了,接下来继续向"/opt/elk/log/"目录下的文件输入信息,查看elasticsearch是否也可以接收到数据。

image.png

向“test.log”文件追加信息。

echo "dog" >> /opt/elk/logs/test.log

在ES中,我们可以看到,多出了一个 filebeat的索引库

image.png

然后我们浏览对应的数据,看看是否有插入的数据内容

image.png

elasticsearch已经拿到了数据了,并展示到了elasticsearch-head中。

四、工作原理

Filebeat工作原理

Filebeat主要由下面几个组件组成: harvester、prospector 、input

harvester
负责读取单个文件的内容
harvester逐行读取每个文件(一行一行读取),并把这些内容发送到输出
每个文件启动一个harvester,并且harvester负责打开和关闭这些文件,这就意味着harvester运行时文件描述符保持着打开的状态。
在harvester正在读取文件内容的时候,文件被删除或者重命名了,那么Filebeat就会续读这个文件,这就会造成一个问题,就是只要负责这个文件的harvester没用关闭,那么磁盘空间就不会被释放,默认情况下,Filebeat保存问价你打开直到close_inactive到达

prospector
prospector负责管理harvester并找到所有要读取的文件来源

如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester

Filebeat目前支持两种prospector类型:log和stdin

Filebeat如何保持文件的状态

Filebeat保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中
该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。
如果输出(例如ElasticSearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可以用时继续读取文件。
在Filebeat运行时,每个prospector内存中也会保存的文件状态信息,当重新启动Filebat时,将使用注册文件的数量来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取
文件状态记录在data/registry文件中

input
一个input负责管理harvester,并找到所有要读取的源

如果input类型是log,则input查找驱动器上与已定义的glob路径匹配的所有文件,并为每个文件启动一个harvester

每个input都在自己的Go例程中运行

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

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

相关文章

智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.侏儒猫鼬算法4.实验参数设定5.算法结果6.参考…

vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)

目录 一、什么是Vue路由导航守卫? 二、全局守卫 1、beforeEach 下面是一个beforeEach的示例代码: 2、beforeResolve 下面是一个beforeResolve的示例代码: 3、afterEach 下面是一个afterEach的示例代码: 三、路由独享守卫…

基于stm32ESP8266控制并显示速度的小车

这篇博客是为了实现stm32与ESP8266通讯控制的小车,同时可以实现在网络助手和OLED显示屏上显示速度的功能。 一、硬件部分 名称图片功能32单片机--小车-oled显示屏显示当当前的速度,有需要了解如何使用的可以看看我的文章,http://t.csdnimg.…

C++:vector增删查改模拟实现

C:vector增删查改模拟实现 前言一、迭代器1.1 非const迭代器:begin()、end()1.2 const迭代器:begin()、end() 二、构造函数、拷贝构造函数、赋值重载、析构函数模拟实现2.1 构造函数2.1.1 无参构造2.1.2 迭代器区间构造2.1.3 n个值构造 2.2 拷贝构造2.3 …

【无标将列表中的多组参数依次带入指定的函数将每次调用函数返回结果组成列表itertools.starmap()题】

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将列表中的多组参数 依次带入指定的函数 将每次调用函数 返回结果组成列表 itertools.starmap() [太阳]选择题 请问以下代码输出的结果是? import itertools a [(1, 2), (3, 4)] p…

leetcode系列:反转链表的形象表示

反转链表是一道比较简单的题,主要考察的是对链表数据结构的理解和双指针应用,比较容易出错的地方是指针的移动顺序。在练习的过程中想到了一个比较形象的表示方法,于是记录下来。 # Definition for singly-linked list. # class ListNode: #…

MATLAB - 凸优化(Convex Optimization)

系列文章目录 前言 凸优化(Convex optimization)是在凸约束(convex constraints)条件下使凸目标函数(convex objective function)最小化的过程,或者等同于在凸约束条件下使凹目标函数最大化的过…

四元数,欧拉角,旋转矩阵,旋转向量

四元数,旋转矩阵,旋转向量,欧拉角 一、欧拉角 1、欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度,默认旋转正向为逆坐标轴逆…

华为OD机试 - 生成哈夫曼树(Java JS Python C)

题目描述 给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。 请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。 为了保证输出的二叉树中序遍历结果统一,增加以下限制: 二叉树节点中,左节…

mybatis和mybatisplus中对 同namespace 中id重复处理逻辑源码解析

一、背景 同事在同一个mapper.xml (namespace相同),复制了一个sql没有修改id,正常启动项目。但是我以前使用mybatis的时候如果在namespace相同情况下,id重复,项目会报错无法正常启动,后来看代码…

Vue3-01-创建项目

环境准备 1.需要用到 16.0 以及更高版本的 node.js 2.使用vscode编辑器进行项目开发可以在命令行中查看node的版本号: node -v创建项目 1.准备一个目录 例如,我创建项目的时候是在该目录下进行的;D:\projectsTest\vue3project2.执行创建命令(*&#x…

React聚焦渲染速度

目录 一、引言 二、React.js的渲染速度机制 虚拟DOM Diff算法 三、优化React.js的渲染速度 避免不必要的重新渲染 使用合适的数据结构和算法 使用React Profiler工具进行性能分析 四、实际案例分析 五、总结 一、引言 在当今的Web开发领域,React.js无疑是…

屏蔽百度首页推荐和热搜的实战方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

第二十一章

计算机应用实现了多台计算机间的互联,使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序,这些程序借助于网络协议,相互之间可以交换数据。编写网络应用程序前,首先必须明确所要使用的网络协议…

C++STL的string(超详解)

文章目录 前言C语言的字符串 stringstring类的常用接口string类的常见构造string (const string& str);string (const string& str, size_t pos, size_t len npos); capacitysize和lengthreserveresizeresize可以删除数据 modify尾插插入字符插入字符串 inserterasere…

软件设计中如何画各类图之八深入解析部署图:物理布局与系统架构的视觉化呈现

目录 1 前言2 部署图的符号及说明3 画部署图的步骤3.1 **识别节点**3.2 **定义组件**3.3 **标识部署关系**3.4 **添加细节** 4 部署图的用途4.1 **系统设计与规划**4.2 **系统架构分析**4.3 **系统维护与升级** 5 实际场景举例5.1 Web应用部署图5.2 云端服务部署图 6 结语 1 前…

尝试通过AI模型进行简单的编码

一、前言 最近尝试通过AI来编程,总体感觉还是能处理写简单的问题,复杂的问题目前还是无法解决。主要的痛点还是数据噪音,就是AI永远不会承认它不会,它会给你的一个错误的信息,它也不会告诉你你的问题它暂时无法完整正…

mac苹果笔记本电脑如何强力删除卸载app软件?

苹果电脑怎样删除app?不是把app移到废纸篓就行了吗,十分简单呢! 其实不然,因为在Mac电脑上,删除应用程序只是删除了应用程序的主要组件。大多数时候,系统会有一个相当长的目录,包含所有与应用程…

SCI一区级 | Matlab实现GWO-CNN-BiLSTM-selfAttention多变量多步时间序列预测

SCI一区级 | Matlab实现GWO-CNN-BiLSTM-selfAttention多变量多步时间序列预测 目录 SCI一区级 | Matlab实现GWO-CNN-BiLSTM-selfAttention多变量多步时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GWO-CNN-BiLSTM-selfAttention灰狼算法优化卷…

通过误差改变控制的两种策略

如果反馈误差越来越大,需要改变调节方向以减小误差并实现更好的控制。以下是两种常见的调节方向改变的方法: PID控制器中的积分限制:在PID控制中,积分项可以用来减小稳态误差。然而,当反馈误差持续增大时,积…