概述
最近看了看 Filebeat 的官方文档, 把可优化的一些配置项整理了出来, 主要包括所采集文件的管理, 内存队列的配置, spool文件的配置等...
filebeat.inputs:
- type: log
# 检查文件更新的频率
# 默认是 10s
scan_frequency: 10s
# backoff 选项指定 Filebeat 如何积极地抓取新文件进行更新
# 默认1s
# backoff 选项定义 Filebeat 在达到 EOF 之后再次检查文件之间等待的时间
backoff: 1s
# 在达到 EOF 之后再次检查文件是否更新之前 Filebeat 等待的最长时间
max_backoff: 10s
# backoff_factor 定义了 backoff 的速度。backoff_factor 越大,max_backoff 值到达的速度越快。如果该值设置为1,则不会发生 backoff。
# backoff 值每次都会与 backoff_factor 相乘,直到达到 max_backoff 为止
backoff_factor: 2
# 启用此选项时,假设一个文件找不到了, 将立即关闭文件处理程序。假设文件稍后再次出现,则在 scan_frequency 后的最后一个已知位置继续采集。
close_removed: true
# 必须将 ignore_older 设置为大于 close_inactive. 因为你可以忽略之后再启用, 而不可以关闭 harvester 之后再启用
# 忽略过去 ignore_older 时间没有修改的文件
# 当需要查看最近一周内所产生的日志文件时, 可以配置 ignore_older: 168h
# 默认禁用 ( 设置为 0, , 没有文件被忽略 )
# 时间填写格式: 2h (2 hours), 5m (5 minutes)
ignore_older: 0
# 每个 harvester 在获取文件时使用的缓冲区的字节大小。默认值是16384。
harvester_buffer_size: 16384
# 关闭过去 close_inactive 时间非活动状态的文件的 harvester
# 判断依据是文件的最后一行是否更新, 而不是文件的最后修改时间
# 时间填写格式: 2h (2 hours), 5m (5 minutes)
close_inactive: 5m
# 并行开始的 harvesters 的最大数量, 默认是 0, 代表没有限制
harvester_limit: 0
# 不管 harvester 有没有完成读取文件, 在预定义时间之后关闭 harvester
# 虽然 close_timeout 将在 close_timeout 时间之后关闭文件的 harvester, 但是如果文件仍然在更新, Filebeat 将根据定义的 scan_frequency 再次启动一个新的 harvester , 这个 harvester 的 close_timeout 将会随着超时倒计时再次启动
# 默认情况下这个选项是禁用的
# 存在潜在的数据丢失
close_timeout: 0
# 在 clean_inactive 时间之后, 从注册表文件中删除先前收获的文件的状态
# clean_inactive设置必须大于ignore_older + scan_frequency
# 确保在仍然获取文件时没有删除任何状态
# 否则,设置可能导致Filebeat不断地重新发送完整的内容
# 因为clean_inactive删除了仍然被Filebeat检测到的文件的状态。如果文件被更新或再次出现,则从开始处读取该文件。
clean_inactive: 0
# 立即删除无法在磁盘上找到的文件的状态
clean_removed: true
# 用于发布缓冲事件的内部队列配置.
queue:
# 当输出准备好为另一批事件提供服务器时, 内存队列将向输出显示所有可用的事件 ( 直到输出 bulk_max_size )
# 内存队列将所有事件保存在内存中。
mem:
# 队列可以缓冲的最大事件数。
events: 4096# 发布所需事件的最小数量
# 如果将此值设置为0, 则输出可以开始发布事件, 而不需要额外的等待时间, 否则输出必须等待更多事件
flush.min_events: 2048# 当队列中存储的事件数小于 min_flush_events, 输出事件等待的最大持续时间是 flush.timeout
flush.timeout: 1s# 在将事件转发到输出之前, spool 队列将在本地 spool 文件中存储事件
# spool文件是一个循环缓冲区, 一旦文件/缓冲区满了, 它就会阻塞
# 一旦 write buffer 满了, 或者触发了flush_timeout, 事件被放入 write buffer 并 flush
# 一旦输出确认, 事件将立即从队列中移除, 从而为新事件的持久化腾出空间
spool:
# 一旦文件存在, `size`, `page_size` 和 `prealloc` 这些设置无效
file:
# spool文件的位置, 默认的位置是 ${path.data}/spool.dat
# spool文件路径, 如果文件不存在, 则在启动时创建
path: "${path.data}/spool.dat"# 文件的权限
# 权限在创建文件时应用
# 如果文件已经存在, 则将文件权限与 file.permissions 进行比较, 如果实际的文件权限比配置的更宽松, 则不会打开 spool 文件
permissions: 0600# 文件大小提示, 一旦达到这个极限, spool 阻塞
# 大小应该比预期的事件大小和写入缓冲区大小大得多。否则队列将阻塞,因为它没有足够的空间。
# 一旦生成文件,就不能更改文件大小。这个限制将在未来被取消。
size: 100MiB# 一个文件被分割成相同大小的多个页面
# 默认值是4KiB
# 此设置应与文件系统的最小块大小匹配, 如果page_size不是文件系统块大小的倍数, 则文件系统可能会在写操作时创建额外的读操作
# 页面大小只在文件创建时设置, 事后是无法改变的
page_size: 4KiB# 如果设置了预分配, 使用truncate保留文件所需的空间
# 默认值为true
# 如果 prealloc 设置为 true, 则使用 truncate 将空间保留到 file.size
# 此设置仅在创建文件时使用。
prealloc: true# 如果出现一下情况, 事件被序列化到写缓冲区中并被刷新
# - 已达到缓冲极限
# - 已达到缓冲事件的配置限制
# - 触发了刷新超时
write:
# 设置 write buffer 大小
buffer_size: 1MiB# 如果写缓冲区尚未满, 刷新事件的最大等待时间
# 默认值是 1s
flush.timeout: 1s# 最大缓冲事件数。一旦达到限制,写缓冲区就会被刷新。
flush.events: 16384# 用于序列化事件的事件编码
# 有效的编码有: json, ubjson 和 cbor
codec: cbor
read:
# 如果 flush_timeout 为 0, 则立即将所有可用事件转发到输出
# 默认是 0s
flush.timeout: 0s# 设置可以同时执行的最大CPU数。默认值为系统中可用的逻辑CPU的数量。
max_procs:
最后
以上就是如意香氛为你收集整理的FIlebeat 的可优化配置整理的全部内容,希望文章能够帮你解决FIlebeat 的可优化配置整理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复