加载中

配置内部队列

Auditbeat 使用内部队列来存储事件,然后再发布它们。队列负责缓冲事件并将事件组合成批次,这些批次可以由输出端消费。输出端将使用批量操作在一个事务中发送一批事件。

您可以通过在 auditbeat.yml 配置文件的 queue 部分设置选项,或在输出的 queue 部分设置选项来配置内部队列的类型和行为。只能配置一种队列类型。

此示例配置将内存队列设置为最多缓冲 4096 个事件

queue.mem:
  events: 4096

内存队列将所有事件保存在内存中。

内存队列等待输出端确认或丢弃事件。如果队列已满,则不能向内存队列中插入新事件。只有在收到输出端的信号后,队列才会释放空间以接受更多事件。

内存队列由参数 flush.min_eventsflush.timeout 控制。flush.min_events 限制了单个批次中可以包含的事件数量,而 flush.timeout 指定了队列等待完全填充事件请求的时间。如果输出端支持 bulk_max_size 参数,则最大批次大小将是 bulk_max_sizeflush.min_events 中较小的一个。

flush.min_events 是一个旧参数,新配置应优先使用 bulk_max_size 控制批次大小。自 8.13 版起,使用 flush.min_events 而不是 bulk_max_size 限制批次大小不会带来性能优势。

在同步模式下,一旦有事件可用,事件请求就会立即得到满足,即使事件数量不足以填满请求的批次。这在必须最小化延迟时非常有用。要使用同步模式,请将 flush.timeout 设置为 0。

为了向后兼容,也可以通过将 flush.min_events 设置为 0 或 1 来激活同步模式。在这种情况下,批次大小将上限为队列容量的 1/2。

在异步模式下,事件请求将等待最多指定的超时时间,以尝试完全填满请求的批次。如果超时时间到期,队列将返回包含所有可用事件的部分批次。要使用异步模式,请将 flush.timeout 设置为正时长,例如 5s

此示例配置在有足够事件填充输出请求时(通常由 bulk_max_size 控制,且由 flush.min_events 限制最多 512 个事件),或者当事件已等待 5 秒但未填满请求大小时,将事件转发到输出端

queue.mem:
  events: 4096
  flush.min_events: 512
  flush.timeout: 5s

您可以在 auditbeat.yml 配置文件的 queue.mem 部分指定以下选项

队列可以存储的事件数量。

默认值为 3200 个事件。

如果大于 1,指定每个批次的最大事件数量。在这种情况下,输出端必须等待队列累积到请求数量的事件或等待 flush.timeout 到期后才能发布。

如果为 0 或 1,则将每个批次的最大事件数量设置为队列大小的一半,并将队列设置为同步模式(相当于 flush.timeout 为 0)。

默认值为 1600。

等待输出端的事件请求得到满足的最大等待时间。如果设置为 0s,事件将立即返回。

默认值为 10s。

磁盘队列将待处理事件存储在磁盘而不是主内存中。这使得 Beats 可以比内存队列排队更多事件,并在 Beats 或设备重新启动时保存事件。这种可靠性的提高会带来性能上的权衡,因为每个传入事件都必须写入和读取设备的磁盘。但是,对于磁盘不是主要瓶颈的设置,磁盘队列提供了一种简单且开销相对较低的方法来为传入事件数据增加一层健壮性。

要启用默认设置的磁盘队列,请指定最大大小

queue.disk:
  max_size: 10GB

队列将在磁盘上使用不超过指定的最大大小。它只会使用所需的空间。例如,如果队列只存储 1GB 的事件,那么无论最大大小是多少,它在磁盘上只会占用 1GB。队列数据在成功发送到输出端后会从磁盘中删除。

您可以在 auditbeat.yml 配置文件的 queue.disk 部分指定以下选项

磁盘队列应存储其数据文件的目录路径。如果目录不存在,将在启动时创建。

默认值为 "${path.data}/diskqueue"

队列应在磁盘上使用的最大大小。超过此最大值的事件将暂停其输入或被丢弃,具体取决于输入的配置。

值为 0 表示不强制执行最大大小限制,队列可以增长到磁盘上的可用空间量。应谨慎使用此值,因为完全填满系统主磁盘可能导致系统无法运行。最好仅在不会干扰 Auditbeat 或主机系统其余部分的专用数据或备份分区上使用此设置。

默认值为 10GB

添加到队列的数据存储在分段文件中。每个分段包含一些等待发送到输出端的事件,并在其所有事件发送后删除。默认情况下,分段大小限制为最大队列大小的 1/10。使用较小的大小意味着队列将使用更多数据文件,但它们在使用后会更快被删除。使用较大大小意味着某些数据需要更长时间才能删除,但队列将使用较少辅助文件。通常保持此值不变即可。

默认值为 max_size / 10

在等待输出端请求事件时,应从磁盘读取到内存的事件数量。如果您发现输出端因无法一次读取大量事件而变慢,向上调整此设置可能会有所帮助,但会增加内存使用量。

默认值为 512

队列应接受并存储在内存中等待写入磁盘的事件数量。如果您发现队列因事件等待写入磁盘时间过长而导致内存使用过高,向下调整此设置可能会有所帮助,但会降低事件吞吐量。另一方面,如果输入端因事件生成速度快于磁盘处理速度而等待或丢弃事件,向上调整此设置可能会有所帮助,但会增加内存使用量。

默认值为 2048

某些磁盘错误可能会阻止队列运行,例如写入数据目录时的权限错误,或写入事件时的磁盘空间不足错误。在这种情况下,队列会报告错误,并在暂停 retry_interval 指定的时间后重试。

默认值为 1s(一秒)。

当连续发生多个写入磁盘错误时,队列会将重试间隔按 2 的因子增加,直到达到 max_retry_interval 的最大值。如果您担心记录过多错误,或者目标磁盘长时间不可用导致主机系统过载,请增加此值。

默认值为 30s(三十秒)。

© . All rights reserved.