关于服务器的带外管理,之前通用的是IPMI标准。IPMI定义了服务器管理的最小集,并标准化了相关命令集合。IPMI消息采用统一格式,它的下层是透明的,可以架构在网络、串口、IPMB(I2C)、KCS、SMIC、SMBus等不同接口上。IPMI出现之后,各服务器厂商都开发了遵循IPMI的管理工具,一些特性如远程控制台、远程媒体等,使服务器的远程管理变得方便很多。
但是IPMI也有很多问题。首先是各家厂商基于IPMI标准开发的管理工具不是通用的,在混合架构的数据中心里给管理带来不便。其次,基于IPMI的管理工具通常是单点的,即只能管理本机,扩展性差。全局监控管理系统也可以通过IPMI管理各种服务器,但只能使用IPMI最小子集所提供的功能。再次,IPMI协议本身在安全性方面缺乏考虑。
所以Redfish应运而生。IPMI也在2015年后不再更新。
RedFish标准由DMTF组织维护。Redfish的设立的目标如下:
基于FSP的Power小型机也可以通过DMTF Redfish APIs来进行管理。Redfish APIs默认已激活。
下面介绍一下如何使用Redfish APIs管理Power服务器。
首先创建一个认证会话,获得X-Auto-Token和会话的URI。然后使用这个Token通过GET方法获取资源属性信息,通常返回的是一个JSON文件,可以对JSON文件进行解析得到想要的值。如果要修改资源的属性,可以用PATCH方法。所有工作完成后,登出或者终止会话。
下面用一些示例演示一下整个过程。
curl -X POST -D headers.txt https:///redfish/v1/SessionService/Sessions -k -d '{"UserName":"", "Password":""}'
ip即FSP的IP地址,port缺省是443,可省略。需要提供用户名和密码,通常是admin用户及其密码,即平时登陆ASMI的用户名密码。
成功的话,会有如下输出
{
"@odata.context": "/redfish/v1/$metadata#Session.Session",
"@odata.id": "/redfish/v1/SessionService/Sessions/0",
"@odata.type": "#Session.v1_0_2.Session",
"Description": "Remote User Session",
"Id": 0,
"Name": "User Session",
"UserName": "admin"
}
同时会在当前目录下生成headers文件,里面有X-Auth-Token,即我们后面操作要使用的验证令牌。以及Locations,即本次会话的URI,后面我们要使用这个URI登出。
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Content-Security-Policy: allow 'self'
Strict-Transport-Security: max-age=63072000
Link: http://redfish.dmtf.org/schemas/v1/Session.v1_0_2.json; rel=describedby
Content-Length: 277
Content-Type: application/json
Location: /redfish/v1/SessionService/Sessions/0
X-Auth-Token: MI1VM7WGC35JG2O4
Date: Sat, 06 Feb 2010 11:46:40 GMT
Server: lighttpd/1.4.41
curl -k -H "X-Auth-Token: MI1VM7WGC35JG2O4" -X GET https:///redfish/v1/
得到如下输出,在root下面,有Chassis,Managers,SessionService,Systems分类。Chassis是机箱传感器等信息,Managers是管理器(这里就是FSP)信息,Systems是服务器信息。具体每种类型的schema文件可以在文后参考资料中找到。
{
"@odata.context": "/redfish/v1/$metadata#ServiceRoot.ServiceRoot",
"@odata.id": "/redfish/v1",
"@odata.type": "#ServiceRoot.v1_1_0.ServiceRoot",
"Chassis": {
"@odata.id": "/redfish/v1/Chassis"
},
"Links": {
"Sessions": {
"@odata.id": "/redfish/v1/SessionService/Sessions"
}
},
"Managers": {
"@odata.id": "/redfish/v1/Managers"
},
"Name": "Root Service",
"RedfishVersion": "1.0.0",
"SessionService": {
"@odata.id": "/redfish/v1/SessionService"
},
"Systems": {
"@odata.id": "/redfish/v1/Systems"
}
}
curl -k -H "X-Auth-Token: MI1VM7WGC35JG2O4" -X GET https:///redfish/v1/Systems
输出如下,可以看到被管服务器的ID,即Server-MTM-SN的格式,如下面的Server-8247-22L-XXXXXXX(已做打码处理)
{
"@odata.context": "/redfish/v1/$metadata#ComputerSystemCollection.ComputerSystemCollection",
"@odata.id": "/redfish/v1/Systems",
"@odata.type": "#ComputerSystemCollection.ComputerSystemCollection",
"Members": [
{
"@odata.id": "/redfish/v1/Systems/Server-8247-22L-XXXXXXX"
}
],
"Members@odata.count": 1,
"Name": "System Collection"
}
curl -k -H "X-Auth-Token: MI1VM7WGC35JG2O4" -X GET https:///redfish/v1/Systems/Server-8247-22L-XXXXXXX
{
"@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem",
"@odata.id": "/redfish/v1/Systems/Server-8247-22L-XXXXXXX",
"@odata.type": "#ComputerSystem.v1_0_2.ComputerSystem",
"Actions": {
"#ComputerSystem.Reset": {
"ResetType@Redfish.AllowableValues": [
"On",
"ForceOff",
"GracefulShutdown",
"GracefulRestart"
],
"target": "/redfish/v1/Systems/Server-8247-22L-XXXXXXX/Actions/ComputerSystem.Reset"
}
},
"Description": "POWER Server",
"Id": "Server-8247-22L-XXXXXXX",
"Links": {
"ManagedBy": [
{
"@odata.id": "/redfish/v1/Managers/V527f34*2e31f50"
},
{
"@odata.id": "/redfish/v1/Managers/V2e7f47*e244454"
},
{
"@odata.id": "/redfish/v1/Managers/V8b7f3c*6e61158"
},
{
"@odata.id": "/redfish/v1/Managers/V2c7f60*0e1165f"
},
{
"@odata.id": "/redfish/v1/Managers/V807f24*7d64b5f"
},
{
"@odata.id": "/redfish/v1/Managers/BMC"
}
]
},
"Manufacturer": "IBM",
"Model": "8247-22L",
"Name": "SVRP8-S822L-07-SNXXXXXXX",
"Oem": {
"IBMEnterpriseComputerSystem": {
"@odata.context": "/redfish/v1/$metadata#IBMEnterpriseComputerSystem.IBMEnterpriseComputerSystem",
"@odata.type": "#IBMEnterpriseComputerSystem.v1_0_0.IBMEnterpriseComputerSystem",
"AutoPowerRestart": "Disabled",
"IBMEnterpriseEnergyScale": {
"@odata.id": "/redfish/v1/Systems/Server-8247-22L-XXXXXXX/EnergyScale"
},
"PowerRestartControl": {
"BootMode": "BootToSMSMenu",
"BootSide": "Temporary",
"FirmwareStartPolicy": "Running",
"OperatingMode": "Manual",
"PartitionMode": "A",
"PowerOffPolicy": "StayOn"
},
"PredictiveDynamicMemoryDeallocation": "Enabled"
}
},
"Processors": {
"@odata.id": "/redfish/v1/Systems/Server-8247-22L-XXXXXXX/Processors"
},
"SerialNumber": "XXXXXXX",
"Status": {
"Health": "OK",
"HealthRollUp": "OK",
"State": "Enabled"
},
"UUID": "0004AC1A8F94"
}
类似的,我们可以通过https:///redfish/v1/Chassis 获取机箱ID,然后再获取机箱的电源信息(ID已打码)
curl -k -H "X-Auth-Token: MI1VM7WGC35JG2O4" -X GET https:///redfish/v1/Chassis/YYYYYYYYYY/Power
输出如下:
{
"@odata.context": "/redfish/v1/$metadata#Power.Power",
"@odata.id": "/redfish/v1/Chassis/YYYYYYYYYY/Power",
"@odata.type": "#Power.v1_2_0.Power",
"Id": "Power",
"Manufacturer": "IBM",
"Name": "Chassis Power",
"PowerSupplies": [
{
"LastPowerOutputWatts": "1430",
"LineInputVoltage": "322",
"MemberId": "1000",
"Oem": {
"IBMEnterprisePower": {
"Location": {
"Info": "U78CB.001.WZS01SJ-E1",
"InfoFormat": "UMTMS"
},
"SKU": " 94Y8156"
}
},
"PowerSupplyType": "AC",
"SerialNumber": "YK108145A1GW",
"Status": {
"Health": "OK",
"State": "Enabled"
},
"description": "Modular PowerSupply"
}
(略)
]
}
跟上面类似的,获取机箱风扇信息
curl -k -H "X-Auth-Token: MI1VM7WGC35JG2O4" -X GET https:///redfish/v1/Chassis/YYYYYYYYYY/Thermal
输出如下:
{
"@odata.context": "/redfish/v1/$metadata#Thermal.Thermal",
"@odata.id": "/redfish/v1/Chassis/YYYYYYYYYY/Thermal",
"@odata.type": "#Thermal.v1_1_0.Thermal",
"Fans": [
{
"MaxReadingRange": "11790",
"MemberId": "2100",
"MinReadingRange": "0",
"Oem": {
"IBMEnterpriseThermal": {
"Location": {
"Info": "U78CB.001.WZS01SJ-A1",
"InfoFormat": "UMTMS"
},
"SKU": "00FV726"
}
},
"Reading": "8940",
"ReadingUnits": "RPM",
"SerialNumber": "YL12JP4600A1",
"Status": {
"Health": "OK",
"State": "Enabled"
}
}
(略)
],
"Id": "Thermal",
"Manufacturer": "IBM",
"Name": "Chassis Thermal"
}
curl -k -H "X-Auth-Token: MI1VM7WGC35JG2O4" -X DELETE https:///redfish/v1/SessionService/Sessions/0;
通过以上实验和介绍,能够看出使用Redfish管理Power服务器非常简单方便。Restfull APIs的方式也很容易跟实际IT环境中的其他管理工具进行对接,如Zabbix监控系统,通过开源的Redfish模板,可以很方便的将Power服务器的监控项加入到Zabbix系统中,在Zabbix中实现对Power服务器硬件的监控和管理。
注:因实验条件限制,未验证POST方法,如修改服务器设置,开关机等操作。
RedFish官网: https://redfish.dmtf.org/
Red白皮书: https://www.dmtf.org/sites/default/files/DSP2044%20Redfish%20%E7%99%BD%E7%9A%AE%E4%B9%A6%201.0.0.pdf
RedFish Spec: https://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.10.0.pdf
Power服务器redfish接口:https://www.ibm.com/docs/en/power9?topic=icmcti-managing-power-systems-servers-by-using-dmtf-redfish-apis
Power服务器redfish schema文件:http://public.dhe.ibm.com/systems/power/redfish/schemas/v1/
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞3
添加新评论0 条评论