关于使用Suricatta daemon或sendtohawkbit向hawkbit反馈更新状态及相关部署进度、ActionID参数的技术咨询
问题背景
我在树莓派(RPi)上使用hawkBit搭配SWUpdate(Suricatta daemon)执行固件更新操作,目标设备已经显示Update successful, executing post update actions并提示重启,我判断更新已成功完成,但hawkBit GUI中的部署进度条仍处于黄色处理状态。针对设备状态反馈的相关问题,整理解答如下:
1. 如何使用Suricatta daemon或sendtohawkbit工具向hawkBit反馈更新成功的状态?
方式一:通过Suricatta Daemon自动反馈(推荐)
Suricatta作为SWUpdate的hawkBit客户端,默认会在更新完成后自动向hawkBit上报状态,但需要确保SWUpdate的配置文件(通常是/etc/swupdate.cfg)中hawkBit相关参数配置正确:
hawkbit: server: http://<你的hawkBit服务器IP>:8080 tenant: default targettoken: <你的设备目标令牌> pollinterval: 60
如果更新完成后没有自动上报,可检查SWUpdate服务日志(journalctl -u swupdate.service)是否有上报失败的错误信息,比如网络连接问题或令牌配置错误。
方式二:使用sendtohawkbit工具手动上报
如果需要手动触发状态反馈,可使用sendtohawkbit工具执行以下命令,直接向hawkBit服务器推送更新成功的状态:
sendtohawkbit \ --server http://<hawkBit服务器IP>:8080 \ --tenant default \ --target-token <你的设备目标令牌> \ --action-id <获取到的ActionID> \ --status finished \ --result success
参数说明:
--status finished:标记该更新动作已完成--result success:指定更新结果为成功
2. 是否存在可实时显示部署进度完成情况的GUI?
hawkBit原生GUI本身就支持查看部署进度,但默认不会自动实时刷新,需要手动点击页面的刷新按钮:
- 登录hawkBit GUI,进入Rollouts页面
- 点击对应的部署任务,进入详情页
- 在Targets标签下,可以看到每个目标设备的状态(手动刷新页面即可获取最新状态)
如果需要更实时的监控体验,可以利用hawkBit的Webhook功能:
- 在hawkBit GUI的Settings -> Webhooks中配置一个自定义Webhook,接收状态变更事件
- 自己开发一个简单的Web页面或使用监控工具,接收Webhook推送的事件并实时展示部署进度
3. 如何准确获取ActionID参数?
有三种可靠的方式获取ActionID:
方式一:从hawkBit GUI获取
- 进入hawkBit的Targets页面,找到你的树莓派设备
- 点击设备条目进入详情页,切换到Actions标签
- 列表中会显示所有针对该设备的更新动作,对应的ID就是ActionID
方式二:通过hawkBit API获取
发送GET请求到hawkBit的API接口,获取目标设备的所有动作:
curl -X GET http://<hawkBit服务器IP>:8080/rest/v1/targets/<你的设备TargetID>/actions \ -H "Authorization: Bearer <你的管理员令牌>"
返回的JSON数据中,每个动作的id字段就是ActionID。
方式三:从设备端日志获取
查看SWUpdate服务的运行日志,Suricatta daemon在接收到hawkBit的更新指令时会记录ActionID:
journalctl -u swupdate.service | grep "Action ID"
日志中会出现类似Received action ID: 123456的内容,其中的数字就是你需要的ActionID。
内容的提问来源于stack exchange,提问作者artur_roomman

