The System Management Controller (SMC) in modern Apple hardware is responsible for a host of functions, one of which is controlling thermal systems within a machine. Having the ability to monitor thermal sensor values in a production Mac server can be very beneficial, providing insight into the ambient and component temperatures of the machine and providing notifications when thermal systems fail.
Added today to my Mac OS X Monitoring Tools project is check_osx_smc, a new plugin that can talk to the SMC in modern Mac hardware to read and report on temperature and fan speed values. It is capable of reporting on multiple sensors at once, checking against set warning and critical values, then returning performance data for further analysis and graphing.
The plugin, written in C/Obj-C, takes a list of SMC registers (keys which point to a particular value), value thresholds for warning and critical states, and a temperature scale (celsius/fahrenheit). In the example below, we are asking an SMC on a Late 2012 Mac mini Server for it’s ambient temperature in celsius as well as it’s primary fan speed:
./check_osx_smc -s c -r TA0P,F0Ac -w 70,5200 -c 85,5800
As the resulting temperature is above 70°C, we get thrown a warning:
WARNING - TA0P is 71.3C, F0Ac at 5354rpm | TA0P=71.3158;70.0;85.0; F0Ac=5354.0;5200.0;5800.0;
A practical example: recently, when the air conditioning unit in a client’s server room failed, the rising ambient temperature in a stack of Mac mini & Mac Pro servers triggered a warning and notification. In this case, cooling was able to be restored before systems started to overheat and go down. Even in a far less dense environment, monitoring the thermal statistics of a single server can help you catch tricky things like overheating components or a fan not maintaining it’s target speed.
The plugin, as well as it’s accompanying documentation, is now available in the OSX-Monitoring-Tools GitHub repository. I hope that it serves you well, and welcome any queries or suggestions anyone may have.