docs: simplify debug guide, clean multi-line commands

This commit is contained in:
tian 2026-07-29 21:52:10 +08:00
parent 25734f5775
commit 805814fcdf

View File

@ -2,53 +2,40 @@
## 接口清单
| 接口 | 地址 | 用途 |
|------|------|------|
| Token | `POST http://180.51.12.2/api/appsys/sso/httpheader/login/v1?username_=szls` | 获取认证令牌 |
| 告警推送 | `POST http://180.51.12.2/api/edge/edgecallmanages/vi-alarm/v1` | 推送告警消息 |
| MinIO | `http://180.51.12.2:9000` | 告警截图/视频存储 |
| 接口 | 地址 |
|------|------|
| Token | `POST http://180.51.12.2/api/appsys/sso/httpheader/login/v1?username_=szls` |
| 告警推送 | `POST http://180.51.12.2/api/edge/edgecallmanages/vi-alarm/v1` |
| MinIO | `http://180.51.12.2:9000` |
---
## 第一步:确认三个接口可达
在能访问 `180.51.12.2` 的机器上执行
在能访问 `180.51.12.2` 的机器上执行
### 1. Token 接口注意POST不是 GET
### 1. Token 接口
```bash
curl -s -X POST "http://180.51.12.2/api/appsys/sso/httpheader/login/v1?username_=szls" | python3 -m json.tool
curl -s -X POST \
"http://180.51.12.2/api/appsys/sso/httpheader/login/v1?username_=szls"
```
**预期**返回 JSON其中 `responseBody.token` 有值。
预期返回 JSON`responseBody.token` 有值。
**异常处理**
### 2. 告警推送接口
| 现象 | 原因 | 对策 |
|------|------|------|
| 返回 500 | SSO 服务异常 | 联系客户排查 SSO |
| 返回 200 但无 token | 字段路径变了 | 检查 JSON 结构,可能需要改 `token_json_path` |
| 连接拒绝 | IP 不通 / 服务未启动 | 检查网络、确认服务已部署 |
| 返回 401/403 | 账号权限问题 | `username_=szls` 可能失效,找客户确认 |
### 2. 告警推送接口(拿到 token 后)
把上一步拿到的 token 替换 `TOKEN_VALUE`
```bash
TOKEN="从上一步拿到的 token"
curl -s -X POST "http://180.51.12.2/api/edge/edgecallmanages/vi-alarm/v1" \
curl -s -X POST \
"http://180.51.12.2/api/edge/edgecallmanages/vi-alarm/v1" \
-H "Content-Type: application/json" \
-H "X-Access-Token: $TOKEN" \
-d '{
"tenantCode": "32",
"channelNo": "test",
"alarmContent": "test",
"alarmTime": "2026-01-01 00:00:00",
"picInfo": [],
"videoInfo": []
}'
-H "X-Access-Token: TOKEN_VALUE" \
-d '{"tenantCode":"32","channelNo":"test","alarmContent":"test","alarmTime":"2026-01-01 00:00:00","picInfo":[],"videoInfo":[]}'
```
**预期**200 OK
预期返回 200。
### 3. MinIO 存储
@ -56,80 +43,74 @@ curl -s -X POST "http://180.51.12.2/api/edge/edgecallmanages/vi-alarm/v1" \
curl -s "http://180.51.12.2:9000"
```
**预期**返回 MinIO XML 响应(非 404 / 拒绝连接)
预期返回 MinIO XML 响应。
---
## 第二步:查看 Edge-Server 日志
在 Edge 设备上执行
在 Edge 设备上执行
### 查看启动加载的配置
### 查看启动时加载的第三方地址
```bash
journalctl -u safesight-edge-server --no-pager | grep -E "ExternalApiAction initialized|HttpAction initialized"
journalctl -u safesight-edge-server --no-pager \
| grep -E "ExternalApiAction initialized|HttpAction initialized"
```
**预期输出**
预期看到 `token_url=http://180.51.12.2/...``msg_url=http://180.51.12.2/...`
```
[ExternalApiAction] initialized, token_url=http://180.51.12.2/... msg_url=http://180.51.12.2/...
[HttpAction] initialized, url=http://127.0.0.1:9100/v1/alarms/report, method=POST
```
如果 IP 不是 `180.51.12.2`,说明管理端下发的配置未更新。
> 如果 URL 里的 IP 不是 `180.51.12.2`,说明管理端下发的配置未更新,需要在管理端修改集成服务配置后重新下发。
### 实时跟踪告警和第三方调用
### 实时跟踪告警和接口调用
```bash
journalctl -u safesight-edge-server -f | grep -E "alarm.*trigger|ExternalApi|token|send|minio"
journalctl -u safesight-edge-server -f \
| grep -E "alarm.*trigger|ExternalApi|token|send ok|send failed"
```
---
## 第三步:触发告警,观察完整链路
一个人走到摄像头前触发告警,或使用测试视频源,观察日志输出
找人走到摄像头前触发告警,观察日志。
### 正常流程
正常流程
```
[alarm] trigger event_id=xxx rule=unknown_face
[ExternalApiAction] token fetched successfully
[ExternalApiAction] send ok http=200 event_id=xxx alarm_content=unknown_face pic_url=... video_url=...
[ExternalApiAction] send ok http=200 event_id=xxx
```
### 异常诊断
异常对照:
| 日志 | 含义 | 对策 |
|------|------|------|
| 没有 `[alarm] trigger` | 告警未触发 | 检查阈值是否过高、摄像头是否在线、RTSP 是否正常 |
| `token fetched successfully` 不出现 | token 获取失败 | 回到第一步验证 token 接口 |
| `send failed http=401` | token 过期或被拒 | 检查 token 有效期、SSO 账号权限 |
| `send failed http=403` | 无推送权限 | 联系客户开通推送权限 |
| `send failed http=500` | 第三方推送接口内部错误 | 第三方问题,找客户排查他们日志 |
| `send ok http=200` 但客户说没收到 | 第三方内部处理失败 | 客户查他们自己的系统日志 |
| 日志里完全没有 `ExternalApiAction` | 配置未启用 external_api | 检查管理端「集成服务」配置 |
| `minio upload failed` | 截图/视频上传失败 | 检查 MinIO 凭据、bucket 是否存在 |
| `curl_easy_perform` 错误 | 网络不通 | 检查 Edge 设备到 `180.51.12.2` 的网络 |
| 日志 | 对策 |
|------|------|
| 没有 `[alarm] trigger` | 检查阈值、摄像头、RTSP |
| 无 `token fetched successfully` | 回到第一步验证 token 接口 |
| `send failed http=401` | token 过期,检查 SSO 账号 |
| `send failed http=500` | 第三方内部错误,找客户排查 |
| 日志里完全没有 `ExternalApiAction` | 管理端集成服务未启用 external_api |
| `minio upload failed` | 检查 MinIO 凭据和 bucket |
| `curl_easy_perform` 错误 | Edge 到 180.51.12.2 网络不通 |
---
## 第四步:验证 Agent 本地告警
Edge-Server 同时会推送告警到本地 Agent`127.0.0.1:9100`Agent 再上报管理端。
```bash
# 查看 Agent 是否收到告警
journalctl -u safesight-edge-agent --no-pager -n 200 | grep -i "alarm\|report"
journalctl -u safesight-edge-agent --no-pager -n 200 \
| grep -i "alarm\|report"
```
---
## 快速诊断(一条命令)
## 快速诊断
```bash
journalctl -u safesight-edge-server --no-pager -n 500 | grep -E "ExternalApi|HttpAction|alarm.*trigger|token|send ok|send failed"
journalctl -u safesight-edge-server --no-pager -n 500 \
| grep -E "ExternalApi|HttpAction|alarm.*trigger|token|send ok|send failed"
```
---
@ -137,16 +118,5 @@ journalctl -u safesight-edge-server --no-pager -n 500 | grep -E "ExternalApi|Htt
## 管理端配置检查
1. 登录管理端 → 资产管理 → 第三方服务
2. 确认告警服务和对象存储的地址为 `180.51.12.2`
3. 如有修改,保存后在「运行看板」中对设备重新下发配置
---
## 相关代码
| 文件 | 说明 |
|------|------|
| `plugins/alarm/actions/external_api_action.cpp` | Token 获取 + 告警推送逻辑 |
| `plugins/alarm/actions/http_action.cpp` | 本地 Agent 推送逻辑 |
| `plugins/alarm/alarm_node.cpp` | 告警触发和 action 调度 |
| `internal/service/auto_config.go` | 管理端注入集成服务配置 |
2. 确认告警服务和对象存储地址为 `180.51.12.2`
3. 如有修改,保存后重新下发设备配置