1. 安装 ipmitool
首先,你需要确保系统上已经安装了 ipmitool
。如果没有安装,可以使用以下命令进行安装:
在 CentOS/RHEL 上:
sudo yum install ipmitool
在 Ubuntu/Debian 上:
sudo apt-get install ipmitool
2. 获取电源消耗信息
使用 ipmitool
获取服务器的电源消耗信息。以下是命令的基本格式:
ipmitool -I lanplus -H <IPMI_IP> -U <IPMI_USER> -P <IPMI_PASSWORD> sdr get "Pwr Consumption"
-I lanplus
: 使用 LAN 接口进行连接。-H <IPMI_IP>
: IPMI 接口的 IP 地址。-U <IPMI_USER>
: IPMI 用户名。-P <IPMI_PASSWORD>
: IPMI 密码。sdr get "Pwr Consumption"
: 获取电源消耗信息。
例如:
ipmitool -I lanplus -H 192.168.1.1 -U root -P 123456 sdr get "Pwr Consumption"
[root@localhost ~]# ipmitool -I lanplus -H 192.168.1.1 -U root -P 123456 sdr get "Pwr Consumption"
Sensor ID : Pwr Consumption (0x77)
Entity ID : 7.1 (System Board)
Sensor Type (Threshold) : Current (0x03)
Sensor Reading : 84 (+/- 0) Watts
Status : ok
Nominal Reading : 658.000
Normal Maximum : 672.000
Upper critical : 1218.000
Upper non-critical : 1106.000
Positive Hysteresis : Unspecified
Negative Hysteresis : Unspecified
Minimum sensor range : Unspecified
Maximum sensor range : 3556.000
Event Message Control : Per-threshold
Readable Thresholds : unc ucr
Settable Thresholds : unc
Assertion Events :
Assertions Enabled : unc+ ucr+
Deassertions Enabled : unc+ ucr+
详细解释
Sensor ID:
Pwr Consumption (0x77): 传感器ID,表示这是一个电源消耗传感器,ID为0x77。
Entity ID:
7.1 (System Board): 实体ID,表示这个传感器位于系统主板上。
Sensor Type (Threshold):
Current (0x03): 传感器类型,表示这是一个电流(功率)传感器。
Sensor Reading:
84 (+/- 0) Watts: 当前传感器读数,表示当前电源消耗为84瓦特,误差为0瓦特。
Status:
ok: 传感器状态,表示传感器当前状态正常。
Nominal Reading:
658.000: 标称读数,表示传感器设计时的标称功率消耗。
Normal Maximum:
672.000: 正常最大值,表示传感器在正常工作范围内的最大功率消耗。
Upper critical:
1218.000: 上临界值,表示传感器读数超过此值时,系统将进入临界状态。
Upper non-critical:
1106.000: 上非临界值,表示传感器读数超过此值时,系统将进入非临界状态。
Positive Hysteresis:
Unspecified: 正滞后值,表示传感器读数从正常状态到非正常状态的滞后值未指定。
Negative Hysteresis:
Unspecified: 负滞后值,表示传感器读数从非正常状态回到正常状态的滞后值未指定。
Minimum sensor range:
Unspecified: 传感器最小测量范围,表示传感器能够测量的最小功率消耗未指定。
Maximum sensor range:
3556.000: 传感器最大测量范围,表示传感器能够测量的最大功率消耗为3556瓦特。
Event Message Control:
Per-threshold: 事件消息控制,表示事件消息是基于每个阈值触发的。
Readable Thresholds:
unc ucr: 可读阈值,表示传感器可以读取的阈值包括非临界值(unc)和临界值(ucr)。
Settable Thresholds:
unc: 可设置阈值,表示传感器可以设置的阈值为非临界值(unc)。
Assertion Events:
(空): 断言事件,表示当前没有断言事件。
Assertions Enabled:
unc+ ucr+: 启用的断言事件,表示非临界值(unc)和临界值(ucr)的断言事件已启用。
Deassertions Enabled:
unc+ ucr+: 启用的解除断言事件,表示非临界值(unc)和临界值(ucr)的解除断言事件已启用。
3. 编写监控脚本
为了定期监控电源消耗,你可以编写一个简单的 Bash 脚本。以下是一个示例脚本:
#!/bin/bash
# 定义IPMI连接信息
IPMI_HOST="192.168.1.1"
IPMI_USER="root"
IPMI_PASS="123456"
# 定义报警阈值
CRITICAL_THRESHOLD=1100
WARN_THRESHOLD=800
# 获取当前功率消耗
power=$(ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_USER -P $IPMI_PASS sdr get "Pwr Consumption" | grep "Sensor Reading" | awk '{print $3}')
echo "Current power consumption: $power Watts"
# 检查功率是否超过阈值
if [ "$power" -ge "$CRITICAL_THRESHOLD" ]; then
echo "CRITICAL: Power consumption is too high!"
# 这里可以添加发送警报或执行其他操作的代码
elif [ "$power" -ge "$WARN_THRESHOLD" ]; then
echo "WARNING: Power consumption is approaching critical levels."
# 这里可以添加发送警告的代码
fi
将这个脚本保存为 check_power.sh,然后通过 chmod +x check_power.sh 赋予执行权限。
4. 设置定时任务
你可以使用 cron
定时任务来定期执行这个脚本。以下是一个示例,每 5 分钟执行一次:
crontab -e
在打开的编辑器中添加以下行:
*/5 * * * * /path/to/check_power.sh >> /var/log/power_monitor.log 2>&1
保存并退出编辑器。这样,脚本将会每 5 分钟执行一次,并将输出记录到 /var/log/power_monitor.log
文件中。
5. 查看日志
你可以通过查看日志文件 /var/log/power_monitor.log
来检查脚本的执行结果和电源消耗情况。
评论 (0)