【星海随笔】云解决方案学习日志篇(三) 工作原理篇

Filebeat工作原理

Filebeat 是使用 Golang 实现的轻量型日志采集器,也是 Elasticsearch stack 里面的一员。本质上是一个 agent ,可以安装在各个节点上,根据配置读取对应位置的日志,并上报到相应的地方去。
使用了背压敏感协议,因此不会使管道过载。当Logstash数据处理繁忙时,Filebeat放慢它的读取速度。一旦压力解除,Filebeat将恢复到原来的速度,继续传输数据。

Filebeat主要由下面几个组件组成: harvester、prospector 、input
一台服务器只能启动一个filebeat进程。

在这里插入图片描述
参考文档:https://cloud.tencent.com/developer/article/1367784

filebeat主要模块
Crawler: 管理所有Input收集数据并发送事件到libbeat的Publisher
Input: 对应可配置的一种输入类型,每种类型都有具体的Input和Harvester实现。 配置项
Harvester: 对应一个输入源,是收集数据的实际工作者。配置中,一个具体的Input可以包含多个输入源(Harvester)
module: 简化了一些常见程序日志(比如nginx日志)收集、解析、可视化(kibana dashboard)配置项
fileset: module下具体的一种Input定义(比如nginx包括access和error log),包含:1)输入配置;2)es ingest node pipeline定义;3)事件字段定义;4)示例kibana dashboard
Registrar:用于在事件发送成功后记录文件状态

libbeat主要模块
Publisher:
client: 提供Publish接口让filebeat将事件发送到Publisher。在发送到队列之前,内部会先调用processors(包括input 内部的processors和全局processors)进行处理。
processor: 事件处理器,可对事件按照配置中的条件进行各种处理(比如删除事件、保留指定字段等)。配置项
queue: 事件队列,有memqueue(基于内存)和spool(基于磁盘文件)两种实现。配置项
outputs: 事件的输出端,比如ES、Logstash、kafka等。配置项
acker: 事件确认回调,在事件发送成功后进行回调
autodiscover:用于自动发现容器并将其作为输入源

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

Harvester负责读取单个文件的内容。读取每个文件,并将内容发送到配置指定的output,每个文件启动一个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查找驱动器上与已定义的log路径匹配的所有文件,并为每个文件启动一个harvester

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

  • 下面的例子配置Filebeat从所有匹配指定的log模式的文件中读取行


模块的使用

查看有哪些模块

./filebeat modules list

启动和关闭模块

#启动
./filebeat modules enable nginx 
#禁用
./filebeat modules disable nginx 
使用

nginx安装参考文档: https://blog.csdn.net/qq_52589631/article/details/129675424?spm=1001.2014.3001.5501
创建一个 nginx-log.yml 配置文件,启动nginx的模块功能

filebeat modules enable nginx

nginx-log.yml配置文件内容

filebeat.inputs:
- type: logenabled: truepaths:- /usr/local/nginx1/logs/*.log #nginx日志存放路径tags: ["nginx"]fields_under_root: false 
setup.template.settings:index.number_of_shards: 1
output.elasticsearch:hosts: ["192.168.40.150:9200","192.168.40.137:9200","192.168.40.138:9200"]

cd modules.d/
vim nginx.yml

# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.9/filebeat-module-nginx.html- module: nginx# Access logsaccess:enabled: true# 添加日志文件var.paths: ["/usr/local/nginx1/logs/access.log*"]# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.#var.paths:# Error logserror:enabled: truevar.paths: ["/usr/local/nginx1/logs/error.log*"]
filebeat.inputs:
setup.template.settings:index.number_of_shards: 1
output.elasticsearch:hosts: ["192.168.40.150:9200","192.168.40.137:9200","192.168.40.138:9200"]
filebeat.config.modules:path: $

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

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

相关文章

HCIA 10 网络安全之结合ACL访问控制列表登录Telnet及FTP

ACL 本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用 ACL 的业务模块的处理策略来允许或阻止该报文通过。 1.实验介绍及拓扑 R3 为telnet服务器,R1 为客户端&#…

BFT机器人采购,是制造业最适合的选择!

随着制造业的转型升级,越来越多的企业开始认识到引入机器人技术的重要性。那么面临选择在哪里购,哪里可以安心购,就成为了大家所关注的热点。 BFT为您提供一站式的机器人采购服务,凭借独特的优势和全面且专业的服务,正…

Java多线程-StampedLock(原子读写锁)

StampedLock 是读写锁的实现,对比 ReentrantReadWriteLock 主要不同是该锁不允许重入,多了乐观读的功能,使用上会更加复杂一些,但是具有更好的性能表现。StampedLock 的状态由版本和读写锁持有计数组成。 获取锁方法返回一个邮戳&…

浅浅了解下Spring中生命周期函数(Spring6全攻略)

你好,这里是codetrend专栏“Spring6全攻略”。 Spring框架设计生命周期回调函数的主要目的是为了提供一种机制,使开发人员能够在对象创建、初始化和销毁等生命周期阶段执行特定的操作。这种机制可以帮助开发人员编写更加灵活和可维护的代码。 举个例子…

LogicFlow 学习笔记——4. LogicFlow 基础 边 Edge

边 Edge 和节点一样&#xff0c;LogicFlow 也内置一些基础的边。LogicFlow 的内置边包括&#xff1a; 直线 - line直角折现 - polyline贝塞尔曲线 - bezier 新建 src/views/Example/LogicFlow/Example08.vue 并编写如下代码&#xff1a; <script setup lang"ts&quo…

图解系列 图解Kafka之Consumer

文章目录 术语消息主题和分区集群和分区副本消费者组重新平衡组/分区再均衡消费者的分区策略群组协调者Coordinator 和群组领导者 Group Leader 流程初始化流程消费流程Consumer重平衡 消费者核心配置示例代码高级提交偏移量的几种方式自动提交手动同步提交手动异步提交提交特定…

鸿蒙开发电话服务:【@ohos.telephony.call (拨打电话)】

拨打电话 call模块提供呼叫管理功能&#xff0c;包括拨打电话、跳转到拨号界面、获取通话状态、格式化电话号码等。 如需订阅通话状态请使用[observer.on(callStateChange)] 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角…

深入解析 Java 标准库:构建高效应用的基石

Java 标准库&#xff0c;也称为 Java API&#xff0c;是一组预先编写的类和接口&#xff0c;为 Java 应用程序提供了一系列丰富的功能。这些库被组织成包&#xff08;packages&#xff09;&#xff0c;每个包都包含了一组相关的类和接口&#xff0c;用于处理特定的任务&#xf…

前端数据库大盘点:解锁Web应用数据存储最优解!

在构建现代Web应用程序时&#xff0c;前端不仅要处理用户交互和展示逻辑&#xff0c;往往还需要承担一部分数据处理的任务&#xff0c;尤其是在单页面应用&#xff08;SPA&#xff09;和渐进式Web应用&#xff08;PWA&#xff09;中。这就引出了一个关键问题&#xff1a;前端应…

Python使用策略模式实现绘图功能

策略模式&#xff08;Strategy Pattern&#xff09;:允许定义一系列算法&#xff0c;将它们封装起来&#xff0c;使得它们可以互换。 实现绘制不同类型的图表&#xff08;如折线图、柱状图和饼图&#xff09;功能。 下面是一个示例&#xff0c;展示如何传入横坐标和纵坐标内容…

人工智能技术应用笔记(十二):搭建自带大模型微信,完美对接GPT-4o,Kimi等大模型,智能体平台Coze也能接

许多朋友对如何搭建自己的微信机器人非常感兴趣。今天就来教大家如何操作。 一、 准备工作 一台电脑或者云服务器&#xff0c;对配置要求不高&#xff0c;一般的电脑就行 大模型API调用的Key&#xff0c;比如GPT-4o&#xff0c;Kimi&#xff0c;Deepseek&#xff08;不知道怎…

使用Omnipeek进行Wifi/P2P抓包

前言 工作中解决Mirracast投屏连接失败的问题时&#xff0c;遇到了需要抓取wifi数据包的情况&#xff0c;记录一下配置和使用过程。 一、Omnipeek 的安装和配置 1.1 Omnipeek 安装 双击 setup.exe 进行安装 1.2 注册 注册时&#xff0c;版本写 71 &#xff0c;产生序列号和…

代码随想录算法训练营第36期 last day

最后一次更新&#xff0c;之后去复习专业课和简历 583两个字符串的删除操作 自己做出来了&#xff1a; Code: class Solution {public://找到公共子序列的最大长度dp 最小步数串1.size-dp串2.size-dp int minDistance(string word1, string word2) { vector<v…

Axios 请求响应拦截器 每次只发送一次请求封装

import axios from "axios"; import general from "/utils/general";const request axios.create({baseURL:general.serverUrl })const requestMap new Map() //保存每一次请求request.interceptors.request.use(req>{let oldRequest requestMap.get(re…

解决帝国cms栏目管理拼音乱码的问题

帝国CMS7.5版本utf-8版网站后台增加栏目生成乱码的问题怎么解决 1、需要改一个函数&#xff0c;并且增加一个处理文件&#xff0c;方法如下&#xff1a; 修改e/class/connect.php文件&#xff0c;找到ReturnPinyinFun函数&#xff0c;如未修改文件在4533-4547行&#xff0c;将…

sockjs-client和stompjs连接websocket服务被拒绝导致vue项目崩溃问题

1、前端连接服务器代码demo&#xff1a; // 引入stomp.js库 import SockJS from sockjs-client; import Stomp from stompjs;// WebSocket服务器地址 const ws new SockJS(http://localhost:8080/my-endpoint);// 初始化STOMP客户端 const stompClient Stomp.over(ws);// 连…

如何判断 NaN的方法?

判断数据类型的方法在JavaScript中有几种&#xff0c;主要包括&#xff1a; typeof 操作符&#xff1a;用于返回一个变量或表达式的数据类型的字符串表示。 typeof 42; // "number"typeof "Hello"; // "string"typeof true; // "bool…

node 中间件使用例子

NodeJS在中间件领域有着较为广泛的应用&#xff0c;他能做一些中间层事件&#xff0c;把服务端一部分的代码抽出来&#xff0c;减少处理冗余事情付出的代价&#xff0c;同时让服务真正做业务处理而不用关心页面的事情 常见的应用场景有&#xff1a; 跨域&#xff1a;解决跨域问…

二叉树左右树交换

leetcode 226题 翻转二叉树 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;root [2,1,3]…

背就有效!2024下《系统架构设计师》50个高频考点汇总

宝子们&#xff01;上半年软考已经结束一段时间了&#xff0c;准备备考下半年软考高级-系统架构设计师的小伙伴可以开始准备了&#xff0c;毕竟高级科目的难度可是不低的&#xff0c;相信参加过上半年架构的小伙伴深有体会。 这里给大家整理了50个高频考点&#xff0c;涵盖全书…