一个用于 macOS 硬件传感器的 Prometheus 导出器,支持从系统管理控制器(SMC)读取温度、电压、电流、功率、电池和风扇指标。
English | 简体中文
- 以 Prometheus 格式导出 macOS 硬件传感器指标
- 支持多种传感器类型:
- 温度(°C)
- 电压(V)
- 电流(A)
- 功率(W)
- 风扇转速(RPM)
- 电池信息
- 健康检查端点
- 支持通过 CLI 参数、配置文件或环境变量进行配置
- 可在终端直接显示传感器信息(支持表格、JSON 或 ASCII 格式)
- macOS(在 macOS 10.13+ 上测试通过)
- Go 1.22+(用于从源码构建)
- 可能需要 root/管理员权限来访问 SMC 传感器
# 添加 tap
brew tap xykong/tap
# 安装
brew install macos-sensor-exporter
# 作为服务启动(开机自动启动)
brew services start macos-sensor-exporter
# 或者手动运行
macos-sensor-exporter start管理服务:
# 查看服务状态
brew services list
# 停止服务
brew services stop macos-sensor-exporter
# 重启服务
brew services restart macos-sensor-exporter
# 查看日志
tail -f $(brew --prefix)/var/log/macos-sensor-exporter.loggit clone https://github.com/xykong/macos-sensor-exporter.git
cd macos-sensor-exporter
go build -o macos-sensor-exporter .go install github.com/xykong/macos-sensor-exporter@latest在默认端口(9101)上启动导出器服务:
./macos-sensor-exporter start使用自定义端口和指标路径:
./macos-sensor-exporter start --port 8080 --pattern /custom-metrics启用详细日志:
./macos-sensor-exporter start -v直接在终端显示传感器信息:
# ASCII 格式(默认)
./macos-sensor-exporter show
# 表格格式
./macos-sensor-exporter show -o table
# JSON 格式
./macos-sensor-exporter show -o json导出器可以通过以下方式配置(优先级从高到低):
- 命令行参数(最高优先级)
- 环境变量(使用
VIPER_前缀) - 配置文件(最低优先级)
在家目录或当前目录创建 .macos-sensor-exporter.yaml 文件:
port: 9101
pattern: /metrics或指定自定义配置文件位置:
./macos-sensor-exporter start --config /path/to/config.yaml在 prometheus.yml 中添加以下配置:
scrape_configs:
- job_name: 'macos-sensors'
static_configs:
- targets: ['localhost:9101']导出器提供以下格式的指标:
sensor_<类别>_<描述>_<单位>{index="<编号>"} <数值>
示例指标:
sensor_temperature_cpu_die_celsius 45.5
sensor_voltage_cpu_core_volts 1.2
sensor_power_cpu_total_watt 15.3
sensor_fans_speed_rpm{index="0"} 1800
sensor_battery_charge_amperes 2.5
- Temperature(温度):CPU、GPU 和其他组件的温度
- Voltage(电压):CPU 核心、GPU 和系统电压
- Current(电流):电池和电源供应电流
- Power(功率):CPU、GPU 和系统总功耗
- Fans(风扇):所有已安装风扇的转速
- Battery(电池):电池状态和指标
/metrics- Prometheus 指标端点(默认,可配置)/healthz- 健康检查端点(返回 200 OK)
make buildgo test ./..../macos-sensor-exporter start -v.
├── main.go # 入口点
├── cmd/ # CLI 命令
│ ├── root.go # 根命令和配置
│ ├── start.go # 启动导出器服务
│ └── show.go # 显示传感器信息
└── exporter/ # Prometheus 导出器逻辑
└── exporter.go # Collector 实现
如果遇到访问 SMC 传感器的权限错误,尝试使用 sudo 运行:
sudo ./macos-sensor-exporter start确保你的 Mac 支持 SMC 传感器访问。某些虚拟化或较旧的 Mac 型号可能只有有限的传感器可用性。
检查端口是否已被占用:
lsof -i :9101欢迎贡献!请随时提交 Pull Request。
详见 LICENSE 文件。
本项目使用:
- iSMC - 用于 SMC 传感器访问
- Prometheus client_golang - 用于指标导出
- Cobra - 用于 CLI
- Viper - 用于配置管理
- node_exporter - 用于硬件和操作系统指标的 Prometheus 导出器(Linux)
- iSMC - macOS SMC 工具和库