Files
ai-security-xdr/haobang-security-dm/upgrade-doc/v6/README.md
T
王绍宏 d7fcbdde92 feat(syslog-serve): 优化微步5秒窗口与5万条日志采集
- 将 API 拉取任务的 lookbackSeconds 通用默认值调整为 0
- 微步任务采用5秒时间窗口、50000条单窗口上限和64MiB响应保护
- 将微步适配器及管理接口的 pageSize 上限放宽至50000
- 将 API 调度扫描默认周期调整为1000毫秒
- 兼容新旧调度扫描环境变量名称
- 更新达梦数据库 PAGE_SIZE 约束及 LOOKBACK_SECONDS 默认值
- 补充 v6 数据库预检、升级和验证脚本
- 更新微步任务模板、现场操作说明和启动版本标识
- 增加配置边界及启动参数自动化测试

验证:
- JDK 8 Maven测试通过:167个,失败0,错误0,跳过2
- git diff --check通过
2026-09-17 23:15:15 +08:00

79 lines
4.1 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.
# v6 设备级采集模式增量升级说明
## 默认采集总开关
新版默认同时开启 Syslog 服务和设备 API 拉取调度:
```text
SYSLOG_SERVER_ENABLED=true
DEVICE_API_ENABLED=true
```
`DEVICE_DEVICE.COLLECTION_MODE` 默认 `BOTH`,因此既有设备升级后同时允许 Syslog 和 API。具体 API
任务仍需完成校验并通过 `resume` 启用;全局开关为 true 不会自动启动暂停任务。
## 必须执行的数据库脚本
新版 `syslog-serve` 会直接查询 `device_device.collection_mode`。因此必须在启动新版 JAR 前,由 DBA 使用 `syslog-serve` 实际连接的 Schema 按顺序执行:
```text
database/01-device-collection-mode-precheck.sql
database/02-device-collection-mode-upgrade.sql
database/03-device-collection-mode-verify.sql
```
执行规则:
1. 先备份 `DEVICE_DEVICE`,保存预检结果。
2. `01` 中字段和约束查询首次升级时必须返回 0 行。
3. `02` 只能成功执行一次;中途报错时不要整份重跑,应先检查已落库对象。
4. `03` 必须确认字段为 `VARCHAR2(16) DEFAULT 'BOTH' NOT NULL`、约束已启用、非法数据数为 0。
5. `03` 验证完成后即可启动新版 JAR。先配置下游微步 API JSON 泛化规则,再写入微步凭据、创建并验证 `WEIBU_LOG` 新任务;确认规则已关联设备后才能恢复任务并设置具体设备模式。
默认 `BOTH` 用于兼容现有设备;升级 SQL 不硬编码任何设备 ID。
API 拉取任务的通用 `LOOKBACK_SECONDS` 默认值同时由 `300` 调整为 `0`。升级只修改数据库列默认值,
不会批量更新已有任务;确实需要迟到补偿的任务继续保留或显式配置正数。
数据库 `PAGE_SIZE` 检查约束上限由 `10000` 放宽为 `50000`,用于微步 5 秒窗口;其他适配器仍执行
各自更严格的 Java 配置校验。已有任务值不会被升级脚本修改。
## API 拉取任务的探针归属
新版调度器只扫描满足以下条件的设备任务:
```text
DEVICE_DEVICE.DEVICE_COLLECT_ID = 当前节点 APP_SERVICE_DEVICE_COLLECT_ID
```
取得数据库租约时会再次检查该归属关系。设备迁移到其他探针后,原节点不会执行 HTTP 请求,
也不会推进该任务的 `NEXT_RUN_AT`。同一探针的多个同版本副本可以同时开启
`DEVICE_API_ENABLED=true`,再由数据库租约保证同一任务只有一个实例执行。混合版本升级期间,
旧节点仍建议保持 `DEVICE_API_ENABLED=false`。
本次 v6 新增字段只有 `DEVICE_DEVICE.COLLECTION_MODE`;另外将既有
`DEVICE_COLLECT_API_CONFIG.LOOKBACK_SECONDS` 的列默认值调整为 `0`,不新增 API 拉取表、不修改已有任务值。
微步 API 复用现有 `DEVICE_COLLECT_API_*` 基础表。新版微步适配器只支持
`WEIBU_LOG`(`/api/v1/log/searchBySql`);开发阶段的 `WEIBU_INCIDENT` 从未作为现场版本发布,因此不需要现场数据迁移脚本。
## 现场设置示例
```bash
docker exec syslog-serve-dm curl -fsS -X PUT \
'http://127.0.0.1:8189/syslogserve/api/devices/40/collection-mode' \
-H 'Content-Type: application/json' \
-d '{"collectionMode":"API_ONLY"}'
docker exec syslog-serve-dm curl -fsS \
'http://127.0.0.1:8189/syslogserve/api/devices/40'
```
GET 响应必须包含 `"collectionMode":"API_ONLY"`。设置后,设备 40 的微步 API 拉取任务继续运行,IP `10.56.171.164` 的 TCP/UDP Syslog 不得进入 WAL。
多实例部署时,收到 PUT 请求的实例立即清理三层缓存并刷新入站快照;其他实例最迟在现有设备快照 TTL 后生效。
微步凭据与任务、设备 `API_ONLY`、缓存清理、验收和回退已合并为一份现场手册:
- [api/README.md](./api/README.md)
按现场要求,[api/weibu-40-credential.json](./api/weibu-40-credential.json) 已填写设备 40 的真实微步 ApiKey/Secret;[api/weibu-40-task.json](./api/weibu-40-task.json) 已填写设备、地址和拉取参数,首次采集时间由现场命令生成。凭据文件包含明文生产秘密,必须限制整个 v6 目录的权限和分发范围;禁止把文件内容复制到工单、聊天或执行日志。