Zabbix获取IPMI Sensor之外的数据

本文档介绍了如何通过SMCIPMITool和Shell脚本来获取Supermicro服务器IPMI的电源详细数据,并在Zabbix中进行监控。首先,下载并安装SMCIPMITool,然后编写Shell脚本,将其放在Zabbix的外部脚本目录中。接着,配置Zabbix主机的IPMI接口和模板,创建主监控项和预处理步骤来获取和处理电源数据。通过这种方式,可以实现对多个电源模块的功耗、电流和电压等信息的实时监控。最后,调整Zabbix Server的超时设置以防止因响应超时导致的数据获取失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此方法针对的是Supermicro(超微)部分版本的IPMI,因其Sensor没有电源的详细数据(电流、电压、功耗),笔者在此介绍一种方法来实现Zabbix获取其数据,从而进行电力监控。对于IPMI Sensor之内的数据,Zabbix有现成的模板就可以实现。

Linux、Shell、IPMI、Zabbix、Regular expression的相关概念,网上很多介绍,不再赘述。

Supermicro IPMI固件版本03.86,Sensor(传感器)的电源数据仅有“状态”检测。
在这里插入图片描述
在这里插入图片描述

想要获取电源的详细数据,就需要一些工具及方法。最终实现效果如下图:
在这里插入图片描述
在这里插入图片描述

思路流程

在这里插入图片描述
需要准备2个工具,详细步骤中会有获取/制作方法:

  1. SMCIPMITool (Linux版)
    Supermicro(超微)自家的IPMI Tool
  2. Shell脚本
    编写一个Shell脚本,用于调用SMCIPMITool来远程获取数据。脚本要放于Zabbix服务器上的外部脚本目录中,默认位置为:/usr/lib/zabbix/externalscripts

详细步骤

一、 SMCIPMITool

SMCIPMITool 是带外 (Out-of-Band) 的 Supermicro IPMI工具,允许用户通过CLI(命令行界面)与具有IPMI的系统包括SuperBlade® 系列设备连接。 该程序提供了两种使用模式,即:OS命令行模式和Shell 模式。 该程序可以轻松与现有基础架构整合,以便与 Supermicro 服务器的基板管理控制器 (BMC)连接,达到远程配置系统的功能。

下载地址:https://www.supermicro.org.cn/wdl/utility/SMCIPMItool/

  • 将下载得到的SMCIPMITool_2.26.0_build.220209_bundleJRE_Linux_x64.tar.gz解压缩:
sudo tar zvxf SMCIPMITool_2.26.0_build.220209_bundleJRE_Linux_x64.tar.gz
  • 将解压缩后得到的文件夹名称改短一点,比如SMCIPMITool
sudo mv SMCIPMITool_2.26.0_build.220209_bundleJRE_Linux_x64 SMCIPMITool
  • 进入此文件夹目录
cd SMCIPMITool
  • 运行SMCIPMITool
./SMCIPMITool

正常运行后会显示如下信息:
在这里插入图片描述

详细的SMCIPMITool命令如下:
在这里插入图片描述

  • 获取电源数据的命令如下:
./SMCIPMITool 10.1.96.1 ADMIN ADMIN pminfo

回显的电源数据:
在这里插入图片描述
OK,工具测试无误。

二、 Shell脚本

Shell是一种命令语言,也是一个用 C 语言编写的命令解释程序。它的主要作用是提供一个接口,使用户与内核交互操作。
流程:接收用户输入的命令并且进行解析,然后将命令送入内核去执行,最后将结果返回给用户。

  • 在Zabbix外部脚本目录创建一个Shell脚本文件:
sudo vi /usr/lib/zabbix/externalscripts/smcps.sh
  • 按 i 键写入如下两行内容后,先按ESC,再按 :x (冒号和小写x)保存退出:
#!/bin/bash
/home/xxx/SMCIPMITool/SMCIPMITool $1 ADMIN ADMIN pminfo

目录路径根据自己情况修改。 IP地址位置的$1是一个变量,可以让我们在调用命令时,传入相应的参数。
后面跟着的2个ADMIN分别是账号和密码,同样也可以设置为变量。

运行这个Shell脚本时,就相当于执行了脚本中第二行的命令,效果如下:
在这里插入图片描述

注意第一行脚本后的IP地址(10.1.96.1),这个IP就是传入脚本内$1位置的“参数”。

Zabbix中每台主机的IP不同,各个主机在调用这个Shell脚本时,可以将自己的IP传入,这样就可以获取到正确的、对应各自主机的电源数据。

三、 Zabbix设置

  • Host(主机)的Interfaces(接口)与IPMI设置如下:
    在这里插入图片描述
    在这里插入图片描述

  • 模板与监控项设置
    新建一个模板,在其中创建一个监控项,此为“主监控项”,关键设置如下:
    Type(类型): External check(外部检查)即调用外部脚本
    Key(关键字): smcps.sh[“{HOST.IP}”] 外部脚本名及参数,{HOST.IP}是Zabbix内置宏,表示本主机IP,当把模板应用于具体主机后即可生效。
    Type of information(数据类型):Text(文本)
    Update interval(更新间隔):1m(1分钟执行一次)
    在这里插入图片描述

主监控项的Preprocessing(数据预处理)做如下设置,目的是剔除不必要的字符。
Preprocessing steps(预处理步骤)说明:
1:如果由于各种原因获取数据失败,则返回值0
2:删除数据中的空格
3:删除数据中的换行符
4:删除数据中的横杠符(即减号)
在这里插入图片描述
主监控项每分钟会执行一次外部Shell脚本,获取对应主机的电源数据,再经过Preprocessing处理出来紧凑的格式,如下图红框中的数据。其中包含了本主机所有PSU(电源模块)多个维度的数据。
在这里插入图片描述

接下来,创建一个辅监控项,Master item选择“主监控项”,具体设置如下:
这个辅监控项的作用是通过Preprocessing(数据预处理),将“主监控项”数据中的相应字符“提取”出来,下图这个辅监控项获取的是PSU1的功耗数值,单位为W(瓦)。
在这里插入图片描述

“提取”数据的流程,主要是通过Regular expression(正则表达式)匹配关键字的方法来实现:仅获取我们想要的字符。
Preprocessing steps(预处理步骤)说明:
1:提取出从 [Module1] 到 [Module2] 之间的所有字符
2:在从1的数据中,提取出InputPower|和其后的数字
3:删除InputPower|,只保留数字,也就是我们想要的1号电源的功耗数。
在这里插入图片描述

电流、电压、电压状态以及电源风扇转速等,都可以通过单独的辅监控项来实现数据监控。像这样“一主多辅”的监控项架构,也能够节省Zabbix服务器的性能资源。

最后,模板制作完毕后,记得在主机选项处,链接此模板。

四、 其他问题

  • 解决获取数据时,因响应超时导致的失败问题。
  1. 打开Zabbix Server配置文件
sudo vi /etc/zabbix/zabbix_server.conf
  1. 将Timeout值增加至20(秒),而后保存退出。在这里插入图片描述

  2. 重启Zabbix后即可。

systemctl restart zabbix-server.service
### 配置概述 为了在IBM Power Systems上利用Zabbix通过IPMI进行硬件监控,需确保满足几个前提条件并完成相应配置。服务器应支持IPMI功能,并已启用此特性;操作系统层面同样需要具备对IPMI的支持能力,在Linux环境中可通过安装`OpenIPMI`和`ipmitool`来达成这一目标[^1]。 对于IBM Power Systems而言,其远程管理模块通常被称为Integrated Management Module (IMM),这相当于其他品牌服务器中的iDRAC或ILO设备,用于提供带外管理和IPMI服务接口访问[^2]。 ### 安装必要的软件包 假设当前环境为基于Red Hat Enterprise Linux(RHEL) 或者兼容版本的操作系统,可以通过以下命令获取所需的IPMI工具集: ```bash yum install OpenIPMI ipmitool -y ``` 验证安装成功与否可以执行如下指令查看是否正确部署了这些组件: ```bash rpm -qa OpenIPMI ipmitool ``` 预期输出类似于下面的内容表示安装无误: ``` ipmitool-1.8.13-8.el7_1.x86_64 OpenIPMI-2.0.19-11.el7.x64 ``` ### 设置Zabbix Agent采集数据 为了让Zabbix能够收集来自IPMI的信息,必须先调整Zabbix agentd的配置文件(通常是/etc/zabbix/zabbix_agentd.conf),加入指向本地机器上的IPMI传感器路径设置项: ```ini UserParameter=ipmi.sensor[*],/usr/bin/ipmitool sensor get "$1" ``` 重启Zabbix代理程序使更改生效: ```bash systemctl restart zabbix-agent ``` 此时,应该能够在Zabbix前端界面上定义新的监控项目时选择上述自定义参数作为数据源之一。 ### 创建监控模板并与主机关联 进入Zabbix Web界面创建一个新的模板,命名为如“Template App IPMI IBM Power”,接着添加具体的监控条目,比如温度、电压等具体指标。每一条记录都应该指定对应的键值名称匹配之前设定好的UserParameter模式。 最后一步就是把新建立起来的模板链接到实际待监测的目标主机之上,从而实现全面覆盖式的硬件健康状况跟踪分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lx3leon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值