可通过宝塔API、WebHook、定时任务、Nginx反代四种方式将服务器状态实时同步至外部看板:启用API并设白名单与密钥;调用/system/status接口获取JSON监控数据;配置WebHook推送告警事件;用计划任务导出status.json供轮询;或通过bt命令+Nginx暴露简化接口。

如果您希望在外部看板中实时展示宝塔面板所管理服务器的运行状态,可通过调用宝塔面板开放的API接口获取系统信息。以下是实现该功能的具体步骤:
一、启用并配置宝塔面板API接口
宝塔面板默认关闭API访问,需手动开启并设置密钥与IP白名单,确保接口可被外部安全调用。
1、登录宝塔面板后台,点击左侧菜单栏的【面板设置】。
2、向下滚动至【API接口】区域,勾选【启用API接口】选项。
3、在【API密钥】输入框中点击【生成密钥】按钮,获得一串32位随机字符串。
4、在【IP白名单】中填入外部看板所在服务器的公网IP地址,多个IP用英文逗号分隔。
5、点击【保存】使配置生效。
二、获取系统运行状态数据
通过HTTP GET请求调用系统监控类接口,可直接获取CPU、内存、磁盘、网络等实时指标,无需额外解析日志或执行命令。
1、构造请求URL:https://您的服务器IP:8888/api/system/status?access_key=您的API密钥。
2、使用curl或Python requests等工具发起HTTPS请求,注意必须携带Header:X-Requested-With: XMLHttpRequest。
3、服务端返回JSON格式响应,包含cpu_percent、mem_total、mem_used、disk_usage等字段。
4、检查响应状态码是否为200,且response.data字段存在,确认数据有效。
三、使用WebHook方式推送状态至外部看板服务
宝塔支持通过自定义WebHook将关键事件(如CPU超阈值、网站宕机)主动推送到指定HTTP端点,适用于轻量级状态同步场景。
1、进入【监控报警】→【WebHook设置】,点击【添加WebHook】。
2、填写【WebHook地址】为外部看板提供的接收URL,例如https://dashboard.example.com/api/bt-hook。
3、在【触发条件】中勾选【系统负载过高】、【内存使用率过高】等所需监控项。
4、设置【推送内容模板】为JSON格式,示例:{"event":"cpu_overload","value":"{{cpu}}","time":"{{time}}"}
5、点击【测试推送】验证看板服务能否正常接收并解析数据。
四、通过定时任务拉取并缓存状态数据
若外部看板部署环境无法直连宝塔HTTPS端口(如受防火墙限制),可借助宝塔内置计划任务定期导出状态快照供外部读取。
1、进入【计划任务】→【添加计划任务】,选择任务类型为【Shell脚本】。
2、在脚本内容中写入:curl -k "https://127.0.0.1:8888/api/system/status?access_key=YOUR_KEY" > /www/wwwroot/status.json
3、设置执行周期为每分钟一次,确保状态更新延迟控制在60秒内。
4、将/www/wwwroot目录绑定为静态资源服务路径,使外部看板可通过HTTP GET读取status.json。
5、在外部看板前端使用fetch轮询该JSON文件,解析后渲染至UI组件。
五、使用bt命令行工具配合Nginx反向代理暴露只读接口
利用宝塔内置bt命令获取原始监控数据,并通过Nginx反向代理对外提供无认证、仅限GET的简化接口,降低外部调用复杂度。
1、在SSH中执行bt 13查看系统信息,确认输出含uptime、load、memory等字段。
2、编写shell脚本/usr/local/bin/get_bt_status.sh,内容为echo $(bt 13 | grep -E "(uptime|load|memory)" | sed 's/ //g')。
3、为该脚本添加执行权限:chmod +x /usr/local/bin/get_bt_status.sh。
4、配置Nginx站点,在location /api/status中添加proxy_pass http://127.0.0.1:8888/api/status; 并启用fastcgi或rewrite转发至脚本输出。
5、外部看板请求https://your-domain.com/api/status即可获得精简文本状态,无需处理SSL证书或密钥。









