文章目录
在 Filebeat 的配置优化过程中,以下各项参数的合理设置对其性能和功能有着关键影响:
一、输入配置(filebeat.inputs)
(一)文件扫描与回退机制
- 扫描频率(scan_frequency):
此参数用于确定检查文件更新的频率,其默认值设定为 10 秒。通过合理调整该值,可以在资源利用与文件更新及时性之间找到平衡。例如,若日志文件更新较为频繁,可适当缩短扫描频率,以便更迅速地捕获新日志内容;反之,若文件更新缓慢,适当延长扫描频率可降低系统资源的消耗。 - 回退设置(backoff、max_backoff、backoff_factor):
- 回退时间(backoff):默认时长为 1 秒,它定义了 Filebeat 在达到文件末尾(EOF)之后再次检查文件之间等待的时间。
- 最大回退时间(max_backoff):其默认值为 10 秒,代表在达到 EOF 之后再次检查文件是否更新之前 Filebeat 等待的最长时间。
- 回退因子(backoff_factor):该因子定义了回退的速度。其值越大,max_backoff 值到达的速度越快。当设置为 1 时,则不会发生回退现象。具体而言,backoff 值每次都会与 backoff_factor 相乘,直至达到 max_backoff 为止。这种回退机制有助于在处理文件更新时,避免过于频繁地检查文件,减少系统资源的不必要消耗,同时又能确保在合理时间内及时发现文件的再次更新。
(二)文件处理与关闭策略
- 关闭已移除文件(close_removed):当启用此选项时,若一个文件找不到了,Filebeat 将立即关闭该文件的处理程序。并且,若文件稍后再次出现,则会在 scan_frequency 后的最后一个已知位置继续进行采集工作。这一设置能够有效地应对文件的临时缺失或移动情况,确保采集过程的连续性和高效性。
- 忽略旧文件(ignore_older):此参数用于忽略过去在指定时间内没有修改的文件。例如,当需要查看最近一周内所产生的日志文件时,可配置为 ignore_older: 168h。其默认设置为 0,即没有文件被忽略。需要注意的是,必须将 ignore_older 设置为大于 close_inactive,因为可以在忽略之后重新启用对文件的关注,而关闭 harvester 之后再启用可能会导致数据丢失或采集不完整的问题。
- 关闭非活动文件(close_inactive):该参数用于关闭过去在指定 close_inactive 时间内处于非活动状态的文件的 harvester。其判断依据是文件的最后一行是否更新,而非文件的最后修改时间。时间填写格式如 2h(2 小时)、5m(5 分钟)等,默认值为 5 分钟。合理设置此参数有助于及时释放系统资源,避免对长时间未更新文件的不必要监控。
- 并行 harvester 数量限制(harvester_limit):此参数用于设定并行开始的 harvesters 的最大数量,默认值为 0,代表没有限制。根据系统资源和实际需求,适当设置该值可以优化系统资源的分配,防止因过多的 harvester 并行运行而导致系统性能下降。
- 超时关闭 harvester(close_timeout):无论 harvester 有没有完成读取文件,在预定义时间之后关闭 harvester。虽然 close_timeout 将在指定时间之后关闭文件的 harvester,但如果文件仍然在更新,Filebeat 将根据定义的 scan_frequency 再次启动一个新的 harvester,且这个 harvester 的 close_timeout 将会随着超时倒计时再次启动。默认情况下该选项是禁用的,且启用此选项存在潜在的数据丢失风险,因此在使用时需要谨慎权衡。
- 清理非活动文件状态(clean_inactive):在 clean_inactive 时间之后,从注册表文件中删除先前收获的文件的状态。clean_inactive 设置必须大于 ignore_older + scan_frequency,以确保在仍然获取文件时没有删除任何状态,否则可能导致 Filebeat 不断地重新发送完整的内容,因为 clean_inactive 删除了仍然被 Filebeat 检测到的文件的状态,若文件被更新或再次出现,则从开始处读取该文件。其默认值为 0,即不进行清理操作。
- 清理已移除文件状态(clean_removed):此选项用于立即删除无法在磁盘上找到的文件的状态,有助于保持注册表文件的简洁性和准确性,避免因无效文件状态的累积而影响系统性能。
二、队列配置(queue)
(一)内存队列(mem)
- 事件缓冲数量(events):内存队列可以缓冲的最大事件数设置为 4096。这一数值决定了内存队列在将事件转发到输出之前能够暂存的事件规模,合理设置该值可平衡内存使用与事件处理效率。
- 最小刷新事件数(flush.min_events):该参数设定了发布所需事件的最小数量。若将此值设置为 0,则输出可以开始发布事件,而不需要额外的等待时间;否则输出必须等待更多事件。默认值为 2048,通过调整此值可以优化输出的及时性与数据传输的批量处理效率。
- 刷新超时时间(flush.timeout):当队列中存储的事件数小于 min_flush_events 时,输出事件等待的最大持续时间设定为 1 秒。这一设置有助于在保证一定数据量的同时,避免因等待时间过长而导致数据处理延迟。
(二)磁盘队列(spool)
-
文件存储设置(file):
- 文件路径(path):spool 文件的位置默认设定为 ${path.data}/spool.dat,若文件不存在,则在启动时创建。可根据实际存储需求和系统架构调整该路径,确保 spool 文件的存储位置合理且便于管理。
- 文件权限(permissions):文件的权限设置为 0600,该权限在创建文件时应用。若文件已经存在,则会将文件权限与 file.permissions 进行比较,若实际的文件权限比配置的更宽松,则不会打开 spool 文件。这一权限设置保障了 spool 文件的安全性和完整性。
- 文件大小(size):文件大小提示为 100MiB,一旦达到这个极限,spool 阻塞。其大小应该比预期的事件大小和写入缓冲区大小大得多,否则队列将阻塞,因为它没有足够的空间。需要注意的是,一旦生成文件,就不能更改文件大小,不过该限制在未来可能会被取消。
- 页面大小(page_size):一个文件被分割成相同大小的多个页面,默认值为 4KiB。此设置应与文件系统的最小块大小匹配,如果 page_size 不是文件系统块大小的倍数,则文件系统可能会在写操作时创建额外的读操作,且页面大小只在文件创建时设置,事后无法改变。
- 预分配设置(prealloc):若设置了预分配,则使用 truncate 保留文件所需的空间,默认值为 true。即若 prealloc 设置为 true,则使用 truncate 将空间保留到 file.size,此设置仅在创建文件时使用。
-
写入缓冲区设置(write):
- 缓冲区大小(buffer_size):设置 write buffer 大小为 1MiB,该缓冲区用于暂存待写入 spool 文件的事件,合理的缓冲区大小设置有助于平衡数据写入的效率和内存使用。
- 刷新超时时间(flush.timeout):如果写缓冲区尚未满,刷新事件的最大等待时间设定为 1 秒,默认值即为 1 秒。这一设置确保了事件能够在合理时间内被写入 spool 文件,避免因等待时间过长而导致数据积压或丢失。
- 最大缓冲事件数(flush.events):一旦达到该限制,写缓冲区就会被刷新,其默认值为 16384。通过调整该值,可以根据系统性能和数据流量情况优化写缓冲区的刷新策略。
- 事件编码(codec):用于序列化事件的事件编码设定为 cbor,有效的编码还有 json 和 ubjson。选择合适的编码方式有助于提高事件序列化和反序列化的效率,以及数据传输的稳定性。
-
读取设置(read)
若 flush_timeout 为 0,则立即将所有可用事件转发到输出,默认值为 0s。这一设置决定了从 spool 文件读取事件并转发到输出的及时性,可根据输出设备的处理能力和数据需求进行调整。
三、CPU 使用限制设置
设置可以同时执行的最大 CPU 数。其默认值为系统中可用的逻辑 CPU 的数量。根据系统的负载情况和其他应用程序对 CPU 的需求,合理调整该值可以确保 Filebeat 在运行过程中不会过度占用 CPU 资源,避免影响整个系统的性能和稳定性。
标签:指南,文件,Filebeat,harvester,spool,参数,事件,设置,默认值 From: https://blog.csdn.net/qq_40477248/article/details/144588345