Intelligent Platform Management Interface (IPMI) - технология, позволяющая мониторить и управлять Solaris-сервером (включать, выключать, перегружать, снимать показания сенсоров). В Solaris для доступа к удаленному или локальному интерфейсу IPMI можно воспользоваться утилитой ipmitool.
Вот примеры вывода статуса сервера с поддержкой IPMI с помощью ipmitool:
$ /usr/sfw/bin/ipmitool -v chassis status
--
BMC req.fn : 0x0
BMC req.lun : 0x0
BMC req.cmd : 0x1
BMC req.datalength : 0x0
BMC req.data :
–
System Power : on
Power Overload : false
Power Interlock : inactive
Main Power Fault : false
Power Control Fault : false
...
Кроме высокоуровневой информации, можно использовать опции "sensor" и "sdr" для вывода статуса для каждого устройства сервера:
$ /usr/sfw/bin/ipmitool sensor
ambienttemp | 21.600 | degrees C | ok | na | na | na | 34.800 bulk.v12-0-s0 | 12.120 | Volts | ok | na | 10.200 | na | na
bulk.v3_3-s0 | 3.360 | Volts | ok | na | 3.000 | na | na
bulk.v3_3-s5 | 3.240 | Volts | ok | na | 3.000 | na | na
bulk.v5-s0 | 5.040 | Volts | ok | na | 4.500 | na | na
bulk.v5-s5 | 5.040 | Volts | ok | na | 4.500 | na | na
cpu0.dietemp | 34.800 | degrees C | ok | na | na | na | 70.200
cpu0.memtemp | 25.800 | degrees C | ok | na | na | na | 49.800
...
$ /usr/sfw/bin/ipmitool sdr list all
NWS BMC | Dynamic MC @ 20h | ok
ambienttemp | 20.40 degrees C | ok
bulk.v12-0-s0 | 12.06 Volts | ok
bulk.v3_3-s0 | 3.36 Volts | ok
bulk.v3_3-s5 | 3.24 Volts | ok
...
Также можно вывести информацию о Field Replaceable Units (FRU):
$ /usr/sfw/bin/ipmitool fru
FRU Device Description : Builtin FRU Device (ID 0)
Chassis Type : Rack Mount Chassis
Chassis Part Number : 602-2844-01
Chassis Serial : XG051642013
Board Mfg : S-SCI448
Board Product : NWSBIDff
...
Для более полной информации об опциях утилиты см. man ipmitool. Крис Мэй написал скрипт на ruby для мониторинга статуса сервера, вывод которого он передает позже nagios:
#!/opt/csw/bin/ruby # isn't there a built-in for this?
def higher_of(a,b) if (a > b): return a else return b end end
$ok=0 $warn=1 $crit=2
$status_names = {$ok=>:ok,$warn=>:warn,$crit=>:critical}
def parse_status(sensor)
ipmitool = '/usr/sfw/bin/ipmitool -I bmc -U root sdr type' status = $ok;
temp=`#{ipmitool} #{sensor}` temp.each_line do |line| #puts line line =~ /cr/ && status = $crit; line =~ /nr/ && status = $crit; line =~ /nc/ && status = higher_of(status, $warn) # other matches (ns, ok, ...) are deemed OK end return status end
result = $ok info_line = "" sensors = ['temperature','fan','voltage'] sensors.each do | sensor| #puts "checking #{sensor}, currently result is #{result}" st = parse_status(sensor) info_line ="#{info_line} #{sensor} #{$status_names[st]}" result=higher_of(result, st) end info_line="#{$status_names[result]}: #{info_line}" puts info_line exit result
Источник: http://www.sunhelp.ru/archives/157-Ispolzuem_ipmitool_na_Solaris.html |