首页/云/可观测性速查/Filebeat 注册表与文件状态
日志平台52 条

Filebeat 注册表与文件状态

注册表记录每个文件的读取偏移,是“重启后从哪里继续”的依据;轮转、inode 复用、清理策略都围绕它工作。

可观测性速查云更新于 2026-10-13

注册表是干什么的

Filebeat 用注册表记录每个被监控文件的读取偏移,是“重启后从哪里继续”的依据。采集器状态、文件轮转、inode 复用与清理策略都围绕这张表工作,理解它才能解释重启后重复采集、漏采或状态文件持续膨胀这类问题。

基本信息

默认位置data/registry,容器部署时要落在持久卷上
记录内容文件路径、inode、读取偏移与最近更新时间
相关配置filebeat.registry.path、ignore_older、clean_removed
生效方式重启采集器后按注册表恢复各文件的读取位置

状态与清理配置

状态与清理配置
# 注册表位置(默认 data/registry)
filebeat.registry.path: /var/lib/filebeat/registry

# 长期不更新的文件停止监控
ignore_older: 168h

# 已删除文件的旧状态自动清理(默认 true)
clean_removed: true

# 容器部署:把注册表目录挂到持久卷
# docker run -v /data/filebeat:/usr/share/filebeat/data ...

关键配置

配置作用注意点
registry.path指定注册表存放目录容器重建未挂卷会丢失状态
ignore_older超过该时间未更新的文件不再采集设置过小会让历史文件被跳过
clean_removed清理已删除文件的状态记录默认开启,长期不用要排查膨胀
harvester_limit限制同时读取的文件数文件数量大时防止句柄耗尽

典型使用场景

  • 采集器重启后从上次偏移继续,避免日志重复或漏采
  • 排查重启后重复采集:确认注册表是否被清空或路径发生改变
  • 容器化部署时把状态目录挂到持久卷,保证升级不丢状态
  • 文件数量巨大时清理无效状态,控制注册表文件体积
持久化目录不可放在临时空间:注册表丢失会导致全量重采或漏采,容器场景尤其要确认挂载路径在重建后仍然存在。
copytruncate 式轮转存在竞态窗口可能丢行,条件允许时优先用 rename 式轮转,让采集器跟随文件句柄继续读取。

排查要点

  • 重启后日志重复,先确认注册表目录是否被清空或换到了新路径
  • 出现漏采时对比文件实际大小与注册表记录的偏移,判断是否被跳过
  • 状态文件持续变大说明存在大量历史或已删除文件的记录,检查清理配置

易错点

  • copytruncate 式轮转存在竞态窗口可能丢行,条件允许优先用 rename 式轮转
  • inode 被系统复用后旧状态可能匹配到新文件,出现漏采时结合注册表状态排查
  • 注册表放在容器临时层,重建后状态全丢,日志被重复推送一遍
  • ignore_older 设置过小,重启后历史文件直接跳过造成漏采

数据来源与参考

  • Elastic 官方文档 · Registry file
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌