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

4.5 KiB
Raw Blame History

客户现场调试指南 — 第三方接口联调

前置:更新 Edge 设备可执行文件

将 safesightd、safesight-edge-agent、safesight-edge-server 替换为最新版本:

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 接口

curl -s -X POST \
  "http://180.51.12.2/api/appsys/sso/httpheader/login/v1?username_=szls"

预期返回 JSONresponseBody.token 有值。

2. 告警推送接口

把上一步拿到的 token 替换 TOKEN_VALUE

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 存储

curl -s "http://180.51.12.2:9000"

预期返回 MinIO XML 响应。


第二步:查看 Edge-Server 日志

在 Edge 设备上执行。

查看启动时加载的第三方地址

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 当前配置的第三方地址

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,可持续滚动查看新日志:

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 本地告警

journalctl -u safesight-edge-agent --no-pager -n 200 \
  | grep -i "alarm\|report"

快速诊断

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. 如有修改,保存后重新下发设备配置