调优 auditd 的 flush 参数需按场景选模式:none(仅调试)、incremental(最安全但性能差)、incremental_async(默认推荐,配合 freq 批量刷盘);再协同 freq 限流、audispd 分流、磁盘保护机制实现高可靠与低延迟平衡。

调优 auditd 的 flush 参数,核心是控制日志从内核缓冲区写入磁盘的节奏——太快会拖垮高并发下的 syscall 延迟,太慢则面临系统崩溃时丢失关键审计事件的风险。关键不在于“全同步”或“全异步”,而在于按场景选对 flush 模式,并配合限流、分流与落盘策略协同生效。
理解 flush 的三种模式及其适用场景
auditd 的 flush 参数在 /etc/audit/auditd.conf 中配置,取值为 NONE、INCREMENTAL、INCREMENTAL_ASYNC 或 DATA(极少见):
- NONE:完全不主动刷盘,依赖内核 page cache 和最终 sync,崩溃时可能丢失大量日志;仅用于调试或临时测试
- INCREMENTAL:每次有新审计事件就触发一次 write + fsync,最安全但性能最差,高并发下 syscall 延迟飙升,不推荐
-
INCREMENTAL_ASYNC:默认推荐值。事件先写入内核缓冲区,再由 auditd 后台线程批量刷盘(受
freq和flush协同控制),兼顾延迟与可靠性
搭配 freq 与异步写入降低 IO 压力
单独改 flush 不够,必须和 freq(每秒最大日志条数)联动:
使用 OpenAI Codex CLI 处理编码任务。触发词:codex、code review、fix CI、refactor code、implement feature、coding agent、gpt-5-codex。Clawdbot 可将编码工作委托给 Codex CLI 作为子代理或直接工具。
- 设
flush = INCREMENTAL_ASYNC+freq = 50:auditd 每秒最多合并 50 条事件批量落盘,避免高频小 IO - 若业务审计密度极高(如每秒数千 execve),可将
freq提至 100~200,但需同步监控磁盘写入吞吐(iostat -x 1)是否持续超 70% - 启用
log_format = ENRICHED可提升日志可读性,但体积略增;若只做取证分析,保持RAW更省 IO
用 audispd 插件分流关键事件,减轻主路径压力
auditd 主流程负责接收和暂存事件,真正耗时的是落盘。把非核心日志导出到外部系统,能显著缓解本地刷盘负担:
- 禁用默认的
af_unix插件(它把所有事件写进本地文件),改用syslog插件转发高价值事件(如权限变更、sudo、ssh 登录)到远程 rsyslog 或 SIEM - 本地仅保留原始
RAW日志用于取证,通过ausearch按需回溯,不参与实时分析 - 注意:启用 syslog 转发后,
write_logs = yes仍需开启,确保原始日志不丢;disp_qos = lossy可防队列满时阻塞内核
设置磁盘保护机制防止日志撑爆系统
高并发下日志量不可控,必须前置兜底:
-
max_log_file = 50(单位 MB):单个日志文件超过 50MB 就轮转,避免单文件过大影响ausearch效率 -
num_logs = 5:最多保留 5 个历史日志文件,旧日志自动清理 -
admin_space_left = 50+admin_space_left_action = SUSPEND:磁盘剩余不足 50MB 时暂停写审计日志,保系统可用性 - 搭配
space_left_action = SYSLOG提前告警,给运维留出干预窗口










