目录
- 1 ipmi export安装配置
- 1.1 ipmi exporter简介
- 1.2 安装
- 1.2 创建yaml文件
- 1.3 systemd启动配置 ipmi_exporter.service
- 1.4 启动 ipmi_exporter 服务
- 1.5 Prometheus配置
- 创建target:
- 修改Prometheus配置文件
- 1.6 Grafana配置
- 1.7 IPMI说明
- 1、IPMI
- 2、ipmitool
- 远程电源管理
- 远程引导
- 读取系统状态类
- 系统日志类
- 启动设置类
- 系统相关的命令
- 网络接口相关命令
- 通道相关命令
- 看门狗相关命令
- 用户管理相关命令
1 ipmi export安装配置
1.1 ipmi exporter简介
ipmi exporter是用来收集物理机信息的一个exporter,有两种收集方式,一种是安装在Prometheus server上,来进行远程收集,并把数据发送给Prometheus;另一种是安装在远程物理机上,收集单台服务器的信息发送给Prometheus。
前面提到使用 vmware exporter 收集VMware Vsphere的信息,主要是收集Vsphere上创建的虚拟机的信息等相关信息。如果想要监控 Vsphere 所在物理机是否宕机,则需要使用 impi exporter来监控
参考文档:
https://github.com/srkaviani/prometheus_exporters/tree/main/ipmi_exporter
https://github.com/prometheus-community/ipmi_exporter/tree/master
https://github.com/prometheus-community/ipmi_exporter/
ipmi exporter下载:https://github.com/prometheus-community/ipmi_exporter/releases
freeipmi参数文档:https://github.com/elitak/freeipmi
1.2 安装
注意:
- 1.此方法的ipmi exporter是安装在Prometheus server所在服务器上,来收集远程物理机的ipmi信息的
- 2.此方法依赖freeipmi来收集ipmi信息
环境:
- freeipmi:1.6.9
- go:1.11.5(1.81未测试)
- ipmi exporter:1.6.1(链接:https://github.com/prometheus-community/ipmi_exporter/releases/download/v1.6.1/ipmi_exporter-1.6.1.linux-amd64.tar.gz )
# 安装
# centos安装
# 安装freeipmi
yum -y install gcc libgcrypt-devel
wget https://ftp.gnu.org/gnu/freeipmi/freeipmi-1.6.9.tar.gz
tar -xvf freeipmi-1.6.9.tar.gz
cd freeipmi-1.6.9/
./configure
make
make install
# 建议安装
yum -y install ipmitoolvim /etc/profile
export FREEIPMI_PATH=/usr/local/freeipmi/
export FREEIPMI_BIN=$FREEIPMI_PATH/sbin/
export PATH=$PATH:$FREEIPMI_BIN
source /etc/profile# Ubuntu安装
sudo find / -name freeipmi|xargs rm -rf
apt-get remove freeipmi
sudo dpkg --get-selections | grep freeipmi
sudo apt-get --purge remove freeipmi
# 安装freeipmi
sudo apt update
sudo apt -y install build-essential libgcrypt-dev
# 注意:Ubuntu22.04不使用libgcrypt11-dev,而是用libgcrypt-dev
# 不建议使用apt安装:sudo apt -y install freeipmi
wget -P /usr/local/src/ https://ftp.gnu.org/gnu/freeipmi/freeipmi-1.6.9.tar.gz
cd /usr/local/src/
tar -xvf freeipmi-1.6.9.tar.gz
cd freeipmi-1.6.9/
./configure --prefix=/usr/local/freeipmi
make
make install
# 建议安装:
apt -y install ipmitool# go环境安装
wget -c https://storage.googleapis.com/golang/go1.11.5.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.11.5.linux-amd64.tar.gz # centos配置环境变量
vim /etc/profile.d/go.sh
export PATH=$PATH:/usr/local/go/bin
source /etc/profile.d/go.sh# Ubuntu配置环境变量
vim ~/.bashrc
export FREEIPMI_PATH=/usr/local/freeipmi
export PATH=$PATH:$FREEIPMI_PATH/sbin:/usr/local/go/bin
# 刷新使环境变量生效
source ~/.bashrc# ipmi exporter安装
wget -P /usr/local/src/ https://github.com/prometheus-community/ipmi_exporter/releases/download/v1.6.1/ipmi_exporter-1.6.1.linux-amd64.tar.gz
cd /usr/local/src/
tar -zxf ipmi_exporter-1.6.1.linux-amd64.tar.gz
mv ipmi_exporter-1.6.1.linux-amd64 /usr/local/ipmi_exporter# freeipmi使用源码包安装后,可以做的测试:
ipmimonitoring -h xx.xx.xx.xx -u xxxx -p xxxx -a STRAIGHT_PASSWORD_KEY -l admin -D LAN_2_0
ipmimonitoring -h xx.xx.xx.xx -u xxxx -P -a STRAIGHT_PASSWORD_KEY -l admin -D LAN_2_0
bmc-info -h xx.xx.xx.xx -u xxxx -p xxxx -a STRAIGHT_PASSWORD_KEY -l admin -D LAN_2_0ipmitool -I lanplus -H xx.xx.xx.xx -U xxxx -P xxxx sensor get "CPU1 DTS"
ipmitool -I lanplus -H xx.xx.xx.xx -U xxxx -P xxxx sol info
ipmitool -I lanplus -H xx.xx.xx.xx -U xxxx -P xxxx dcmi power reading
freeipmi参数内容可参考文档:https://www.gnu.org/software/freeipmi/manpages/man5/freeipmi.conf.5.html
freeipmi的参数说明(不包括ipmitool,这些参数都可以
在/usr/local/freeipmi/etc/freeipmi/freeipmi.conf文件中设置):
- -h:远程主机IP
- -u:用户名
- -p:密码
- -P:回车后输入,不需要执行写在命令行里面
- -a:输入密码的类型,支持:None、STRAIGHT_PASSWORD_KEY(输入正常的密码,无加密类型)、MD5、MD2
- -l:权限级别,支持:USER, OPERATOR, ADMIN
- -D:指定要使用的驱动程序类型。 当前可用的带外驱动程序是 LAN 和 LAN_2_0,它们 分别执行 IPMI 1.5 和 IPMI 2.0。当前可用的 带内驱动程序是KCS,SSIF,OPENIPMI,SUNMC和INTELDCMI。
1.2 创建yaml文件
官方文档ipmi_remote.yml地址:https://github.com/srkaviani/prometheus_exporters/blob/main/ipmi_exporter/ipmi_remote.yml
vim /usr/local/ipmi_exporter/ipmi_remote.yml
# 根据需要进行修改
modules:default:user: "xxxx"pass: "xxxx"driver: "LAN_2_0"privilege: "admin"timeout: 10000collectors:- bmc- ipmi- chassisexclude_sensor_ids:- 2- 29- 32- 50- 52- 55dcmi:# Use these settings when scraped with module=dcmi.user: "xxxx"pass: "xxxx"privilege: "admin"driver: "LAN_2_0"collectors:- dcmithatspecialhost:# Use these settings when scraped with module=thatspecialhost.user: "xxxx"pass: "xxxx"privilege: "admin"driver: "LAN"collectors:- ipmi- selworkaround_flags:- discretereadingcustom_args:ipmi:- "--bridge-sensors"advanced:# Use these settings when scraped with module=advanced.user: "xxxx"pass: "xxxx"privilege: "admin"driver: "LAN"collectors:- ipmi- selcollector_cmd:ipmi: sudosel: sudocustom_args:ipmi:- "ipmimonitoring"sel:- "ipmi-sel"# 使用上述内容即可,下面的可以进行参考
modules:default:user: "xxxx"pass: "xxxx"privilege: "admin"driver: "LAN_2_0"172.170.240.1:user: "xxxx"pass: "xxxx"privilege: "admin"driver: "LAN_2_0"collectors:- bmc- ipmi- dcmi- chassis- selcustom_args:bmc:- "bmc-info"ipmi:- "ipmimonitoring"dcmi:- "ipmi-dcmi"chassis:- "ipmi-chassis"sel:- "ipmi-sel"
参数说明:
1.modules: cloudatlas模块配置,这里配置的是 IPMI 采集器。
2.default: 默认配置,这里包含了一些通用的参数。
3.user: IPMI 用户名。
4.pass: IPMI 密码。
5.privilege: IPMI 权限,这里设置为 “admin”,表示管理员权限。其他可能的权限包括 “user”(用户权限)和 “operator”(操作员权限)。
6.driver: IPMI 驱动,这里设置为 “LAN_2_0”,表示使用网络(LAN)驱动。其他可能的驱动包括 “sci”(串行接口)和 " virtueio"(虚拟化接口)。
7.collectors: 这个部分列出了要收集的数据项(metric collectors)。在这个例子中,配置了以下数据项:
- bmc: 基础管理控制器(BMC)数据。
- ipmi: IPMI 传感器数据。
- dcmi: 直接核心内存接口(DCMI)数据。
- chassis: 机箱数据。
- sel: 系统事件日志(System Event Log)数据。
注意:-D处如果不指定为LAN_2_0,可能会报错:authentication type unavailable for attempted privilege level
1.3 systemd启动配置 ipmi_exporter.service
systemd启动配置 /etc/systemd/system/ipmi_exporter.service
vim /etc/systemd/system/ipmi_exporter.service[Unit]
Description=ipmi_exporter
Wants=network-online.target
After=network-online.targetStartLimitIntervalSec=500
StartLimitBurst=5[Service]
User=root
Group=root
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/ipmi_exporter/ipmi_exporter \--config.file=/usr/local/ipmi_exporter/ipmi_remote.yml \--web.listen-address=0.0.0.0:9290 \--freeipmi.path=/usr/local/freeipmi/sbin/[Install]
WantedBy=multi-user.target
1.4 启动 ipmi_exporter 服务
systemctl daemon-reload
systemctl restart ipmi_exporter.service
systemctl enable --now ipmi_exporter
systemctl status ipmi_exporter.service
1.5 Prometheus配置
创建target:
#
mkdir /usr/local/prometheus/sd_file/ipmi
vim /usr/local/prometheus/sd_file/ipmi/ipmi_targets_240.yml- targets:- xx.xx.xxx.xx- xx.xx.xxx.xxlabels:job: ipmi_exporter_240
修改Prometheus配置文件
cat prometheus.yml- job_name: ipmi_exporter_240params:module: ['default']scrape_interval: 1mscrape_timeout: 30smetrics_path: /ipmischeme: httpfile_sd_configs:- files:- /usr/local/prometheus/sd_file/ipmi_targets_240.ymlrefresh_interval: 5mrelabel_configs:- source_labels: [__address__]separator: ;regex: (.*)target_label: __param_targetreplacement: ${1}action: replace- source_labels: [__param_target]separator: ;regex: (.*)target_label: instancereplacement: ${1}action: replace- separator: ;regex: .*target_label: __address__# impi exporter安装服务器IPreplacement: xx.xx.xx.xx:9290action: replace
1.6 Grafana配置
导入模板:15765
模板地址:https://grafana.com/grafana/dashboards/15765-ipmi-exporter/
可根据需要修改模板
1.7 IPMI说明
1、IPMI
IPMI(Intelligent Platform Management Interface)
智能平台管理接口 (IPMI) 是一种开放标准的硬件管理接口规格,定义了嵌入式管理子系统进行通信的特定方法。IPMI 信息通过基板管理控制器 (BMC)(位于 IPMI 规格的硬件组件上)进行交流。使用低级硬件智能管理而不使用操作系统进行管理,具有两个主要优点: 首先,此配置允许进行带外服务器管理;其次,操作系统不必负担传输系统状态数据的任务。IPMI的核心是一个专用芯片/控制器(叫做服务器处理器或基板管理控制器(BMC)),其并不依赖于服务器的处理器、BIOS或操作系统来工作,可谓非常地独立,是一个单独在系统内运行的无代理管理子系统。简单来说,ipmi可以理解为管理物理服务器硬件的一个模块。
IPMI功能:
- 监控服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等;
- 可以通过串口、Modem以及Lan等远程环境管理服务器系统,如远程开关机;
2、ipmitool
ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能.
ipmitool –I open sensor list
#命令可以获取传感器中的各种监测值和该值的监测阈值,包括(CPU温度,电压,风扇转速,电源调制模块温度,电源电压等信息。
ipmitool –I open sensor thresh
#设置ID值等于id的监测项的各种限制值。
ipmitool –I open chassis status
#查看底盘状态,其中包括了底盘电源信息,底盘工作状态等
ipmitool –I open chassis restart_cause
#查看上次系统重启的原因
远程电源管理
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power off
# 关机,直接切断电源
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power soft
# (软关机,即如同轻按一下开机按钮)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power on
# (硬开机)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power reset
# (硬重启)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 power status
# (获取当前电源状态)
ipmitool -I lanplus -H $oob_ip -U root -P 密码 chassis power cycle
(注意power cycle 和power reset的区别在于前者从掉电到上电有1秒钟的间隔,而后者是很快上电)
远程引导
当次生效
ipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev pxe
# (网络引导)
ipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev disk
# (硬盘引导)
ipmitool -I lan -H 服务器地址 -U root -P passwd chassis bootdev cdrom
#(光驱引导)
读取系统状态类
ipmitool sensor list #显示系统所有传感器列表
ipmitool fru list #显示系统所有现场可替代器件的列表
ipmitool sdr list #显示系统所有SDRRepository设备列表
ipmitool pef list #显示系统平台时间过滤的列表
系统日志类
ipmitool sel elist #显示所有系统事件日志
ipmitool sel clear #删除所有系统时间日志
ipmitool sel delete ID #删除第ID条SEL
ipmitool sel time get #显示当前BMC的时间
ipmitool sel time set XXX #设置当前BMC的时间
启动设置类
ipmitool chassis bootdev bios #重启后停在BIOS 菜单
ipmitool chassis bootdev pxe #重启后从PXE启动
系统相关的命令
ipmitool mc info #显示BMC版本信息
ipmitool bmc reset cold #BMC 热启动
ipmitool bmc reset warmBMC #冷启动
网络接口相关命令
ipmitool lan print 1 #显示channel1的网络配置信息
ipmitool lan set 1ipaddr 10.32.2.2 #设置channel1的IP地址
ipmitool lan set 1 netmask 255.255.0.0 #设置channel1的netmask
ipmitool lan set 4 defgw ipaddr255.255.0.254 #设置channel4的网关
ipmitool lan set 2 defgw macaddr <macaddr> #设置channel2的网关mac address
ipmitool lan set 2 ipsrc dhcp #设置channel2的ip 源在DHCP
ipmitool lan set 3 ipsrc static #设置channel2的ip是静态获得的
通道相关命令
ipmitool channel info #显示系统默认channel
ipmitool channel authcap channel-number privilege #修改通道的优先级别
ipmitool channel getaccess channel-number user-id #读取用户在通道上的权限
ipmitool channel setacccess channel-number user-id callin=on ipmi=on link=onprivilege=5 #设置用户在通道上的权限
看门狗相关命令
ipmitool mc watchdog get #读取当前看门狗的设置
ipmitool watchdog off #关掉看门狗
ipmitool watchdog reset #在最近设置的计数器的基础上重启看门狗
用户管理相关命令
ipmitool user list chan-id #显示某通道上的所有用户
ipmitool set password <user id>[<password>] #修改某用户的密码
ipmitool disable <user id> #禁止掉某用户
ipmitool enable <user id> #使能某用户
ipmitool priv <user id> <privilegelevel> [<channel number>] #修改某用户在某通道上的权限
ipmitool test <user id> <16|20>[<password]> #测试用户