Files
ai-security-xdr/haobang-security-dm/upgrade-doc/v4/config/01-new-environment-variables.md
王绍宏 8173c2ff3f perf(syslog): 统计异步化并按采样保留率自适应调整业务批量
- 入口统计改用独立 Kafka 消费组,移除主消费同步统计写库
- DIRECT 模式入库计数改为事务提交后异步投递,取消事实事务内统计 Outbox 写入
- 采样审计、告警分钟桶通知改为后台处理,异常不阻断主消费或回滚告警
- RAW 基础业务批量默认 500,按保留率动态扩大,上限 3000
- 限制业务块字节数及规则任务数量,保留告警全量处理和整次 poll 完成后提交
- 细化 SLOW_SYSLOG_BATCH,补充批次关联、线程排队、数据库执行及提交耗时
- 更新 v4 升级说明,明确异步统计损失风险及现场验证方法

验证:JDK 8 构建成功,232 项测试通过。
升级:复用现有表和 Kafka Topic,无新增建表或建 Topic 脚本要求。
2026-09-13 06:11:12 +08:00

2.8 KiB
Raw Permalink Blame History

v4 新增变量配置

配置文件:

syslog-consumer-rule/docker-compose/docker-compose-consumer-rule-prod.yaml

在 services.syslog-consumer-rule.environment 中增加:

      # 前15分钟全量保留,之后到1小时之间分10级降低保留率;告警始终全量保留。
      - SYSLOG_BACKLOG_SAMPLING_ENABLED=true
      - SYSLOG_BACKLOG_SAMPLING_START_LAG_MS=900000
      - SYSLOG_BACKLOG_SAMPLING_LAG_THRESHOLD_MS=3600000
      - SYSLOG_BACKLOG_SAMPLING_NORMAL_RETAIN_BPS=1000
      - SYSLOG_BACKLOG_SAMPLING_NON_NORMAL_RETAIN_BPS=2000
      - SYSLOG_BACKLOG_SAMPLING_DEGRADE_STEPS=10
      - SYSLOG_BACKLOG_SAMPLING_POLICY_VERSION=v2

      # 最新吞吐补丁:小时审计在后台独立事务执行;失败后60秒跳过新审计,不取消采样。
      - SYSLOG_BACKLOG_SAMPLING_AUDIT_TIMEOUT_SECONDS=5
      - SYSLOG_BACKLOG_SAMPLING_AUDIT_RETRY_BACKOFF_MS=60000

      # InfluxDB 原文写入失败时快速返回并继续主消费。
      - INFLUXDB_RAW_WRITE_REQUEST_TIMEOUT=5s
      - INFLUXDB_RAW_FAILURE_BACKOFF_MS=30000

其中:

  • NORMAL_RETAIN_BPS 和 NON_NORMAL_RETAIN_BPS 是达到延迟阈值后的最低保留万分比;1000 表示 10%, 2000 表示 20%;
  • START_LAG_MS=900000 是15分钟免采样窗口,该时间内普通、非标及原文全部保留;
  • LAG_THRESHOLD_MS=3600000 是达到最低保留率的时间;扣除15分钟后,剩余45分钟由10级平均分配, 每级4.5分钟;
  • START_LAG_MS 必须大于等于0并且小于 LAG_THRESHOLD_MS,配置非法时应用拒绝启动;
  • 修改起始延迟、结束阈值、最低保留率或级数时,必须同时修改 POLICY_VERSION,以便审计区分策略;
  • AUDIT_TIMEOUT_SECONDS 是后台单次达梦审计事务超时;审计失败记录损失,业务仍按采样比例处理;
  • INFLUXDB_RAW_WRITE_REQUEST_TIMEOUT 是连接、写入、读取各网络阶段的上限,不是整个批次的总超时;
  • INFLUXDB_RAW_FAILURE_BACKOFF_MS 是确认 InfluxDB 依赖故障后的快速跳过时间。

这些默认值已经写在 JAR 的 application.properties 中。现场只替换 JAR 时同样会默认开启采样;显式写入 Compose 是为了便于后续核查和调整。启动新 JAR 前必须先创建 SYSLOG_BACKLOG_RETENTION_HOURLY,否则审计会持续失败、丢失统计,但不会取消采样或阻止业务消费。 最新普通RAW底层poll上限3000、业务基础500按保留率自适应,配置及精细日志说明见 吞吐补丁。

关闭采样只需设置:

      - SYSLOG_BACKLOG_SAMPLING_ENABLED=false

InfluxDB 非阻塞旁路不受通用的 SYSLOG_FAILURE_CONTINUITY_ENABLED 开关控制:InfluxDB 写入失败始终记录并 放行,避免原文存储故障阻塞告警和后续 Kafka 消息。