我是靠谱客的博主 如意香氛,最近开发中收集的这篇文章主要介绍FIlebeat 的可优化配置整理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近看了看 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 的可优化配置整理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部