150 lines
5.1 KiB
Markdown
150 lines
5.1 KiB
Markdown
|
|
# v6 API 现场操作
|
|||
|
|
|
|||
|
|
API 相关升级只看本页。示例设备:`deviceId=40`、`IP=10.56.171.164`、微步 TDP。
|
|||
|
|
生产环境不映射管理端口,所有 API 命令都通过容器执行:
|
|||
|
|
|
|||
|
|
- `syslog-serve-dm`:`8189`
|
|||
|
|
- `syslog-consumer-rule-dm`:`8289`
|
|||
|
|
|
|||
|
|
## 1. 发布顺序
|
|||
|
|
|
|||
|
|
1. 先按 `upgrade-doc/v6/README.md` 执行 3 个数据库脚本。
|
|||
|
|
2. 确认启动配置:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
SYSLOG_SERVER_ENABLED=true
|
|||
|
|
DEVICE_API_ENABLED=true
|
|||
|
|
DEVICE_API_TLS_VERIFY_ENABLED=false
|
|||
|
|
DEVICE_API_HOST_ALLOWLIST_ENABLED=false
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. 更换并启动新 JAR。新版 JAR 不能在数据库字段升级前启动。
|
|||
|
|
4. 检查启动日志:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker logs syslog-serve-dm 2>&1 | grep '\[SYSLOG_BUILD_READY\]' | tail -n 1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
必须看到 `apiPullEnabled=true`。内网默认 `apiTlsVerifyEnabled=false`。
|
|||
|
|
|
|||
|
|
## 2. 配置微步 API 任务
|
|||
|
|
|
|||
|
|
真实 Key/Secret 已保存在 `weibu-40-credential.json`,该文件必须按生产密钥管理。
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
chmod 600 upgrade-doc/v6/api/weibu-40-credential.json
|
|||
|
|
|
|||
|
|
docker exec -i syslog-serve-dm curl -fsS -X POST \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/api-pull-credentials' \
|
|||
|
|
-H 'Content-Type: application/json' \
|
|||
|
|
--data-binary '@-' \
|
|||
|
|
< upgrade-doc/v6/api/weibu-40-credential.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果凭据已存在,不要重复创建。任务已存在时也直接复用。首次接入时,v6 目录已提供设备 40 的完整任务 JSON;执行前只把首次采集时间设为服务器当前时间减 2 分钟:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
INITIAL_START_TIME=$(date -d '2 minutes ago' --iso-8601=seconds)
|
|||
|
|
sed "s|__INITIAL_START_TIME__|${INITIAL_START_TIME}|" \
|
|||
|
|
upgrade-doc/v6/api/weibu-40-task.json \
|
|||
|
|
> /tmp/weibu-40-task.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
执行前检查生成结果:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cat /tmp/weibu-40-task.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
必须确认 `deviceId=40`、`baseUrl=https://10.56.171.164`,且 `initialStartTime` 已经是真实时间,不再包含 `__INITIAL_START_TIME__`。
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker exec -i syslog-serve-dm curl -fsS -X POST \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/api-pull-tasks' \
|
|||
|
|
-H 'Content-Type: application/json' \
|
|||
|
|
--data-binary '@-' \
|
|||
|
|
< /tmp/weibu-40-task.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
记录返回的 `taskId` 和 `configVersion`。任务创建后默认暂停,先验证:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker exec syslog-serve-dm curl -fsS -X POST \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/api-pull-tasks/<TASK_ID>/validate' \
|
|||
|
|
-H 'Content-Type: application/json' \
|
|||
|
|
-d '{"configVersion":<CONFIG_VERSION>}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
所有检查为 `PASS` 后,先在管理系统中给设备 40 关联能解析微步单条 JSON 的泛化规则,然后恢复任务:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker exec syslog-serve-dm curl -fsS -X POST \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/api-pull-tasks/<TASK_ID>/resume' \
|
|||
|
|
-H 'Content-Type: application/json' \
|
|||
|
|
-d '{"configVersion":<CONFIG_VERSION>}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 将设备 40 设为仅 API 采集
|
|||
|
|
|
|||
|
|
禁止直接改数据库,必须调用 API,让三层设备缓存同时失效。
|
|||
|
|
|
|||
|
|
```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`。此后 `10.56.171.164` 的 TCP/UDP Syslog 被丢弃,API 任务继续运行。
|
|||
|
|
|
|||
|
|
## 4. 验收
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker exec syslog-serve-dm curl -fsS \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/api-pull-tasks/<TASK_ID>/runtime'
|
|||
|
|
docker exec syslog-serve-dm curl -fsS \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/api-pull-tasks/<TASK_ID>/runs?page=1&pageSize=5'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
必须确认:
|
|||
|
|
|
|||
|
|
- `health=HEALTHY`,最新 `SCHEDULED` 为 `SUCCESS`,HTTP 状态为 200。
|
|||
|
|
- checkpoint 持续推进;设备当时无日志时 `recordsFetched=0` 也是正常成功。
|
|||
|
|
- Kafka 中每条消息是一条微步 JSON,下游按设备 40 关联的泛化规则标准化。
|
|||
|
|
- 来自 `10.56.171.164` 的 Syslog 不进入 WAL/Kafka,其他默认 `BOTH` 设备不受影响。
|
|||
|
|
|
|||
|
|
## 5. 缓存清理
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# syslog-serve:指定设备 / 全部设备
|
|||
|
|
docker exec syslog-serve-dm curl -fsS -X DELETE \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/devices/40/cache'
|
|||
|
|
docker exec syslog-serve-dm curl -fsS -X DELETE \
|
|||
|
|
'http://127.0.0.1:8189/syslogserve/api/devices/cache'
|
|||
|
|
|
|||
|
|
# syslog-consumer-rule:指定设备规则 / 全部规则
|
|||
|
|
docker exec syslog-consumer-rule-dm curl -fsS -X DELETE \
|
|||
|
|
'http://127.0.0.1:8289/xdrrule/api/syslog/normalization/cache/devices/40'
|
|||
|
|
docker exec syslog-consumer-rule-dm curl -fsS -X DELETE \
|
|||
|
|
'http://127.0.0.1:8289/xdrrule/api/syslog/normalization/cache'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
规则缓存清理会通知所有正常订阅 Redis 消息的 `syslog-consumer-rule` 实例。不要使用旧的 `DELETE /api/cache/all`。
|
|||
|
|
|
|||
|
|
## 6. 快速回退
|
|||
|
|
|
|||
|
|
1. 暂停微步 API 任务。
|
|||
|
|
2. 将设备改回 `BOTH`:
|
|||
|
|
|
|||
|
|
```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":"BOTH"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. 恢复原泛化规则关联和旧 JAR。不删除 `COLLECTION_MODE` 字段,不删除任务、凭据或 checkpoint。
|