成本洞察

ServerBee 如何把账单字段与 agent 指标转换为消耗速率、单位资源成本,以及客观的成本提醒。

ServerBee 把管理员录入的账单字段(price、billing_cycle、currency、expired_at 等)与每个 agent 上报的资源容量、利用率、在线率结合起来,推导出一组客观的成本信号:消耗速率、单位资源成本,以及每台服务器的成本提醒(advisories)。这些信息出现在服务器列表、仪表盘服务器卡片,以及服务器详情页的成本面板上。

如何在界面里录入账单数据,见管理员指南的计费信息一节。

派生输出

每台账单配置合法的服务器都会产出下列字段(通过 GET /api/cost/overview 和 GET /api/servers/{id}/cost-insights 暴露):

字段含义
cost_per_second / per_hour / per_day在当前计费周期内按单位时间摊销的成本
cost_per_month_equivalent归一化到「每 30 天」的成本,便于比较不同长度的周期
cycle_cost_elapsed / cycle_cost_remaining本周期已消耗 vs. 剩余的金额
cycle_burn_percent当前周期已过部分的百分比
days_remaining当前计费周期剩余天数
resource_value.cost_per_cpu_core每 CPU 核的月度等价单位成本
resource_value.cost_per_gb_memory每 GB 内存的月度等价单位成本
resource_value.cost_per_gb_disk每 GB 磁盘的月度等价单位成本
resource_value.cost_per_tb_traffic_limit配置了 traffic_limit 时,每 TB 流量限额的月度等价成本
advisories客观的每台服务器提醒(见下文);无任何提醒时为空数组
invalid_reason账单字段校验失败时,替代上述成本字段填充

ServerBee 有意不再计算单一的合成「价值分」。判断一台服务器是否划算,最好依据上面这些客观单价(无需机群对比)加上下面这些可行动的提醒,而不是一个把多个不相关维度压成一团的 0–100 黑盒数字。

输入校验

出现以下任一情况时跳过成本明细。原因会通过 invalid_reason 暴露,让界面标记该条目,而不是把它当成已配置静默处理:

invalid_reason触发条件
missing_priceprice 为 NULL
missing_billing_cyclebilling_cycle 为 NULL 或空
invalid_billing_cyclebilling_cycle 不在识别集合内(monthly、quarterly、yearly)
invalid_priceprice < 0 或 NaN

price == 0 视为合法的「免费服务器」:它会得到完整成本明细(全为 0),但永远不会触发 idle_burn / sleeping_money 提醒——这两条只有在确实花钱时才有意义。

成本提醒

每条提醒都是关于单台服务器的客观事实,无需任何机群对比,因此即使只部署了一台服务器也有意义。它们按下列优先级顺序产出,并以警告标签的形式渲染在成本数字旁边。

提醒触发条件含义
expired_billingexpired_at 已是过去时间续费,以免丢失主机
sleeping_money离线、无近期采样,且仍在支付非零账单排查为何付费主机宕机
idle_burn资源空闲(近 24h 平均 CPU < 5%、平均内存 < 20%、无真实网络/磁盘 I/O),且仍在支付非零账单考虑降配或合并
low_uptime近 30 天在线率低于 90%排查可用性

sleeping_money 与 idle_burn 互斥:「sleeping」要求没有近期采样,而「idle」要求存在能证明主机近期还活着的低利用率采样。

数据来源与刷新频率

  • 提醒和成本数字由服务端按需计算,不做持久化缓存
  • 利用率均值取自 record 表(与监控图表同一张表),回看 24 小时(RECORD_LOOKBACK_HOURS)。网络活跃度依据每窗口的吞吐速率判断,而非累计字节计数器
  • 在线率从 uptime_daily 按 30 天回看聚合(UPTIME_RECENT_DAYS)
  • 资源容量(CPU 核数 / 总内存 / 总磁盘)来自每个 agent 最近一次 SystemInfo;agent 断开时沿用最后一次已知值

已知限制

  • 单位资源成本是绝对值(成本 ÷ 容量),不会与其他服务器排名,因此「便宜还是贵」由你自行判断
  • idle_burn 检查的是 CPU + 内存 + I/O 活跃度,而非应用层是否有用。一台开着却没干有用事、CPU/内存又空闲的主机会被判为空闲
  • 缺少 traffic_limit 时,cost_per_tb_traffic_limit 会省略
  • 月度等价换算使用固定 30 天基准。季度 / 年度周期会先换算到这个统一基准