- 按 DEVICE_DEVICE.DEVICE_COLLECT_ID 过滤 API 拉取任务 - 仅允许与 APP_SERVICE_DEVICE_COLLECT_ID 匹配的节点执行任务 - 在任务扫描和数据库租约获取阶段双重校验设备归属 - 设备迁移后原节点不执行 HTTP 请求且不推进 NEXT_RUN_AT - 保留数据库租约,避免同一探针的多实例重复拉取 - 微步 searchBySql 改为全量逐条日志查询 - 移除 net_data_type=attack/risk 固定过滤 - 支持采集 attack、action、risk 并原样写入 WAL/Kafka - 保留空 sql、完整字段和时间窗口查询 - 新增微步原始查询诊断接口 - 支持自定义 size、page、pageSize、cur_page 等查询字段 - 复用任务绑定的地址、凭据、TLS 和超时配置 - 诊断查询不写 WAL/Kafka、不推进 checkpoint - 响应隐藏 API Key、Secret、签名和认证字段 - 更新启动版本标识为 WEIBU_DIAGNOSTIC_V20260917_66 - 更新 v6 部署、验证和 curl 调用文档 - Docker 基础镜像调整为 eclipse-temurin:8-jre - 补充探针归属、全量查询、诊断透传和状态隔离测试 测试: - JDK 8 - Tests run: 165 - Failures: 0 - Errors: 0 - Skipped: 2 - git diff --check 通过
3.6 KiB
v6 设备级采集模式增量升级说明
默认采集总开关
新版默认同时开启 Syslog 服务和设备 API 拉取调度:
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 按顺序执行:
database/01-device-collection-mode-precheck.sql
database/02-device-collection-mode-upgrade.sql
database/03-device-collection-mode-verify.sql
执行规则:
- 先备份
DEVICE_DEVICE,保存预检结果。 01中字段和约束查询首次升级时必须返回 0 行。02只能成功执行一次;中途报错时不要整份重跑,应先检查已落库对象。03必须确认字段为VARCHAR2(16) DEFAULT 'BOTH' NOT NULL、约束已启用、非法数据数为 0。03验证完成后即可启动新版 JAR。先配置下游微步 API JSON 泛化规则,再写入微步凭据、创建并验证WEIBU_LOG新任务;确认规则已关联设备后才能恢复任务并设置具体设备模式。
默认 BOTH 用于兼容现有设备;升级 SQL 不硬编码任何设备 ID。
API 拉取任务的探针归属
新版调度器只扫描满足以下条件的设备任务:
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。微步 API 复用现有
DEVICE_COLLECT_API_* 基础表,不在本次升级中新增或修改这些表。新版微步适配器只支持
WEIBU_LOG(/api/v1/log/searchBySql);开发阶段的 WEIBU_INCIDENT 从未作为现场版本发布,因此不需要现场数据迁移脚本。
现场设置示例
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/weibu-40-credential.json 已填写设备 40 的真实微步 ApiKey/Secret;api/weibu-40-task.json 已填写设备、地址和拉取参数,首次采集时间由现场命令生成。凭据文件包含明文生产秘密,必须限制整个 v6 目录的权限和分发范围;禁止把文件内容复制到工单、聊天或执行日志。