IPMI介绍
智能平台管理界面(IPMI,Intelligent Platform Management Interface)是管理基于 Intel® 结构的企业系统中所使用的外围设备采用的一种工业标准,用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。该标准由美国英特尔、惠普(Hewlett-Packard)、NEC、美国戴尔电脑和SuperMicro等公司制定。新的版本是IPMI2.0(http://www.intel.com/design/servers/ipmi/)。
新版本的IPMI可以通过串口、Modem以及Lan等远程环境管理服务器系统(包括远程开关机),同时在系统发生错误时能自动发出警告。要对服务器进行IPMI管理,需要被监控的系统具有支持IPMI的硬件设备。如果服务器具有底板管理控制器 (Baseboard Management Controller ,BMC),并且支持IPMI规范,则通过BMC与主机板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超出其预置阈值时发出警报和日志事件。BMC具有以下功能:
1.        通过系统的串行端口进行访问
2.        故障日志记录和 SNMP 警报发送
3.        访问系统事件日志 (System Event Log ,SEL) 和传感器状况
4.        控制包括开机和关机
5.        独立于系统电源或工作状态的支持
6.        用于系统设置、基于文本公用程序和操作系统控制台的文本控制台重定向
7.        使用 LAN访问 Red Hat® Enterprise Linux 串行控制台界面

IPMI应用
所举应用都基于以下平台:
        服务器:超毅
        主板: TyanS5353
        服务器监控卡( SMDC,Server Management Daughter Card):M3291
        Ipmitool版本: ipmitool version 1.8.8
        Ipmitool版本: ipmiutil-1.7.4-1
        OpenIPMI版本: OpenIPMI-2.0.7


IPMI可以通过本地和远程两种方式来获取被监控服务器的监测信息,两种方式都需要相关的硬件,但是软件的安装和软件命令使用稍微有所不同。
1 软件安装
1.1本地获取软件安装
通过本地方式获取服务器相应状态信息,需要安装ipmi驱动程序和用于获取信息的软件。驱动程序使用OpenIPMI, ipmi工具软件可以安装ipmitool或者ipmiutil,或者freeipmi。软件下载网址为:
OpenIPMI:http://openipmi.sourceforge.net/
Ipmitool: http://ipmitool.sourceforge.net/
http://ipmitool.sourceforge.net/manpage.html
ipmiutil:  http://ipmiutil.sourceforge.net/
1.2远程获取软件安装
远程监控只需要在监控客户端上安装用于获取信息的软件:ipmitool、ipmiutil或者reeipmi即可,而不需要在服务其上安装任何工具。
2 服务器监控信息获取
2.1本地获取服务器监控信息
在获取本地服务器相关的监控信息之前,需要启动相应的驱动模块,可以通过以下两种命令启动驱动:
/etc/init.d/ipmi start
或者通过以下命令:
modprobe ipmi_msghandler
modprobe ipmi_devintf
modprobe ipmi_si
modprobe ipmi_poweroff
modprobe ipmi_watchdog

启动ipmi驱动后,通过cat /proc/devices | grep ipmidev获得设备号,我得到的设备号是253,用mknod -m 600 /dev/ipmi0 c 253 0 建立文件索引点。
然后就可以在本地服务器上运行各种ipmi工具获取相应的服务器信息了。
        以下所有的命令都是我用到的,还有更多命令没有涉及,可以查看相应的帮助文档来获得所有命令的用法。
2.1.1 使用 ipmitool本地获取信息
Ipmitool本地监控使用命令:ipmitool –I open command,其中-I open表示使用OpenIPMI接口,command有以下项:
a)        raw:发送一个原始的IPMI请求,并且打印回复信息。
b)        Lan:配置网络(lan)信道(channel)
c)        chassis :查看底盘的状态和设置电源
d)        event:向BMC发送一个已经定义的事件(event),可用于测试配置的SNMP是否成功
e)        mc:  查看MC(Management Contollor)状态和各种允许的项
f)        sdr:打印传感器仓库中的所有监控项和从传感器读取到的值。
g)        Sensor:打印详细的传感器信息。
h)        Fru:打印内建的Field Replaceable Unit (FRU)信息
i)        Sel: 打印 System Event Log (SEL)      
j)        Pef: 设置 Platform Event Filtering (PEF),事件过滤平台用于在监控系统发现有event时候,用PEF中的策略进行事件过滤,然后看是否需要报警。
k)        Sol/isol:用于配置通过串口的Lan进行监控
l)        User:设置BMC中用户的信息 。
m)        Channel:设置Management Controller信道。

Ipmitool –I open sensor list命令可以获取传感器中的各种监测值和该值的监测阈值,包括(CPU温度,电压,风扇转速,电源调制模块温度,电源电压等信息)
Ipmitool –I open sensor get “CPU0Temp”可以获取ID为CPU0Temp监测值,CPU0Temp是sensor的ID,服务器不同,ID表示也不同。
Ipmitool –I open sensor thresh 设置ID值等于id的监测项的各种限制值。
Ipmitool –I open chassis status查看底盘状态,其中包括了底盘电源信息,底盘工作状态等
Ipmitool –I open chassis restart_cause查看上次系统重启的原因
Ipmitool –I open chassis  policy list 查看支持的底盘电源相关策略。
Ipmitool –I open chassis power on启动底盘,用此命令可以远程开机
Ipmitool –I open chassis power off关闭底盘,用此命令可以远程开机
Ipmitool –I open chassis power reset实现硬重启,用此命令可以远程开机
Ipmi还可以设置系统启动boot的设备,具体见ipmitool帮助文档。
Ipmitool –I open mc reset 使BMC重新硬启动
Ipmitool –I open mc info 查看BMC硬件信息
Ipmitool –I open mc getenables 列出BMC所有允许的选项
Ipmitool –I open mc setenables
(但我的服务器有问题,该项读取不到)
备注:
PEF由BMC厂商的FIRMWARE设置,ipmitool(V1.8.8)不能进行设置,也可以使用ipmiutil来进行初始设置。

2.1.2 使用 ipmiutil本地获取信息
Ipmiutil安装完成后,会包含以下可执行命令:
•        alarms –显示和设置Telco alarms报警(LED显示和延迟)
•        bmchealth – 测试BMC是否工作正常。
•        fruconfig – 显示FRU的产品信息,写入有用信息
•        getevent – 接收一个IPMI event,并显示。
•        hwreset – 用于使 firmware 硬重新启动或者关掉系统
•        pefconfig – 用于显示和配置LAN端口,配置Platform Event Filter 表,来通过firmare event产生BMC Lan提示
•        sensor – 显示Sensor Data Records,值和阈值。
•        showsel – 显示System Event Log记录。
•        tmconfig – 显示和配置BMC串口。
•        wdt – 显示和设置看门狗时间.
以上命令种中最为常用的是sensor命令和pefconfig命令。
使用sensor命令可以获取各种监测信息。使用pefconfig命令设置BMC,使得BMC可以在系统有event时候,进行报警。
Sensor  命令显示服务器状态信息。
Pefconfig –e命令用于设置BMC硬件,该命令将从操作系统收集相应的信息,并对bmc进行设置,使得BMC能够在有event时候报警(alert)。
Pefconfig –d命令将设置bmc不报警。
2.2远程获取服务器监控信息
远程获取服务器监控信息时,需要系统硬件支持ipmiV1.5和IPMIV2.0。获取信息时,不需要在服务器上安装其他软件,只需要在监控的客户端上安装ipmi工具软件,如ipmitool、ipmiutil或者freeipmi,并需要在相应命令中加入远端服务器的名字或者地址。Ipmitool和ipmiutil可以通过LAN远程监控系统,同时BMC中保存有一序列用户名和密码,通过LAN进行远端访问需要用户名和密码。
2.2.1使用 ipmitool获取远程服务器信息
Ipmitool 命令需要通过相应的interface来访问BMC,在本地获取信息时候采用的是-I open,即为OpenIPMI接口,IPMItool命令包含的接口有open、lan、lanplus。其中open是指的是OpenIPMI与BMC通信,Lan是通过Ethernet LAN网用IPV4的udp协议与BMC通信。UDP的数据段包含了IPMI request/resoponse消息,消息具有一个IPMI session 头和RMCP 头。IPMI使用Remote Management Control Protocol (RMCP) 版本1支持操作系统关闭(pre-OS和OS-absent),RMCP把把数据发送到UDP的623端口。
象lan接口一样,lanplus同样使用Ethernet LAN 的UDP协议与BMC通信,但是lanplus使用RMCP+协议(在IPMIV20中描述)来同新,RMCP+允许使用改经的认证方式和数据完整性检查。Open端口用于本地监控系统使用的;Lan/lanplus通过网络进行远程监控。
远程获取服务器监控信息时,需要加上远程服务器的地址。使用以下的命令格式:
ipmitool -H 10.6.77.249 -U root -P changeme -I lan command。其中-H表示后面跟的是服务器的地址,-U表示后面跟着用户名,-P表示后面跟着用户密码,command与本地获取信息相同。
2.2.2使用 ipmiutil获取远程服务器信息
Ipmiutil的sensor命令格式如下:
Sensor -N nodename –U user –R passwd ,
其中-N后面跟的是被监控服务器名字,-U后是用户名,-R后是用户密码。
Pefconfig -e -N nodename –U user –R passwd命令用于设置BMC硬件,该命令将从操作系统收集相应的信息,并对bmc进行设置,使得BMC能够在有event时候报警。
Pefconfig -d -N nodename –U user –R passwd将不允许报警