通过ipmitools获取服务器电量
标签搜索
侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 0 条评论

通过ipmitools获取服务器电量

ranyuan
2024-10-30 / 0 评论 / 57 阅读 / 正在检测是否收录...

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

评论 (0)

取消