feat(syslog-serve): 完善微步全量拉取、探针归属控制及诊断接口
- 按 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 通过
This commit is contained in:
@@ -32,6 +32,19 @@ database/03-device-collection-mode-verify.sql
|
||||
|
||||
默认 `BOTH` 用于兼容现有设备;升级 SQL 不硬编码任何设备 ID。
|
||||
|
||||
## 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`。微步 API 复用现有
|
||||
`DEVICE_COLLECT_API_*` 基础表,不在本次升级中新增或修改这些表。新版微步适配器只支持
|
||||
`WEIBU_LOG`(`/api/v1/log/searchBySql`);开发阶段的 `WEIBU_INCIDENT` 从未作为现场版本发布,因此不需要现场数据迁移脚本。
|
||||
|
||||
@@ -25,7 +25,9 @@ API 相关升级只看本页。示例设备:`deviceId=40`、`IP=10.56.171.164`
|
||||
docker logs syslog-serve-dm 2>&1 | grep '\[SYSLOG_BUILD_READY\]' | tail -n 1
|
||||
```
|
||||
|
||||
必须看到 `apiPullEnabled=true`。内网默认 `apiTlsVerifyEnabled=false`。
|
||||
必须看到 `codeRevision=WEIBU_DIAGNOSTIC_V20260917_66`、`apiPullEnabled=true`,并确认
|
||||
`deviceCollectId` 与设备 40 的 `DEVICE_DEVICE.DEVICE_COLLECT_ID` 一致。内网默认
|
||||
`apiTlsVerifyEnabled=false`。
|
||||
|
||||
## 2. 配置微步 API 任务
|
||||
|
||||
@@ -100,7 +102,37 @@ docker exec syslog-serve-dm curl -fsS \
|
||||
|
||||
GET 必须返回 `collectionMode=API_ONLY`。此后 `10.56.171.164` 的 TCP/UDP Syslog 被丢弃,API 任务继续运行。
|
||||
|
||||
## 4. 验收
|
||||
## 4. 微步原始查询诊断
|
||||
|
||||
诊断接口复用任务中的设备地址、凭据、TLS 和超时配置,只把请求 JSON 原样发送给微步。
|
||||
它不会写入 WAL/Kafka,不会推进 checkpoint,也不会在响应中返回 API Key、Secret 或签名 URL。
|
||||
|
||||
查询最近 10 分钟,单次最多请求 1000 条:
|
||||
|
||||
```bash
|
||||
TIME_TO=$(date +%s)
|
||||
TIME_FROM=$((TIME_TO - 600))
|
||||
|
||||
docker exec syslog-serve-dm curl -fsS -X POST \
|
||||
'http://127.0.0.1:8189/syslogserve/api/api-pull-tasks/21/diagnostics/weibu-query' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{\"time_from\":${TIME_FROM},\"time_to\":${TIME_TO},\"sql\":\"\",\"assets_group\":[],\"columns\":[],\"size\":1000}"
|
||||
```
|
||||
|
||||
请求体不会限制微步字段,因此可以试验现场版本的页码和页大小字段。例如:
|
||||
|
||||
```bash
|
||||
docker exec syslog-serve-dm curl -fsS -X POST \
|
||||
'http://127.0.0.1:8189/syslogserve/api/api-pull-tasks/21/diagnostics/weibu-query' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{\"time_from\":${TIME_FROM},\"time_to\":${TIME_TO},\"sql\":\"\",\"assets_group\":[],\"columns\":[],\"page\":2,\"pageSize\":100,\"size\":100}"
|
||||
```
|
||||
|
||||
微步当前文档只明确描述了查询条件,现场已有脚本确认 `size` 可用,但未确认真正的页码字段。
|
||||
诊断接口会原样传递 `page`、`pageSize`、`cur_page`、`page_size` 等字段;应通过不同页返回的
|
||||
`response.data.data` 和 `response.data.total` 判断设备是否接受,不能仅凭 HTTP 200 认定分页生效。
|
||||
|
||||
## 5. 验收
|
||||
|
||||
```bash
|
||||
docker exec syslog-serve-dm curl -fsS \
|
||||
@@ -116,7 +148,7 @@ docker exec syslog-serve-dm curl -fsS \
|
||||
- Kafka 中每条消息是一条微步 JSON,下游按设备 40 关联的泛化规则标准化。
|
||||
- 来自 `10.56.171.164` 的 Syslog 不进入 WAL/Kafka,其他默认 `BOTH` 设备不受影响。
|
||||
|
||||
## 5. 缓存清理
|
||||
## 6. 缓存清理
|
||||
|
||||
```bash
|
||||
# syslog-serve:指定设备 / 全部设备
|
||||
@@ -134,7 +166,7 @@ docker exec syslog-consumer-rule-dm curl -fsS -X DELETE \
|
||||
|
||||
规则缓存清理会通知所有正常订阅 Redis 消息的 `syslog-consumer-rule` 实例。不要使用旧的 `DELETE /api/cache/all`。
|
||||
|
||||
## 6. 快速回退
|
||||
## 7. 快速回退
|
||||
|
||||
1. 暂停微步 API 任务。
|
||||
2. 将设备改回 `BOTH`:
|
||||
|
||||
Reference in New Issue
Block a user