Files
ai-security-xdr/haobang-security-dm/upgrade-doc/v4/config/01-new-environment-variables.md
T
王绍宏 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

56 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# v4 新增变量配置
配置文件:
```text
syslog-consumer-rule/docker-compose/docker-compose-consumer-rule-prod.yaml
```
在 `services.syslog-consumer-rule.environment` 中增加:
```yaml
# 前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按保留率自适应,配置及精细日志说明见 [吞吐补丁](./02-throughput-upgrade.md)。
关闭采样只需设置:
```yaml
- SYSLOG_BACKLOG_SAMPLING_ENABLED=false
```
InfluxDB 非阻塞旁路不受通用的 `SYSLOG_FAILURE_CONTINUITY_ENABLED` 开关控制:InfluxDB 写入失败始终记录并
放行,避免原文存储故障阻塞告警和后续 Kafka 消息。