前言
ipmitool可以获取各个元件的温度信息,如何判断各个组件的温度信息,各个组件的温度信息是否OK,有没有温度过高或者过低的元件需要告警?
获取各个元件温度的方法
我们可以通过如下指令获取所有元件的温度信息和相关的状态
1 | root@node:~# ipmitool sensor list |
一般来讲,第三列的值中有degree的,我们统计的是温度信息。
- 第一列: 传感器的名称,比如CPU1 Temp,
- 第二列: 该元件的当前温度值,注意有时候会是na,即取不到。
- 第四列: 温度的状态信息,ok表示温度正常,有时候该状态值为nr,为non-recovery,不可恢复的意思
一般来讲,常见的温度状态有以下5种:
- ok:温度正常
- nc: non-critical,温度偏高(或者偏低),但是并不太严重
- cr:critical,温度太高或者温度太低,很严重
- nr: non-recovery,温度太高或者温度太低,造成不可恢复的损伤。
- na:温度状态不明,比较少见。
注意ok –> nc –> cr –> nr 从正常,到越来越严重的温度问题。
如何触发温度告警
介绍了nc cr 和nr三种状态,都说温度偏高或者温度偏低,那么
- 温度到什么程度状态会变成nc,
- 温度到什么程度会变成cr
- 温度到什么程度会变成nr
显然,各个元件的状态改变是有温度门限值的,我们可以通过如下方法查看:
1 | root@node:~# ipmitool sensor get "CPU1 Temp" |
从上面的信息可以看出:
- Upper non-critical 85 度
- Upper critical 90 度
- Upper non-recovery 90 度
- Lower non-critical 0 度
- Lower critical 0 度
- Lower non-recoverable
有了门限值,是哪种状态就比较简单了。
- [0,85]之间是,状态ok
- [85,90] 状态为nc
- [90,] 状态为nr (因为cr的门限和nr的门限都是90,状态取nr)
低温的情况也是类似。
如何让温度状态告警呢,即变成nc或者cr或者nr状态呢?
ipmitool提供了方法来设置各个状态的门限值。
1 | ipmitool -I open sensor thresh 'CPU2 Temp' upper 20 30 90 |
上述指令的意思是将CPU2 Temp元件的告警门限中的温度上限告警门限设置为20 30 和90.
以为CPU的温度是33度左右,我们可以通过如下指令,将状态变为nc:
1 | root@node:~# ipmitool -I open sensor thresh 'CPU2 Temp' upper 20 40 90 |
1 | root@node:~# ipmitool sensor list |
33摄氏度,超过了20度,但是没要超过40度,因此状态是nc,即non-critical。
同样道理,我们将告警门限设置为 20 30 90的话,就会发现状态为cr,即critical:
1 | root@node:~# ipmitool -I open sensor thresh 'CPU2 Temp' upper 20 30 90 |
同样道理,可以将状态变成nr,只需要设置门限为20 30 30 ,即可。
检查电源模块状态
我们知道IPMI很强大,如何利用ipmitool获取到电源的实施状态的。现代的服务器,基本上都有两个电源模块,作为冗余。如何查看电源的状态信息呢,是否所有的电源模块都已启用,电源是否都通电?
方法一
通过如下指令可以获取到电源的状态信息:
1 | ipmitool sdr type "power supply" |
正常情况下电源的状态如下所示
1 | PS1 Status | C4h | ok | 10.1 | Presence detected |
如果,我们将其中一个拔掉电源插头,状态就会如下所示:
1 | PS1 Status | C4h | ok | 10.1 | Presence detected |
如果我们将其中一个的电源模块(PSU, power supply unit)直接从服务器上拔出,状态就会如下所示:
1 | PS1 Status | C4h | ok | 10.1 | Presence detected |
事实上除了上面的几种,我们可以通过
1 | ipmitool sensor get "PS1 Status" |
查看其他可能的值
1 | Sensor ID : PS1 Status (0xc4) |
方法二
从如下指令也可以获得电源模块的信息:
1 | ipmitool sensor list |
输出如下:
1 | PS1 Status | 0x1 | discrete | 0x0100| na | na | na | na | na | na |
第二列的值很有意思
- 0x01 status ok,最常见的状态
- 0x00 power supply unit not present ,即电源模块不存在,一般电源模块从服务器中拔出,状态是0x00
- 0x03 power supply off or failed,我没有遇到过这种状态,我猜是电源模块坏了的时候,会是这种状态
- 0x0b input out of range(ex. No AC input)这也是很常见的状态,把电源的插头拔掉,就会是这种状态。
这种方法比较好,个人比较推荐这种方法。
参考文献
IPMItool Sometimes Fails to Detect Power Supply Failures on Rackable Nodes