safesight-control/docs/debug-third-party-api.md

162 lines
4.5 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.

# 客户现场调试指南 — 第三方接口联调
## 前置:更新 Edge 设备可执行文件
将 safesightd、safesight-edge-agent、safesight-edge-server 替换为最新版本:
```bash
tar xzf safesight-update.tar.gz
cd safesight-update
sudo systemctl stop safesightd safesight-edge-agent safesight-edge-server
sudo cp safesightd /opt/safesightd/bin/
sudo cp safesight-edge-agent /opt/safesight-edge-agent/
sudo cp safesight-edge-server /opt/safesight-edge-server/bin/
sudo chmod +x /opt/safesightd/bin/safesightd \
/opt/safesight-edge-agent/safesight-edge-agent \
/opt/safesight-edge-server/bin/safesight-edge-server
sudo systemctl start safesightd safesight-edge-agent safesight-edge-server
```
> 本次更新修复了 agent 在 edge-server 热加载慢时错误回滚旧配置的问题。
---
## 接口清单
| 接口 | 地址 |
|------|------|
| 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` 的机器上执行。
### 1. Token 接口
```bash
curl -s -X POST \
"http://180.51.12.2/api/appsys/sso/httpheader/login/v1?username_=szls"
```
预期返回 JSON`responseBody.token` 有值。
### 2. 告警推送接口
把上一步拿到的 token 替换 `TOKEN_VALUE`
```bash
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_VALUE" \
-d '{"tenantCode":"32","channelNo":"test","alarmContent":"test","alarmTime":"2026-01-01 00:00:00","picInfo":[],"videoInfo":[]}'
```
预期返回 200。
### 3. MinIO 存储
```bash
curl -s "http://180.51.12.2:9000"
```
预期返回 MinIO XML 响应。
---
## 第二步:查看 Edge-Server 日志
在 Edge 设备上执行。
### 查看启动时加载的第三方地址
```bash
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/...`
如果 IP 不是 `180.51.12.2`,说明管理端下发的配置未更新。
### 查看 edge-server 当前配置的第三方地址
```bash
grep -oP '"(getTokenUrl|putMessageUrl|endpoint|bucket|access_key|tenantCode|url)":"[^"]*"' \
/opt/safesight-edge-server/etc/safesight-edge-server.json \
| sort -u
```
预期看到 `180.51.12.2` 的地址。**如果全是空字符串**
1. 确认管理端「第三方服务」中地址已改为 `180.51.12.2`
2. 用**向导**重新下发(不要用设备详情页的「下发当前设备分配」,那条路径不注入集成服务)
3. 下发后再次执行上述 grep 确认地址已写入
### 实时跟踪告警和接口调用
`journalctl -f` 效果等同于 `tail -f`,可持续滚动查看新日志:
```bash
journalctl -u safesight-edge-server -f \
| grep -E "alarm.*trigger|ExternalApi|token|send ok|send failed"
```
> 注意:日志写入 systemd journal没有独立的应用日志文件。edge-server 支持热加载配置,下发后无需重启即可生效。
---
## 第三步:触发告警,观察完整链路
找人走到摄像头前触发告警,观察日志。
正常流程:
```
[alarm] trigger event_id=xxx rule=unknown_face
[ExternalApiAction] token fetched successfully
[ExternalApiAction] send ok http=200 event_id=xxx
```
异常对照:
| 日志 | 对策 |
|------|------|
| 没有 `[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 本地告警
```bash
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"
```
---
## 管理端配置检查
1. 登录管理端 → 资产管理 → 第三方服务
2. 确认告警服务和对象存储地址为 `180.51.12.2`
3. 如有修改,保存后重新下发设备配置