Сегодня вспоминал свою старую статью о том, как можно управлять скоростью работы вентиляторов Supermicro с помощью ipmitool.
Supermicro — управление вентиляторами
Я тогда писал и, добавляя информацию и примерах, думал, что менять пороговых значений сенсоров самому вряд ли кому-то может понадобиться. Тем более мне. Как я ошибался. Сегодня как раз столкнулся с досадным примером, когда такие настройки всё-таки пришлось внести.
В сервер воткнуто четыре одинаковые видеокарты, у одной из них оказались пониженные параметры пороговых значений, из-за которых сервер может неожиданно повести себя непредсказуемо. От троттлинга и перезагрузки в самый важный момент до... алертов на пустом месте.
Инженеры Supermicro меняют параметры пограничных значений и самих IPMI сенсоров. Бесит что с очередной прошивкой IPMI BMC могут вернуться те самые проблемы, от которых мы сегодня избавимся. И могут и какие-то новые появится. Идеально есть проблем, наоборот, станет меньше. Иногда такой случается, когда в именах некоторых сенсоров в конце стояло некоторое случайное количество пробелов, из-за чего Zabbix не мог эти сенсоры обнаружить.
Итак, немного теории.
Хелп по изменению пороговых значений сенсора:
ipmitool -I lanplus -H хост -U логин -P пароль sensor threshsensor thresh <id> <threshold> <setting>
id : name of the sensor for which threshold is to be set
threshold : which threshold to set
unr = upper non-recoverable
ucr = upper critical
unc = upper non-critical
lnc = lower non-critical
lcr = lower critical
lnr = lower non-recoverable
setting : the value to set the threshold to
sensor thresh <id> lower <lnr> <lcr> <lnc>
Set all lower thresholds at the same time
sensor thresh <id> upper <unc> <ucr> <unr>
Set all upper thresholds at the same timeС теорией закончили, переходим к практике.
ipmitool -I lanplus -H хост -U логин -P пароль sensor list | grep GPUВидим четыре датчика температуры на GPU картах. У последнего верхние пороги такие: na, 86, 89. Это не совпадает с тремя другими картами, нужно установить na, 99, 104. Они идут в таком порядке:
- <unc> upper non-critical
- <ucr> upper critical
- <unr> upper non-recoverable
В <unc> мы не сможем воткнуть na, система не поймёт наших поползновений и ругнётся ошибкой. Поэтому в <unc> мы пишем то же самое, что и в <ucr>. В этом случае ipmitool видит одинаковые пограничные значения и лишнего просто не пишет.
ipmitool -I lanplus -H хост -U логин -P пароль sensor thresh "имя_сенсора" upper unc ucr unrУ меня:
ipmitool -I lanplus -H хост -U логин -P пароль sensor thresh "GPU5 Temp" upper 99 99 104Вот и всё. Система приведена в стабильное состояние.

