You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

配置一体化WAZUH日志保留时长的技术咨询

配置一体化WAZUH日志保留时长的技术咨询

嘿,针对你这种没装Elastic/Kibana的WAZUH一体化部署,要设置40天的日志保留,主要得搞定两类日志:WAZUH自身的运行日志,还有告警日志。下面是我整理的实操步骤,都是实测有效的:

1. 用logrotate配置日志轮转与删除

WAZUH默认依赖Linux的logrotate工具管理日志文件,咱们直接修改它的配置就能控制保留时长:

  • 首先打开WAZUH的logrotate配置文件,一般路径是:
    sudo nano /etc/logrotate.d/wazuh
    
  • 把文件里的轮转规则改成40天保留的版本,参考配置如下:
    /var/ossec/logs/*.log /var/ossec/logs/alerts/*.log {
        daily          # 每天轮转一次日志文件
        rotate 40      # 保留40个轮转后的文件(对应40天)
        compress       # 压缩旧日志节省空间
        delaycompress  # 延迟压缩,避免影响当前日志写入
        missingok      # 日志文件不存在时不报错
        notifempty     # 空日志文件不轮转
        create 0640 root wazuh  # 新建日志文件的权限与归属
        sharedscripts
        postrotate
            # 轮转后重启WAZUH服务让配置生效
            /var/ossec/bin/ossec-control restart > /dev/null 2>&1 || true
        endscript
    }
    
    注意:如果你的日志轮转频率不是daily(比如原来的是weekly),要调整rotate的数值——比如每周轮转的话,rotate 6就能保留42天,和40天的需求接近。
  • 保存退出后,可以手动测试一下配置是否正常:
    sudo logrotate -v /etc/logrotate.d/wazuh
    

2. 数据库告警记录的清理(如果用了WAZUH数据库)

如果你部署时配置了PostgreSQL来存储WAZUH告警(而不是纯文件存储),还得给数据库加个定时清理任务:

  • 先写一个SQL清理脚本,比如/opt/wazuh_clean_old_alerts.sql,内容如下:
    DELETE FROM alerts WHERE timestamp < NOW() - INTERVAL '40 days';
    
  • 创建定时任务,每天凌晨低峰期执行清理:
    运行sudo crontab -e打开定时任务编辑器,添加一行:
    0 2 * * * psql -U wazuh -d wazuh -f /opt/wazuh_clean_old_alerts.sql > /dev/null 2>&1
    
    这行命令会每天凌晨2点自动删除40天以前的告警记录,避免数据库膨胀。

3. 验证配置是否生效

  • 查看logrotate的状态,确认规则已经应用:
    sudo logrotate -status
    
  • 检查日志目录,看看超过40天的日志是否被自动删除:
    find /var/ossec/logs/ -type f -mtime +40
    
    如果配置生效,这条命令应该不会返回任何结果(说明没有超过40天的日志文件)。

备注:内容来源于stack exchange,提问作者SSD

火山引擎 最新活动