首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Filebeat的Registry文件越来越大?

Filebeat的Registry文件越来越大?

原创
作者头像
bellen
发布于 2019-08-19 11:11:08
发布于 2019-08-19 11:11:08
4.4K04
代码可运行
举报
运行总次数:4
代码可运行

背景

使用Filebeat 5.6.4收集业务日志,配置文件比较简单:

代码语言:txt
AI代码解释
复制
filebeat.prospectors:
- input_type: log
  paths:
    - /path/logs/access.log
output.elasticsearch:
  hosts: ["http://x.x.x.x:9200"]
  index: "accesslog-%{+yyyy.MM.dd}"

其中,access.log是业务主日志,按天进行滚动,日志文件最大为128MB, 当天日志超出128MB后也进行滚动,最多保留15个日志文件;滚动后的日志文件会立即进行压缩。

启动filebeat后几个月过去了,发现filebeat目录下的data/registry文件容量越来越大。registry本身是用来记录日志文件的state信息,比如记录读取到文件位置的的offset,文件的inode、modify time等,通过查看registry文件内容看到,该文件中保存了从filebeat启动后的所有经过滚动并删除的日志文件的state信息,registry文件大小也到了几百KB,虽然看起来问题不大,但是越来越大的文件势必在每次更新时要消耗更多的系统资源,所以需要想办法优化,解决registry文件越来越大的问题。

解决办法

通过查看filebeat 5.6.4文档看到,有两个参数clean_removed和clean_inactive可以清除掉registry文件中无用的state信息。

  • clean_removed: 默认打开,清除已经被删除文件的state信息
  • clean_inactive:默认关闭,清除掉已经不活跃的文件的state信息,必须配合ignore_older参数使用,并且ignore_older +scan_frequency必须小于clean_inactive,否则可能造成日志重复收集。

既然clean_removed参数是默认打开的,并且可以清除掉已经被删除文件的state信息,那为什么在上述场景下并没有生效呢?原因就是日志滚动时是先rename重命名了access.log文件为acess.log.1, 然后把acess.log.1文件压缩成了acess.log.1.gz之后再删除acess.log.1文件,也就是说并没有直接删除掉access.log文件,而clean_removed参数对重命名的文件是不起作用的,所以state信息没有被清除。

5.6版本中有关clean_removed参数的描述:

代码语言:txt
AI代码解释
复制
This setting does not apply to renamed files or
files that were moved to another directory that is still visible to Filebeat

但是这个问题已经在6.0之后的版本得到了修复,即使文件被重命名,在收集完该文件后后续state信息也会被清理。

6.0版本中有关clean_removed参数的描述:

代码语言:txt
AI代码解释
复制
When this option is enabled, Filebeat cleans files from the registry if they 
cannot be found on disk anymore under the last known name. This means also files
which were renamed after the harvester was finished will be removed.

解决办法1

通过使用6.4.3版本的filebeat重新采集access.log日志,发现registry文件越来越大的问题已经得到了解决,所以最好的解决办法是把filebeat升级到6.4.3版本。

解决办法2

如果不能立即升级filebeat怎么办?那就可以通过配置ignore_older+clean_inactive参数解决问题.

解释一下ignore_older参数:

  • ignore_older: 默认为0不启用,启用该参数可以忽略掉比较旧的日志文件(根据modify time判断),从较新的文件开始收集日志。如果日志文件第一次被采集到但是modify time超出了ignore_older,则会从该文件末尾开始采集日志,registry文件中的state信息为日志文件的末尾;如果日志文件的state信息已经存在,但是文件的modify time超出了ignore_older,则继续从state中记录的offset开始读取日志。ignore_older必须大于close_inactive, 以确保文件在被忽略之前已经被关闭。如果文件modify time已经超出了ignore_older, 但是仍然在被采集中,此时filebeat会把文件读取完毕后等待close_inactive时间后关闭该文件。

最终针对业务场景,新的基于5.6.4版本的filebeat的配置文件如下:

代码语言:txt
AI代码解释
复制
filebeat.prospectors:
- input_type: log
  paths:
    - /path/logs/access.log
  ignore_older: 24h
  clean_inactive: 36h
output.elasticsearch:
  hosts: ["http://x.x.x.x:9200"]
  index: "accesslog-%{+yyyy.MM.dd}"

因为日志文件是按天滚动的,ignore_older设置为24h,clean_inactive设置为36h,清理掉registry文件中距离最近一次更新超出36小时的日志文件的state信息.

根据上述配置,分别验证了两个场景,证明registry文件是可以正常清理旧的state,并且日志采集也不受影响:

  • 场景1:日志较少,可能十天半月才有一条日志

这种场景下,因为日志文件一直没有更新,registry中始终记录的有日志文件的state信息,offset指向文件末尾。为什么日志文件的state信息一直没有被清理,因为更新registry文件是在读取文件之后进行的,filebeat每次扫描文件时发现文件没有被更新,就直接结束本次scan了。经过了十天半月,日志文件中产生了日志,此时会先根据registry中的state信息从文件末尾读取日志,不会从头开始读取,从而不会造成日志重复读取的情况。

  • 场景2:日志较多,滚动较快,当天的日志都能滚动15次以上

这种场景下,每次滚动后新产生的日志文件被从头开始读取,旧的日志文件被重命名后即便被删除,因为filebeat此时并没有释放文件句柄,所以也可以被持续读取直至文件末尾。旧的日志文件的state信息在滚动发生后36h会被清理掉,从而避免了registry文件越来越大的情况发生。另外需要注意的是,这种场景下因为filebeat会占用已经删除文件的句柄直至文件读取完毕并且close_inactive到期,整个过程中磁盘资源是不会释放的,所以可以通过合理配置close_timeout参数及时释放掉文件句柄。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
树莓派 usb-jetson nano opencv 打开 CSI摄像头_树莓派(四)——摄像头
树莓派摄像头模块(Pi Cam)发售于2013年5月。其第一个发布版本配备了500万像素的传感器,通过排线链接树莓派上的CSI接口。而Pi Cam的第二个发布版本——也被叫做Pi NoIR中,配备了相同的传感器,但没有红外线过滤装置。因此第二版的摄像头模块就像安全监控摄像机一样,可以观测到近红外线的波长(700 - 1000 nm),不过当然同时也就牺牲了一定的显色性。
宜轩
2022/12/26
2.1K0
树莓派:你是我的眼
树莓派官方出品有小型摄像头,用于录制视频或拍摄图片。娇小的树莓派和小型摄像头,可以制作一个很好用的移动摄影装置。当前的摄像头版本是V2,配有8M像素的Sony IMX219感光板。V2摄像头又可以分为两款,一款用于正常的可见光拍摄,另一款带有红外夜视功能。最近我入手了有红外夜视功能的V2摄像头。这款摄像头名字是Pi NoIR Camera(The infrared Camera Module v2)。除了夜视功能之外,两款摄像头区别不大,调用程序也可以通用。所以这里就以NoIR Camera为基础,介绍树莓
Vamei
2018/01/18
2.2K0
树莓派:你是我的眼
树莓派摄像头简单试用
树莓派官方推出的摄像头Camera Module,能够拍摄500万像素图片和录制1080p的视频,使用的是树莓派板子上的csi接口。
战神伽罗
2019/07/24
2.5K0
树莓派摄像头简单试用
树莓派摄像头基于 Motion 接入 HomeAssistant
前 4 天分别介绍了 ESP32-CAM 和 USB 摄像头接入 HomeAssistant 的方式,手里还有一个树莓派官方摄像头
远哥制造
2023/09/20
1.2K0
树莓派摄像头基于 Motion 接入 HomeAssistant
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)
方法一:Python+OpenCv实现树莓派数据采集,树莓派搭建服务器,PC机作为客户端实现数据传输,结果发现传输画质太差。
不脱发的程序猿
2021/01/20
7.8K2
树莓派笔记
资源下载 使用VNC远程登陆树莓派 树莓派手动指定静态IP和DNS 终极解决大法 Multi-Cam Module Error 用wiki.js搭建自己的wiki知识库
tea9
2022/09/08
2.5K0
树莓派笔记
树莓派3B+ python 实时监控(USB摄像头)并显示
  执行后会 延时10帧 拍摄 (给个准备时间)产生 一张 名称为  test 的图片
Fivecc
2022/11/21
1.3K0
树莓派3B+ python 实时监控(USB摄像头)并显示
菜鸟手册(2):给Jetson Nano安装树莓派摄像头
因为JetBot上用的是树莓派摄像头,所以我们也首选考虑使用树莓派摄像头,当然USB摄像头是亲测可用的。
GPUS Lady
2019/05/07
16.6K1
菜鸟手册(2):给Jetson Nano安装树莓派摄像头
树莓派开发环境配置
买回来的树莓派一般会带一个系统,在这里我建议自己定制系统,以树莓派桌面系统为蓝本搭建开发环境。
白德鑫
2021/02/05
1.1K0
树莓派开发环境配置
牛人教你DIY!用树莓派 Zero做飞控图传
虽然可以买到商品成品,且会比我们做出来的东西更美观,性能指标更强,但是在折腾中学习,按照自己的需求进行优化改动,享受创造的喜悦,不正是创客精神嘛。 本项目使用手头现有的硬件,旨在将树莓派Zero作为飞控图传使用,本以为会很简单,但是软件适配方面遇到一些问题,困扰了很久。 1. 硬件部分 我们首先来看看硬件列表: Raspberry Pi Zero v1.3 otg table & usb wifi dongle (Xiaomi wifi) Raspberry Pi Camera Module v1.3
机器人网
2018/05/04
6.2K0
牛人教你DIY!用树莓派 Zero做飞控图传
如何给NVIDIA JetsonOrin Nano开发套件安装CSI摄像头
【教程】如何在NVIDIA Jetson Orin NANO上把系統刷到SSD上?
GPUS Lady
2023/05/30
1.7K1
如何给NVIDIA JetsonOrin Nano开发套件安装CSI摄像头
从零开始用树莓派搭建一个实时人脸检测系统
没错,那个小盒子装的东西叫做树莓派,可能有一些朋友还没接触过,暂且理解成一个小型的个人电脑就可以了。
AI粉嫩特工队
2021/04/27
3.3K0
从零开始用树莓派搭建一个实时人脸检测系统
树莓派4b基础入门「建议收藏」
树莓派(Raspberry Pi)是一款基于ARM的微型电脑主板,旨为学生计算机编程教育而设计,其系统基于Linux,由注册于英国的慈善组织“Raspberry Pi基金会”开发,Eben·Upton为项目带头人。别看其外表“娇小”,内“心”却很强大,上网、看视频、听音乐等功能都有,可谓是“麻雀虽小,五脏俱全”。自问世以来,受众多计算机发烧友和创客的追捧。 1.树莓派的家族
全栈程序员站长
2022/07/01
7.8K0
树莓派4b基础入门「建议收藏」
使用树莓派实现的口罩检测
使用的口罩检测 项目是AIZOO团队实现的 使用的是目标检测常用的SSD算法。 该团队也提供了数据集,大家也可以自己去训练一下。 (由于疫情在家 连不上实验室的服务器我还无法训练) 项目GitHub链接
全栈程序员站长
2022/09/05
1.2K0
使用树莓派实现的口罩检测
「玩转树莓派」搭建智能家居远程监控系统
前几天,在食堂吃饭,本来每天中午的新闻三十分换成了视频监控。我们已经习惯了,前十分钟看着领导都很忙,中间十分钟中国人民都很幸福,后十分钟别的国家都生活在水深火热里,顺便跟同事谈谈国家大事。突然主角换成了我们自己,便毫无抬头的欲望。
小柒2012
2019/12/09
3.4K0
「玩转树莓派」搭建智能家居远程监控系统
树莓派入门(一)—— 树莓派4B介绍
树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,Eben·Upton/埃·厄普顿为项目带头人。2012年3月,英国剑桥大学埃本·阿普顿(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名”树莓派”。
全栈程序员站长
2022/08/12
22.4K0
树莓派入门(一)—— 树莓派4B介绍
树莓派4B安装64位系统 以及基础配置
(在写之前 Imager提示 会擦去sd的所有内容,那好像这个工具也就对sd进行了格式化,前面不需要先格式化也可以。而且Imager 里面提供了很多树莓派的系统可以在这里面下载 也可以提前下载好)
全栈程序员站长
2022/09/01
2.7K0
树莓派4B安装64位系统 以及基础配置
树莓派 USB摄像头 实现网络监控( MJPG-Streamer)
    上面的包源已经发生变化 可前往https://fivecc.coding.net/public/mjpg-streamer/mjpg-streamer/git 查看,
Fivecc
2022/11/21
3.2K0
树莓派 USB摄像头 实现网络监控( MJPG-Streamer)
树莓派控制摄像头_树莓派连接摄像头
树莓派外接摄像头,最常用的有两种:CSI摄像头、USB摄像头。当然网络摄像头也是可以的。
全栈程序员站长
2022/11/07
3.2K0
树莓派控制摄像头_树莓派连接摄像头
机器之心实操 | 亚马逊详解如何使用MXNet在树莓派上搭建实时目标识别系统
选自AWS 机器之心编译 参与:思源 在过去的五年中,深度神经网络已经解决了许多计算困难的问题,特别是计算机视觉。因为深度神经网络需要大量的计算力来训练模型,所以我们经常使用多块 GPU 或云端服务器进行分布式地训练。实际上,在深度神经网络模型经过训练后,它只需要相对较少的计算资源就能执行预测。这就意味着我们能将模型部署到低功耗的边缘设备中,并且在没有网络连接的情况下运行。 亚马逊的开源深度学习引擎 Apache MXNet 除了支持多 GPU 训练和部署复杂模型外,还可以生成非常轻量级的神经网络模型。我们
机器之心
2018/05/09
1.9K0
机器之心实操 | 亚马逊详解如何使用MXNet在树莓派上搭建实时目标识别系统
推荐阅读
相关推荐
树莓派 usb-jetson nano opencv 打开 CSI摄像头_树莓派(四)——摄像头
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档