买了一台GEN8用于数据存储,装了4块硬盘存了不少大姐姐,奈何园区工业用电太不稳定,导致我挂了1块3t盘,幸亏组了RAID1,数据没丢。从此以后买了一台APC BK650的UPS,主机用的ESXI 6.5 UP2 百度不少地方找到一个Network UPS Tools用着还可以,不过要手动搭建一台Linux NUT服务器,想到群晖支持APC KB650,也能创建服务器,就有了这个文章。
1. 安装群晖
这个就不细说了,百度 ESXI 安装 群晖就可以找到,我装了3615的版本,记得添加一个USB设备,选中APC BK650。

2. 下载文件
下载NUT 客户端软件,这个是针对ESXI 5~7 的最新版本,我只测试了6.5,其他的自行测试(不过开发者已测试ESXi 5.0、5.1、5.5、6.0、6.5、6.7、7.0.0)。NutClient-ESXi-2.1.1.i386.tar.gz 如果你要查看源代码,就去开发者的网站看吧Le journal de René
3. 安装过程
第一步,在ESXI后台为每个需要查看UPS信息的设备新建一个虚拟交换机和一个端口组,这样就能把各系统组成一个UPS内网,当然如果你用外部交换机就可以免去设置虚拟交换机了,我没有硬件裙辉,只能在ESXI中安装了虚拟机,这个虚拟机也就只有UPS服务器这一个功能,原来用的Debian10做NUT服务器的,损失系统性能,所以后面就用群晖代替了,用着还挺稳定。


第二步,登录群晖的 DSM,记住你的DSM IP地址,我的在内网(ESXI中还有一个IKuai用于分配IP地址,这个怎么样都行,哪怕直接静态也行)我是省事,ESXI中还有几个windows系统远程操作用ikuai路由器穿透,会损失一些网络性能,主要是满足外网失效的情况下,整个内网运行正常。

在 控制面板-系统-硬件和电源 里面找到 不断电系统 选项,打开 UPS 服务器并添加允许连接的 IP,这里就把 ESXi 的 IP 填写进去(我们的设备地址被静态配置成 192.168.31.101 ),到此DSM就设置完成了,记得应用保存配置:

第三步,开始安装 SSH 进到 ESXi(SSH功能,默认是关闭的,需要在 ESXi 的服务里面打开 SSH)
下载到本机,然后远程传输到ESXi的服务器上,有些ESXi服务器由于安全原因不允许访问远程服务器
这个软件包是法国人提供的,原始下载地址是 http://rene.margar.fr/2012/05/client-nut-pour-esxi-5-0/
$ cd /tmp
$ wget http://www.aionshop.com/usr/uploads/2021/02/2610395664.gz
下载后请改名为NutClient-ESXi-2.1.1.i386.tar.gz,不然无法解压的
$ mv 2610395664.gz NutClient-ESXi-2.1.1.i386.tar.gz
$ tar xvf NutClient-ESXi-2.1.1.i386.tar.gz
设置软件安装策略,否则会被阻止安装
$ esxcli software acceptance set --level CommunitySupported
$ ./upsmon-install.sh
安装的结果如下:
[root@localhost:/tmp] ./upsmon-install.sh
Installation Result
Message: Operation finished successfully.
Reboot Required: false
VIBs Installed: Margar_bootbank_upsmon_2.7.4-2.1.0
VIBs Removed:
VIBs Skipped:
重启服务器:
[root@localhost:/tmp] reboot
第四步,设置参数。 接着登录 ESXi,打开管理-系统-高级设置,找到 NUT 相关的设置选项:

UserVars.NutUpsName:ups@192.168.31.3(这里的地址填你们群晖的地址)
UserVars.NutUser:monuser
UserVars.NutPassword:secret
UserVars.NutFinalDelay:60(关机时间,我这是1分钟后关闭esxi)
配置完后在vSphere Client的配置-安全配置文件-服务-NutClient设置与主机一起启动和停止(NutClient是守护进程,要先配置UserVars中的NUT参数再运行NutClient服务。并且每次修改UserVars参数后都要重启NutClient服务才有用)
设置完成后重启
[root@localhost:~] reboot
第五步,测试 ssh 中执行 /opt/nut/bin/upsc ups@192.168.31.3 ,如果输出类似如下信息,则表示连接 ups 成功:
[root@localhost:~] /opt/nut/bin/upsc ups@192.168.31.3
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.date: not set
battery.mfr.date: 2018/11/04
battery.runtime: 3937
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.5
battery.voltage.nominal: 12.0
device.mfr: APC
device.model: Back-UPS 650
device.serial: 3B1844X86955
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 5
driver.parameter.port: auto
driver.version: DSM6-2-1-23824-broadwellnk-repack-23824-181009
driver.version.data: APC HID 0.95
driver.version.internal: 0.38
input.sensitivity: low
input.transfer.high: 266
input.transfer.low: 165
input.voltage: 216.0
input.voltage.nominal: 220
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: 822.A3.I
ups.firmware.aux: A3
ups.load: 0
ups.mfr: APC
ups.mfr.date: 2018/11/04
ups.model: Back-UPS 650
ups.productid: 0002
ups.serial: 3B1844X86955
ups.status: OL
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d
验证防火墙设置,执行 esxcli network firewall ruleset list,如果看到 NutServer 为 ture 则表示正常。 最后在 ESXi 的服务里面设置 Network UPS Tools client 服务随系统启动即可!