Mac Studio 接入 Prometheus + Grafana 监控实践

最近给 Mac Studio 配了一套监控方案,通过 macmon-prometheus-exporter 采集硬件指标,接入 Prometheus + Grafana。整个过程比想象中简单,记录一下细节。

image-20260508上午62046355

image-20260508上午62159332

安装 macmon

参考macmon - Apple Silicon Mac 的性能监控利器

安装 Exporter

macmon-exporter 通过 Homebrew 一键安装:

brew install macmon-prometheus-exporter

安装后会自动注册为 launchd 服务,监听 9101 端口。验证一下:

curl http://localhost:9101/metrics | head -20

关键指标一览

macmon-exporter 暴露的指标都在 mac_ 命名空间下,都是 Gauge 类型(瞬时值):

指标 含义 示例值
mac_cpu_usage_percent CPU 总使用率(%) 27.69
mac_gpu_usage_percent GPU 使用率(%) 100.0
mac_cpu_power_watts CPU 功耗(瓦特) 4.88
mac_gpu_power_watts GPU 功耗(瓦特) 50.86
mac_cpu_temperature_celsius CPU 温度(摄氏度) 52.69
mac_gpu_temperature_celsius GPU 温度(摄氏度) 48.97
mac_memory_usage_percent 内存使用率(%) 62.00
mac_memory_total_bytes 内存总量(字节) 103079215104

注意:macmon-exporter 提供的是瞬时百分比值,不是累积计数器。这意味着在 Grafana 中不需要使用 irate()rate()

Prometheus 配置

prometheus.yml

- job_name: 'node-studio'
    static_configs:
      - targets: ['studio.local:9101']
        labels:
          exported_instance: "studio"
          node: "studio"

Grafana 面板配置

CPU / GPU 使用率

Linux 节点通常用 irate(node_cpu_seconds_total{mode="idle"}) 计算 CPU 使用率,但 Mac Studio 的 macmon-exporter 直接提供百分比值:

# CPU 使用率(除以100因为Grafana自带百分号)
avg(mac_cpu_usage_percent{node="studio"}) by (node) / 100

# GPU 使用率
avg(mac_gpu_usage_percent{node="studio"}) by (node) / 100

CPU 核心数对比

Linux 节点用 count(node_cpu_seconds_total{mode="system"}) 统计核心数,Mac Studio 需要分别查询 P-Core 和 E-Core:

# Mac Studio: 8P + 4E = 12 核心
sum(mac_pcpu_cores{node="studio"}) + sum(mac_ecpu_cores{node="studio"})

内存使用率

同样,macmon-exporter 直接提供百分比:

# 内存使用率(除以100)
avg(mac_memory_usage_percent{node="studio"}) by (node) / 100

# 内存总量(注意单位)
mac_memory_total_bytes{node="studio"} / 1024^3

踩坑:Grafana 默认使用十进制单位(1 GB = 10^9 bytes),所以 mac_memory_total_bytes 直接除以 1024^3 后显示为 96 GiB(二进制),而不是 103 GB(十进制)。在 Grafana 面板中将 Unit 设为 gibibytes (GiB) 即可正确显示。

CPU / GPU 温度

# CPU 温度
mac_cpu_temperature_celsius{node="studio"}

# GPU 温度
mac_gpu_temperature_celsius{node="studio"}

功耗监控

Apple Silicon 的功耗数据很有参考价值:

# CPU 功耗(瓦特)
mac_cpu_power_watts{node="studio"}

# GPU 功耗(瓦特)
mac_gpu_power_watts{node="studio"}

# 系统总功耗
mac_system_power_watts{node="studio"}

# 过去1小时的平均系统功耗
avg_over_time(mac_system_power_watts{node="studio"}[1h])

# 过去24小时的平均系统功耗
avg_over_time(mac_system_power_watts{node="studio"}[24h])

# 过去7天的平均系统功耗
avg_over_time(mac_system_power_watts{node="studio"}[7d])

注意事项

  1. 瞬时值 vs 计数器:macmon-exporter 的百分比指标是 Gauge,不需要 irate()。只有累积计数器才需要 rate/irate。

  2. 单位转换:Grafana 的 Unit 设置会影响显示值,注意区分 GB(十进制)和 GiB(二进制)。

  3. 温度监控:macmon-exporter 只暴露 CPU/GPU 温度,没有硬盘 SMART 信息。如果需要磁盘温度,需要额外安装 smartmontools。


部署 CLIProxyAPI 和 CPA Usage Keeper