近期遇到了一个故障,一直在用的开发环境突然无法访问,登录服务器管理控制台发现机器温度竟然达到了50~70°,赶到机房发现是空调罢工导致服务器温度过高宕机了,一番紧急处置后才得以恢复。
受感于这个故障,也来回顾一下硬件运维相关技术,虽然传统的技术没有新意,但是毕竟实用,在日常工作里还是要必须掌握的,今天就来讨论讨论这个。
IPMI硬件管理
IPMI是一个开放的标准,是用于管理基于 Intel架构服务器的工业标准,由英特尔、HP、NEC、DELL等公司制定。用户可以利用IPMI监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。
2004年Intel发表了IPMI 2.0的规格,能够向下相容IPMI 1.0、1.5,新增了Console Redirection,并可以通过以太网远程管理服务器。
IPMI主要的功能包括:
- 硬件监控(模块状态、传感器)
- 远程控制(远程开机、关机、重启,Console)
- 日志(硬件运行日志)
- 配置BIOS、RAID(基本不会用到~)
- 列出所有相关硬件等
既然说到IPMI,有个工具是必备的,那就是ipmitool
ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 2.0规范,通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能。
ipmitool的功能很多,这次我们遇到了温度的问题,那通过ipmitool同样可以检查硬件传感器的温度数据,它大概是这样子的:
或者详细点:
另外在自动化运维方面,也可以通过脚本来实现一些功能,这里部分厂商提供的接口并不一致,拿HP的ILO举例,它支持图形界面、ssh、perl等多种方式,也可以通过python调用第三方package来快速查询和配置:
# -*- coding: utf-8 -*-
import pprint
import hpilo
ilo = hpilo.Ilo("192.168.1.1", "admin", "password")
health_summary = ilo.get_embedded_health()['health_at_a_glance']
pprint.pprint(health_summary)
[root@xxx]# python3 ilo.py
{'bios_hardware': {'status': 'Degraded'},
'fans': {'redundancy': 'Redundant', 'status': 'OK'},
'memory': {'status': 'Degraded'},
'network': {'status': 'OK'},
'power_supplies': {'redundancy': 'Not Redundant', 'status': 'OK'},
'processor': {'status': 'OK'},
'storage': {'status': 'Degraded'},
'temperature': {'status': 'OK'}}
新一代技术:redfish
说到这里不得不提一下,当前主流厂商的服务器在支持ipmi的同时,基本上对新一代的redfish技术提供了支持,redfish可以简单理解为ipmi的替代技术,它在安全性、扩展性和数据界面上有了极大改进。
Redfish 规范的第一个版本于2015年8月由分布式管理任务组( Distributed Management Task Force,DMTF )发布,是一个开放的行业标准规范,为可扩展平台硬件提供简单,现代和安全的管理功能。
Redfish是一种基于HTTPs服务的管理标准,利用RESTful接口实现设备管理,请求或结果的返回都以JSON格式进行,对运维开发提供了友好支持。
下图为DMTF组织定义的Redfish资源示意图,可以看到3大分支——Systems(系统的逻辑视图) 、Chassis(系统的物理视图)和 Managers(BMC功能)。
Redfish中的URI符合RFC 3986 规范,URL示例:https://ip_address/redfish/v1/Systems/1
可以通过postman来简单操作一下:
总结
底层硬件技术可以用之于监控功能完善、应急和运维操作等场景,灵活解决工作中遇到的技术问题。
本文暂时没有评论,来添加一个吧(●'◡'●)