铁打的老人-硬件监控
通常情况下,在接管新服务器的时候,首先要想到的是怎么管理它,如果服务器托管在IDC机房,大部分的时间你是无法实地监测的,只能通过网络进行硬件监控;如果服务器放在自己公司内部的机房,你不仅可以主动巡检,还可以进行远程监控,双管齐下。这就是硬件监控的两种方式:
1. 机房巡检(IDC运维工程师、机房内部的管理人员)
2. 远程监控(IPMI、SNMP)
第一种方式:
机房巡检,一般是由IDC公司统一进行管理。无特殊情况,用户几乎不会到IDC查看硬件状态,除非该机房温度湿度不在可控范围内,机房管理人员不负责,硬件总出故障。
第二种方式:
远程监控,很多硬件厂商提供了远程控制卡。如Dell的IDRAC,HP的ILO,IBM的IMM等,这些都可以使用IPMI进行监控,如果设备没有这种接口怎么办,可以使用SNMP协议进行监控,像部分路由器,交换机等设备。
为了方便学习,有关IDRAC、ILO、IMM以及IPMI用户指南已经整理好,点击获取(密码:exzg)
一、IPMI监控
IPMI ( Intelligent Platform Management Interface,智能平台管理接口)是由戴尔、惠普、英特尔和NEC四家公司联合宣布推出的一套跨平台管理和监控服务器工作状态的接口规范。通过IPMI规范,系统管理人员可以有效的对服务器内部的电源、风扇、CPU、内存、硬盘等各个部件的工作状态进行监控。其独特之处在于,IPMI规范采用了基板管理控制器BMC(Baseboard Management Controller),在完全单独的芯片上实现,独立于CPU、BIOS和操作系统(IPMI介绍摘选自:基于IPMI的智能集中监控系统的设计与实现)。
当前IPMI版本已经更新到V2.0,下一代IPMI将要更新的主要功能如下:
1. 使用新的身份验证和加密算法增强远程管理访问的安全性
2. 串行LAN支持与基于串行的应用程序、BIOS和操作系统进行远程交互
3. SMBus系统接口为低成本管理控制器提供低引脚数连接
4. IPMI有效负载为LAN上创兴和OEM增值重定向功能提供基础措施
更多详细信息请查阅:英特尔官网
IPMI功能:
1. 远程控制电源(status|on|off|cycle|reset|diag|soft)
2. 串口的IP映射(Sol)
3. 支持健康关机
4. 机箱环境监控(温度、风扇转速、CPU电压)
5. 远程设备身份LED控制
6. 系统事件日志(SEL)
7. 平台事件跟踪
8. 数据记录
9. 虚拟KVM会话
10. 虚拟媒体
使用IPMI监控硬件的前提是硬件必须提供远程监控接口,系统安装管理工具和驱动,IPMI项目首页请点击。在CentOS上安装IPMI工具,系统环境:CentOS7-x86_64
[root@localhost ~]# yum install -y OpenIPMI ipmitool
[root@localhost ~]# systemctl start ipmi
查看ipmitool帮助信息
[root@localhost ~]# ipmitool --help
使用ipmi的一般步骤
lan:用于远程访问
open:用于本地访问(default)
- 设置远程访问的用户和密码,所有被监控的设备需要配置
#查看BMC的用户列表
ipmitool user list 1
#对BMC的1号用户设置用户名user1
ipmitool user set name 1 user1
#对BMC的1号用户设置密码123456
ipmitool user set password 1 123456
- 配置BMC地址,所有被监控的设备需要配置
#设置本地BMC地址为静态,才能设置IP
ipmitool -I open lan set 1 ipsrc static
#设置本地BMC的IP地址
ipmitool -I open lan set 1 ipaddr 10.0.1.50
#设置子网掩码
ipmitool -I open lan set 1 netmask 255.255.255.0
#设置网关,如果在同一路由可不设
ipmitool -I open lan set 1 defgw ipaddr 10.0.1.254
#开启网络访问
ipmitool lan set 1 access on
接下来就可以使用ipmitool工具,从监控端远程连接到被控端进行管理了,如查看该主机的电源状态:
ipmitool -I lan -H 10.0.1.50 -U user1 -P 123456 chassis power status
常用功能命令整理:
(1) 改变服务器引导方式
#不改变引导方式
ipmitool -I lan -H ServerAddr -U root -P passwd chassis bootdev none
#改变引导方式为pxe
ipmitool -I lan -H ServerAddr -U root -P passwd chassis bootdev pxe
#改变引导方式为disk
ipmitool -I lan -H ServerAddr -U root -P passwd chassis bootdev disk
#改变引导方式为安全模式
ipmitool -I lan -H ServerAddr -U root -P passwd chassis bootdev safe
#改变引导方式为诊断分区
ipmitool -I lan -H ServerAddr -U root -P passwd chassis bootdev diag
#改变引导方式为光驱启动
ipmitool -I lan -H ServerAddr -U root -P passwd chassis bootdev cdrom
#启动进入bios设置
ipmitool -I lan -H ServerAddr -U root -P passwd chassis bootdev bios
(2) 服务器电源管理
#硬关机,直接切断电源
ipmitool -I lan -H ServerAddr -U root -P passwd chassis power off
#软关机,轻按一下开机扭
ipmitool -I lan -H ServerAddr -U root -P passwd chassis power soft
#硬开机
ipmitool -I lan -H ServerAddr -U root -P passwd chassis power on
#硬重启
ipmitool -I lan -H ServerAddr -U root -P passwd chassis power reset
#软重启
ipmitool -I lan -H ServerAddr -U root -P passwd chassis power cycle
#获取当前电源状态
ipmitool -I lan -H ServerAddr -U root -P passwd chassis power status
(3) 传感器监控
#列出所有的远程传感器
ipmitool -I lan -H ServerAddr -U root -P passwd sdr list
#查看指定传感器信息
ipmitool -I lan -H ServerAddr -U root -P passwd sdr get '传感器名'
#列出传感器类型
ipmitool -I lan -H ServerAddr -U root -P passwd sdr type list
#查看温度传感器信息
ipmitool -I lan -H ServerAddr -U root -P passwd sdr type Temperature
#查看风扇传感器信息
ipmitool -I lan -H ServerAddr -U root -P passwd sdr type Fan
#查看电源传感器信息
ipmitool -I lan -H ServerAddr -U root -P passwd sdr type 'Power Supply'
与IPMI有关且建议阅读的文章如下:
1. 使用ipmitool实现Linux系统下对服务器的ipmi管理
2. 基于Zabbix IPMI监控服务器硬件状况
3. 在CentOS/RHEL使用IPMI
4. Linux上使用ipmitool常用的命令
5. BMC之ipmitool命令收集
6. IPMI笔记
7. IPMI介绍和使用
注:文章中的部分内容参考上述文章
二、SNMP监控
1. SNMP学习总结(一)——Snmp的基本概念
2. SNMP协议详解
这两篇文章写得很好,对于理解SNMP协议很有帮助,阅读之后对MIB一定要了解,知道MIB是什么,OID是什么,然后在进行下面的步骤。
不同厂商的OID:http://www.alvestrand.no/objectid/1.3.6.1.4.1.html
Linux系统OID:https://www.xuebuyuan.com/2110387.html
安装SNMP:
[root@localhost ~]# yum install -y net-snmp net-snmp-libs net-snmp-utils
配置SNMP:
#修改配置文件/etc/snmp/snmpd.conf内容如下,配置只是测试用,生产环境需要进行安全优化
[root@localhost ~]# cat /etc/snmp/snmpd.conf |grep ^[a-z]
com2sec admin default admin
group admin v2c admin
view systemview included .1.3.6.1.2.1.2
view systemview included .1.3.6.1.2.1.3
view systemview included .1.3.6.1.2.1.4
view all included .1
access admin "" any noauth exact all none none
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes
启动SNMP:
[root@localhost ~]# systemctl start snmpd
# 查看监听端口,默认监听udp 161端口
[root@localhost ~]# netstat -lntup|grep 161
udp 0 0 0.0.0.0:161 0.0.0.0:* 3910/snmpd
测试OID:
# 内存使用(.1.3.6.1.4):
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
snmpget命令:根据OID获取对应的值,-v版本,-c团体名称
#查看系统总内存
[root@localhost ~]# snmpget -v2c -c admin 10.0.1.150 .1.3.6.1.4.1.2021.4.5.0
snmpwalk命令使用:获取父节点下有哪些子节点,-v版本,-c团体名称
#删除了.1.3.6.1.4.1.2021.4.5.0后面的5.0,查看系统内存信息
[root@localhost ~]# snmpwalk -v2c -c admin 10.0.1.150 .1.3.6.1.4.1.2021.4
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 2097148 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 2097148 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 2033552 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 1609332 kB
UCD-SNMP-MIB::memTotalFree.0 = INTEGER: 3706480 kB
UCD-SNMP-MIB::memMinimumSwap.0 = INTEGER: 16000 kB
UCD-SNMP-MIB::memShared.0 = INTEGER: 8820 kB
UCD-SNMP-MIB::memBuffer.0 = INTEGER: 948 kB
UCD-SNMP-MIB::memCached.0 = INTEGER: 172164 kB
UCD-SNMP-MIB::memSwapError.0 = INTEGER: noError(0)
UCD-SNMP-MIB::memSwapErrorMsg.0 = STRING:
文档使用《小书匠》编辑,用起来还挺舒服的,建议大家试一试。
作 者:天山一朵花
个人博客:运维愚者 | 一个关注IT运维的愚人
新浪微博:Clover丶K心