This exporter uses github.com/dkorunic/iSMC and github.com/anatol/smart.go.
It is intended to measure data not covered by node-exporter on modern Apple-Silicon Mac, mainly various sensors from iSMC and temperature sensors for NVMe drives - both built-in and ones connected via Thunderbolt (PCIe).
Data is exposed on port 65002
Labels:
family- enum of 4 categorieskey- key from iSMClabel- description from iSMC converted to influx-like format (no spaces)unit
Metrics:
ismc_battery{family="battery",key="....",label="...",unit="none"}ismc_fans{family="fans",key="....",label="...",unit="rpm"}ismc_power{family="power",key="....",label="...",unit="w"}ismc_temperature{family="temperature",key="....",label="...",unit="c"}
Labels:
device- disk node of SMART-capable NVMe disk under in/dev(e.g.disk0); not guaranteed to stay the same between rebootsmodel- disk model stringserial- disk serial stringsize- size in bytes, may default to 0 for built-in driveunit
Metrics:
smart_power_cycles{device="disk0",model="APPLE SSD ...",serial="...",size="0",unit=""}smart_power_hours{device="disk0",model="APPLE SSD ...",serial="...",size="0",unit=""}smart_temperature{device="disk0",model="APPLE SSD ...",serial="...",size="0",unit="c"}smart_units_read{device="disk0",model="APPLE SSD ...",serial="...",size="0",unit=""}smart_units_written{device="disk0",model="APPLE SSD ...",serial="...",size="0",unit=""}
Example scenario using launchctl and Prometheus Stack on k8s:
- self-compile using go
- install binary to
/usr/local/bin(as root) - deploy provided example service plist to
~/Library/LaunchAgents/ launchctl load ~/Library/LaunchAgents/tech.skowronski.ismc-exporter.plist- patch provided example
ScrapeConfigCRD for PromStack with correct IP address and name of your Mac - deploy it onto k8s with
kubectl -f PromStackScrapeConfig.yaml apply - create Grafana dashboard