Zabbix获取IPMI Sensor之外的数据

此方法针对的是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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lx3leon

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

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

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

打赏作者

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

抵扣说明:

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

余额充值