需调用宝塔面板API接口获取CPU、内存、磁盘、网络等实时资源数据,结合计费模型本地计算成本;可通过系统信息、进程网站归属、计划任务及日志分析四类接口实现监控与统计。

如果您希望在宝塔面板中通过其内置接口获取服务器资源使用情况并用于成本监控与统计,则需调用面板提供的 API 接口获取 CPU、内存、磁盘、网络及运行时长等原始数据,再结合计费模型进行本地计算。以下是实现该目标的几种可行方式:
一、调用面板系统信息接口获取实时资源数据
宝塔面板提供 /api/system/get_system_info 接口(需登录态 Cookie 或密钥认证),可返回 CPU 使用率、内存占用、磁盘 I/O、负载等字段,是构建成本统计的基础数据源。
1、确保宝塔面板已开启 API 接口功能:进入【面板设置】→【API接口】→ 开启“允许远程调用”并记录接口密钥。
2、构造 POST 请求访问 https://您的服务器IP:8888/api/system/get_system_info,Header 中携带 Cookie 或 X-Auth-Key 与 X-Auth-Nonce 头部。
3、解析返回 JSON 中的 cpu_usage、mem_used、disk_io_read、disk_io_write、network_in、network_out 等字段,作为单位时间资源消耗样本。
4、将每分钟采集的数据写入本地时序数据库(如 SQLite 或 InfluxDB),用于后续按小时/天聚合计算。
二、结合进程与网站运行状态接口估算服务级成本归属
通过 /api/site/get_sites 和 /api/process/get_process_list 接口可识别当前活跃站点与高耗能进程,从而将系统资源消耗按业务维度拆分,支撑多租户或项目级成本分摊。
1、调用 /api/site/get_sites 获取全部网站列表及其运行状态、绑定域名、主目录路径等元信息。
2、调用 /api/process/get_process_list 获取所有进程的 PID、CPU%、MEM%、启动命令,筛选出与各网站主程序(如 nginx worker、php-fpm 进程、Python gunicorn 实例)匹配的条目。
3、对每个网站关联的进程组做 CPU 时间加权与内存驻留时间积分,生成该网站在采样周期内的相对资源权重系数。
4、将系统总资源消耗乘以该系数,得到单个网站在该时段的预估资源占用量,用于内部成本归集。
三、利用计划任务接口同步采集周期与触发统计脚本
宝塔面板的定时任务接口(/api/cron/get_crons)支持创建、启用、执行自定义 Shell 脚本,可用于部署轻量级成本统计逻辑,避免外部轮询压力。
1、编写 Python 脚本,使用 requests 调用面板系统接口获取数据,并按预设公式计算费用(例如:CPU 占用 × 单核单价 + 内存 MB × 每 MB 单价)。
2、将脚本保存至 /www/server/panel/py_script/cost_calc.py,确保具有可执行权限且依赖库已安装。
3、调用 /api/cron/add_cron 添加新计划任务,设置执行周期为“每5分钟”,命令为 python /www/server/panel/py_script/cost_calc.py >> /www/wwwlogs/cost_daily.log 2>&1。
4、检查 /api/cron/get_crons 返回结果中对应任务的 status 字段是否为1(已启用),确认调度已生效。
四、通过日志分析接口提取历史资源快照用于回溯统计
面板日志接口(如 /api/panel/get_logs)可获取系统监控日志片段,适用于补采丢失数据或验证统计一致性,尤其在接口调用失败时段提供冗余数据源。
1、访问 /api/panel/get_logs?log_type=system&limit=100 获取最近 100 条系统日志,筛选含 “CPU:”、“MEM:”、“LOAD:” 的行。
2、使用正则提取每条日志中的时间戳与数值,例如匹配 CPU: (\d+)% → 提取整数百分比值。
3、将提取结果按时间排序后插值补全缺失采样点,形成连续时间序列。
4、将该序列与 API 实时数据做交叉校验,若偏差超过±8%,则标记该时段统计结果为“待复核”并暂停计入总成本。










