二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Nexus系列文章

  • Jenkins系列文章

  • ELK笔记

    • ELK

    • FileBeat

      • Filebeat的Registry文件解读
        • Registry 文件
          • inode 相关知识
        • 重新从头读取日志
      • filebeat采集端配置文件详解
      • filebeat报错too many open files处理
    • LogStash

    • ElasticSearch

    • Kibana

  • Kubernetes笔记

  • LLM专题

  • 系列专题
  • ELK笔记
  • FileBeat
二丫讲梵
2020-06-06
目录

Filebeat的Registry文件解读

文章发布较早,内容可能过时,阅读注意甄别。

# Registry 文件

Filebeat 会将自己处理日志文件的进度信息写入到 registry 文件中,以保证 filebeat 在重启之后能够接着处理未处理过的数据,而无需从头开始。

registry 文件内容为一个 list,list 里的每个元素都是一个字典,字典的格式如下:

{
  "source": "/data/log/tmp.log",
  "offset": 585451484,
  "FileStateOS": {
    "inode": 75063792,
    "device": 64785
  },
  "timestamp": "2020-06-06T03:10:03.757645551+08:00",
  "ttl": 90000000000000
}
1
2
3
4
5
6
7
8
9
10

每个字段的意义解释:

  • source: 记录采集日志的完整路径
  • offset: 采集这个日志文件到了哪个位置,总采集字节数
  • inode: 日志文件的 inode 号,关于 inode 的详细解释看下文
  • device: 日志所在的磁盘编号,下文stat命令中 Device 的值
  • timestamp: 日志最后一次发生变化的时间戳
  • ttl: 采集失效时间,-1 表示永不失效

Filebeat 在每次启动时都会来读取这个文件,如果文件不存在则会创建新文件。

img

# inode 相关知识

硬盘格式化的时候,操作系统自动将硬盘分成了两个区域。

一个是数据区,用来存放文件的数据信息

一个是 inode 区,用来存放文件的元信息,比如文件的创建者、创建时间、文件大小等等

每一个文件都有对应的 inode,里边包含了与该文件有关的一些信息,可以用stat命令查看文件的 inode 信息

$ stat /data/log/tmp.log
  File: ‘/data/log/tmp.log’
  Size: 196901341   Blocks: 503040     IO Block: 4096   regular file
Device: fd11h/64785d    Inode: 71012560    Links: 1
Access: (0640/-rw-r-----)  Uid: (   80/     www)   Gid: (    0/    root)
Access: 2020-06-06 03:10:01.841178994 +0800
Modify: 2020-06-06 14:09:48.536169224 +0800
Change: 2020-06-06 14:09:48.536169224 +0800
 Birth: -
1
2
3
4
5
6
7
8
9

我们可能遇到过明明查看磁盘空间还充足,但无法创建新文件的问题,这时候可能就是因为磁盘的 inode 用完了,磁盘的 inode 可以通过命令df -i查看

# df -i
Filesystem        Inodes IUsed     IFree IUse% Mounted on
none           104855552 39836 104815716    1% /
tmpfs            1024703    16   1024687    1% /dev
tmpfs            1024703    10   1024693    1% /sys/fs/cgroup
/dev/vdc1      104855552 39836 104815716    1% /etc/hosts
1
2
3
4
5
6

每个 inode 都有一个号码,操作系统就是通过这个号码来识别不同文件的,这个号码就是 filebet 配置中的 inode,可以通过ls -i命令查看

$ ls -i /data/log/tmp.log
71012560 /data/log/tmp.log
1
2

可能你查看 registry 文件发现同名的 log 文件记录有很多条,造成这个的主要原因是你的 log 文件可能被重命名过,常见的场景例如 log4j 里边的每日生成一个日志文件,把老的日志文件重命名。

# 重新从头读取日志

有些情况下我们需要让 filebeat 重新从头读取日志,尤其是在调试的时候,有了上边的知识我们就很容易实现 filebeat 重新从头读取日志了,核心的思想就是干掉 registry 文件

  • 找到 registry 文件的位置,如果没有单独配置那么文件路径为/var/lib/filebeat/registry,不在也没关心,可以直接 find 命令查找。

    # find / -name registry
    /var/lib/filebeat/registry
    
    1
    2
  • 关闭 filebeat –> 删掉 registry 文件 –> 启动 filebeat。

    /etc/init.d/filebeat stop &&\
    rm -r /var/lib/filebeat/registry &&\
    /etc/init.d/filebeat start
    
    1
    2
    3
  • 查看 registry 文件内容重新生成了数据。

微信 支付宝
#filebeat#elk
上次更新: 2024/07/04, 22:40:37
记一次日志突然写不进去了的处理
filebeat采集端配置文件详解

← 记一次日志突然写不进去了的处理 filebeat采集端配置文件详解→

最近更新
01
学习周刊-总第212期-2025年第21周
05-22
02
从赵心童世锦赛夺冠聊聊我的斯诺克情缘
05-16
03
学习周刊-总第211期-2025年第20周
05-15
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式