常规队列参数
用法
队列参数可与以下语句一起使用:
- 行动()
- 规则集()
- main_queue()
需要在应该影响的操作或规则集中配置队列。如果未配置任何内容,则将使用默认值。因此,默认规则集仅具有默认主队列。默认情况下不设置特定操作队列。
要完全了解队列参数及其交互方式,请务必阅读队列文档。
配置参数
注意
与其他配置对象一样,此对象的参数不区分大小写。
queue.filename
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
字 | 没有 | 没有 | $ActionQueueFileName |
用于队列文件的文件名。如果指定,则此参数启用磁盘辅助队列功能。如果未指定,则队列将在不将队列保存到磁盘的情况下运行,无论是在操作期间还是在关闭时。请参阅separate queue.saveonshutdown
参数以配置该选项。请注意,这实际上只是文件名。无法在此参数中指定目录。如果要在特定目录中创建文件queue.spoolDirectory
,请为此指定。文件名用于构建以完成队列文件的路径。
queue.spoolDirectory
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
字 | 没有 | 没有 | 没有 |
这是将存储队列文件的目录。请注意,该目录必须存在,它不是由rsyslog自动创建的。如果未指定spoolDirectory,则使用工作目录。
queue.size
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 50000分之1000 | 没有 | $ActionQueueSize |
这是队列中消息数量的最大大小。请注意,不支持将队列大小设置为非常小的值(大致低于100条消息),并且可能导致不可预测的结果。有关此限制的当前状态的更多信息,请参阅rsyslog常见问题解答:“队列大小的下限”。
默认值取决于队列类型和rsyslog版本,如果需要特定值,请指定它。否则rsyslog会选择适合所讨论版本的内容。例如,在rsyslog rsyslog 8.30.0中,规则集队列的默认大小为50000,而配置为非直接的操作队列的大小为1000。
queue.dequeueBatchSize
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 128/1024 | 没有 | $ActionQueueDequeueBatchSize |
指定出列操作的最大批量大小。此设置会影响性能。根据经验,较大的批量(最大环境诱导的上限)可提供更好的性能。对于普通系统,通常不需要调整批量大小,因为默认值足够。规则集队列的默认值为1024,对于操作队列128。
请注意,这仅指定最大批量大小。如果rsyslog在出队时队列中没有尽可能多的消息,则批量将会变慢。如果要设置最小批量大小,可以使用queue.minDequeueBatchSize。
queue.minDequeueBatchSize
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 0 | 没有 | 没有 |
指定出列操作的最小批量大小。此设置对于ElasticSearch或ClickHouse等输出特别有用,您可以在其中限制HTTP请求的数量。使用此设置,当当前排队的消息较少时,队列引擎会等待 queue.minDequeueBatchSize.timeout毫秒。请注意,最小批量大小不能大于配置的最大批量大小。如果是,则会自动调整以匹配最大值。因此,如果有疑问,您需要指定两个参数。
queue.minDequeueBatchSize.timeout
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 1000 | 没有 | 没有 |
此参数仅在与queue.minDequeueBatchSize一起使用时才有意义,否则将被忽略。它指定rsyslogs等待新消息的时间(以毫秒为单位),以便可以达到最小批量大小。在此期间之后,即使批次低于最小尺寸,也会处理批次。此功能的存在是为了防止消息在不完整的批处理中停滞,因为没有新消息到达。我们希望将它设置为高于60.000(60秒)通常没有意义,但这是允许的。请注意,这可能会延迟日志处理的时间。
queue.maxDiskSpace
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 0 | 没有 | $ActionQueueMaxDiskSpace |
所有队列文件一起在磁盘上使用的最大大小。请注意,实际大小可能略大于配置的max,因为rsyslog从不写入部分队列记录。
queue.highWatermark
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | queue.size的90% | 没有 | $ActionQueueHighWaterMark |
这仅适用于磁盘辅助队列。当队列填满此数量的消息时,队列开始将消息脱机到磁盘。请注意,这不应该将这作为常规处理,因为磁盘队列模式比内存中队列模式慢得多。对于输出操作目标在某段时间内处于脱机状态的情况,应保留转到磁盘。
queue.lowWatermark
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | queue.size的70% | 没有 | $ActionQueueLowWaterMark |
这仅适用于磁盘辅助队列。达到高水位线时,队列会将数据写入磁盘。它一直这样做,直到达到低水位,然后队列恢复到内存模式。
queue.fullDelaymark
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 97%的queue.size | 没有 | 没有 |
队列应阻止可延迟消息时的消息数。消息不再处理,直到队列再次有足够的空间。如果消息可延迟取决于输入。例如,通过imtcp接收的消息是可延迟的(因为TCP可以推回),但是通过imudp接收的消息不是(因为UDP不允许回推)。此设置背后的意图是在几乎完整的队列中留出一些空间用于不可延迟的消息,如果队列空间不足,这些消息将丢失。请注意,如果您使用DA队列,将highdelaymark设置为低于高水位线,则队列永远不会激活磁盘模式以进行可延迟输入。所以这可能不是你想要的。
queue.lightDelaymark
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | queue.size的70% | 没有 | 没有 |
如果达到此标记,则发送方将受到限制(如果可能)。
queue.discardMark
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | queue.size的80% | 没有 | $ActionQueueDiscardMark |
指定rsyslog开始丢弃不太重要的消息的阈值。要定义应丢弃哪些消息,请使用queue.discardseverity参数。
queue.discardSeverity
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 8 | 没有 | $ActionQueueDiscardSeverity |
一旦达到参数queue.discardMark的阈值,就会删除优先级等于或低于指定值的排队消息。默认情况下,不会删除任何消息。您必须为此参数指定数字严重性值。
queue.checkpointInterval
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 0 | 没有 | $ActionQueueCheckpointInterval |
默认情况下,磁盘队列不会在每次队列写入磁盘时更新内务处理结构。这是出于性能原因。如果发生故障,数据仍将丢失(除非数据通过文件结构损坏)。但是,可以将磁盘队列设置为在检查点(每n个记录)上写入簿记信息,这样也可以使其更加可靠。如果检查点间隔设置为1,则不会丢失任何数据,但队列异常缓慢。
queue.syncqueuefiles
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
二进制 | 离 | 没有 | $ActionQueueSyncQueueFiles |
通过在每次写入操作之后发出(f)同步,可以使基于磁盘的队列非常可靠。将参数设置为“on”时会发生这种情况。激活此选项会降低性能,因此不应在没有充分理由的情况下启用它。请注意,惩罚还取决于queue.checkpointInterval频率。
queue.samplingInterval
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 0 | 没有 | 没有 |
版本8.23.0中的新功能。
此选项允许队列由特定时间间隔生成的事件填充。它提供了一种方法来为每个N个事件采样数据,而不是全部处理,以减少资源使用(磁盘,带宽...)
queue.type
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
字 | 直接 | 没有 | $ActionQueueType |
指定将使用的队列类型。可能的选项是“FixedArray”,“LinkedList”,“Direct”或“Disk”。有关更多信息,请阅读队列文档。
queue.workerThreads
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 1 | 没有 | $ActionQueueWorkerThreads |
指定可以并行运行的最大工作线程数。
queue.workerThreadMinimumMessages
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | queue.size / queue.workerthreads | 没有 | $ActionQueueWorkerThreadMinimumMessages |
指定在创建另一个工作线程之前工作线程正在处理的消息数。此数字受参数queue.workerThreads的限制。例如,如果此参数设置为200,并且队列中有201条消息,则将创建第二个工作线程。
queue.timeoutWorkerthreadShutdown
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 60000 | 没有 | $ActionQueueTimeoutWorkerthreadShutdown |
启动工作线程后,它将处理消息,直到没有消息供他处理。此参数指定工作线程在超时之前必须处于非活动状态的时间。必须以毫秒为单位指定参数。这意味着默认值60000是1分钟。
queue.timeoutshutdown
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 一千五分之十 | 没有 | $ActionQueueTimeoutShutdown |
如果仍然包含消息的队列终止,它将等待指定的工作线程完成时间间隔。时间以毫秒为单位指定(1000毫秒为1秒)。操作队列的默认值为10,对于规则集队列,它为1500。
queue.timeoutActionCompletion
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 1000 | 没有 | $ActionQueueTimeoutActionCompletion |
当队列终止时,超时关闭结束并且队列中仍有数据,队列将完成当前数据元素然后终止。此参数指定处理此最后一个元素的超时。参数以毫秒为单位指定(1000毫秒为1秒)。
queue.timeoutEnqueue
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 2000 | 没有 | $ActionQueueTimeoutEnqueue |
队列已满时使用此超时值。如果rsyslog无法在超时期限内将消息入队,则会丢弃该消息。请注意,这是最后的设置(假设默认值用于队列设置或设置了适当的参数):所有可延迟输入(如imtcp或imfile)已在此阶段被推回。此外,丢弃较低优先级的消息(如果已配置)已经发生。因此,如果我们没有足够快地超时,我们会遇到其中一种情况:
- 如果使用imuxsock并且不涉及系统日志,则系统将变得无响应并且很可能需要硬重置。
- 如果使用imuxsock与imjournal转发活动,消息将丢失,因为该期刊丢弃它们(比rsyslog更具攻击性)
- 如果使用imjournal,日志将缓冲消息。如果日志用完了已配置的空间,则将丢弃消息。所以在这种模式下,丢弃移动到稍后的位置。
- 像imudp这样的其他非延迟源也会松散消息
因此,提供此设置是为了防止出现问题的情况,这些情况总是会导致邮件丢失或系统挂起。对于动作队列,人们可能会争论是否最好快速溢出到主队列。如果需要,可以通过设置非常大的超时值来轻松实现。当然,对于主队列来说也是如此,但是如果你这样做,你就会收到警告!
换句话说,您可以使用默认值来考虑此方案。阻止所有进度(无法传递消息):
-
所有可延迟的输入(tcp,relp,imfile,imjournal等)将无限制地阻塞(假设queue.lightdelaymark和queue.fulldelaymark设置为合理的,默认情况下它们是默认的)。
-
imudp将丢失消息,因为操作系统将丢弃它们
-
通过UDP或imuxsock到达rsyslog的消息,并且这个严重程度高到不能被discardsever过滤,将阻塞2秒,试图将消息放入队列中(希望发生某些事情以便腾出空间)在队列中),然后被删除,以避免永久阻止机器。
然后,下一个要处理的消息也将被尝试2秒,等等。
-
如果这将进入操作队列,则日志消息将在这2秒内保留在主队列中,并且到达的其他日志将在主队列中的后面累积。
queue.maxFileSize
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 1M /16米 | 没有 | $ActionQueueMaxFileSize |
指定磁盘辅助队列文件的最大大小。参数可以用Mebibyte或Gibibyte表示,操作队列的默认值是1m,规则集队列的默认值是16m(1m = 1024 * 1024)。
queue.saveOnShutdown
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
二进制 | 离 | 没有 | $ActionQueueSaveOnShutdown |
此参数指定是否应在关闭时保存数据。
queue.dequeueSlowDown
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 0 | 没有 | $ActionQueueDequeueSlowDown |
规定应该延迟出列的时间。该值必须以微秒为单位指定(1000000us为1秒)。它可以用来减慢rsyslog的速度,因此它不会发送快速的东西。例如,如果在UDP发送操作中将此参数设置为10000,则该操作将无法每秒发出超过100条消息。
queue.dequeueTimeBegin
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 0 | 没有 | $ActionQueueDequeueTimeBegin |
使用此参数,您可以指定rsyslog以在特定时间段内处理队列。要定义时间范围,请使用24小时格式而不分钟。此参数指定begin和“queue.dequeuetimeend”结束时间范围。
queue.dequeueTimeEnd
类型 | 默认 | 强制性 | obsolete legacy 指示 |
---|---|---|---|
整数 | 25 | 没有 | $ActionQueueDequeueTimeEnd |
使用此参数,您可以指定rsyslog以在特定时间段内处理队列。要定义时间范围,请使用24小时格式而不分钟。此参数指定结束,“queue.dequeuetimebegin”指定时间范围的开始。默认值25禁用时间窗口。
示例
例
以下是具有自己队列的TCP转发操作示例。
action(type =“omfwd”target =“192.168.2.11”port =“10514”protocol =“tcp”
queue.filename =“forwarding”queue.size =“1000000”queue.type =“LinkedList”
)
也可以看看
帮助配置/使用Rsyslog
:
- 邮件列表 - 一般问题的最佳途径
- GitHub:rsyslog源项目 - 详细的问题,报告被认为是错误的问题
Rsyslog
- Stack Exchange(View,Ask) - 来自rsyslog社区的实验支持