平时喜欢研究技术的同学们,应该用过或者至少听说Synology群晖的NAS产品。今天逗老师就讲一个NAS和UPS的故事。

Synology群晖的NAS产品里,有一个UPS管理功能。对于市面上大部分带有USB管理接口的UPS来说,基本都能适配群晖的NAS。

当UPS和NAS连接后,NAS可以在UPS电池即将耗尽之前主动进入安全模式,减少数据丢失的风险。

同时直连UPS的NAS还可以作为UPS服务器,让其他群晖NAS设备通过本机读取UPS设备信息,同时控制开关机。

现在,有趣的事情来了。群晖的这个UPS服务器功能,除了连接其他的群晖NAS,可不可以对接一下其他第三方的网关监控平台,或者是对接一下ESXi虚拟化平台?

例如,我们就成功的将群晖的UPS服务器的接口数据,连接到了PRTG或者Zabbix监控服务器。

目录

  • 一、家用UPS监控接口与工业UPS的区别
  • 二、Network UPS Tools(NUT)
  • 三、ESXi使用NUT获取电源详情
  • 四、Telnet直接获取NUT电源详情
  • 四、第三方监控系统获取NUT电源详情

一、家用UPS监控接口与工业UPS的区别

工业UPS大部分使用SNMP、串口modbus等方案进行监控和管理。普遍有标准的API或者遵循标准的MODBUS规范。

但是家用产品怎么监控呢,家用产品会跟你谈API么?会跟你谈总线规范么?闹呢!

家用产品目前可能使用到两种方式进行管理:

  • 1、Windows ACPI电源管理方案,这种UPS插上电脑直接识别成一坨电池,台式机秒变笔记本。
  • 2、使用NUT规范进行管理。通过嵌入式设备,将UPS的私有通信协议转换成符合NUT规范的接口。

二、Network UPS Tools(NUT)

经过很多网友们的探索,群晖的UPS服务器实际使用的是NUT接口规范。
NUT是许多网友和一些公司的共同写出来的,目前这个项目的官网地址是:
https://networkupstools.org/
NUT服务器通过串口、USB、SNMP等任何可能的办法连接到UPS上之后,通过NUT服务端将UPS的运行数据提供给其他网络上的服务器,实现共享。

三、ESXi使用NUT获取电源详情

对于极客范的同学们,家里一般都会有一个NAS和一个ESXi服务器。现在ESXi服务器对接群晖NAS获取UPS运行数据办法很成熟。

# 下载到本机,然后远程传输到ESXi的服务器上,有些ESXi服务器由于安全原因不允许访问远程服务器
# 这个软件包是法国人提供的,原始下载地址是 http://rene.margar.fr/download/1368/
$ wget https://www.mobibrw.com/wp-content/uploads/2019/05/NutClient-ESXi-2.0.0.tar.gz$ scp NutClient-ESXi-2.0.0.tar.gz root@10.10.10.2:~/tmp/# 登录带ESXi服务器
$ ssh 10.10.10.2 -l root$ cd /tmp$ tar xvf NutClient-ESXi-2.0.0.tar.gz# 设置软件安装策略,否则会被阻止安装
$ esxcli software acceptance set --level CommunitySupported$ ./upsmon-install.sh

安装成功显示如下:

[root@localhost:/tmp] ./upsmon-install.sh
Installation ResultMessage: Operation finished successfully.Reboot Required: falseVIBs Installed: Margar_bootbank_upsmon_2.7.4-2.0.0VIBs Removed: VIBs Skipped:

接着登录 ESXi,打开管理,高级设置,找到 NUT 相关的设置选项:
安装完之后可能直接看不到,如果找不到的话,需要重启一下ESXi服务器。

UserVars.NutUpsName:ups@10.10.10.111(这里的地址填群晖NAS的地址)
UserVars.NutUser:monuser
UserVars.NutPassword:secret
UserVars.NutFinalDelay:5(LOW POWER低电量状态后延迟几秒关机,不是停电后的延迟)配置完后在vSphere Client的配置-安全配置文件-服务-NutClient设置与主机一起启动和停止。
NutClient是守护进程,要先配置UserVars中的NUT参数再运行NutClient服务。
并且每次修改UserVars参数后都要重启NutClient服务才有用

ssh 中执行 /opt/nut/bin/upsc ups@10.10.10.111 ,如果能看到输出信息,则表示连接 ups 成功:

最后,验证防火墙设置,执行 esxcli network firewall ruleset list,如果看到 NutServerture 则表示正常。
最后在 ESXi 的服务里面设置 Network UPS Tools client 服务随系统启动即可!

四、Telnet直接获取NUT电源详情

下面,我们搞一点更有意思的事情。

群晖使用TCP的3493端口作为UPS服务器端口,NUT接口很有意思的是,我们telnet上去之后就可以访问和获取相关的信息。

简单看了一下NUT的文档,最简单的可以使用LIST命令获取到一些我们感兴趣的信息。
例如:

  • LIST UPS可以获取这台服务器上连接的UPS,
  • LIST VAR xxx可以获取某台UPS主机的参数。
  • LOGOUT命令退出登录。

接口文档详情如下:
NUT Network protocol information GET
NUT Network protocol information LIST

telnet 10.10.10.111 3493
Trying 10.10.10.111...
Connected to 10.10.10.111.
Escape character is '^]'.
LIST UPS
BEGIN LIST UPS
UPS ups "Description unavailable"
END LIST UPS
LIST VAR ups
BEGIN LIST VAR ups
VAR ups battery.charge "100"
VAR ups battery.charge.low "20"
VAR ups battery.runtime "1440"
VAR ups battery.type "PbAc"
VAR ups device.mfr "EATON"
VAR ups device.model "SANTAK TG-BOX 850 "
VAR ups device.serial "Blank"
VAR ups device.type "ups"
VAR ups driver.name "usbhid-ups"
VAR ups driver.parameter.pollfreq "30"
VAR ups driver.parameter.pollinterval "5"
VAR ups driver.parameter.port "auto"
VAR ups driver.version "DSM6-2-25364-191230"
VAR ups driver.version.data "MGE HID 1.33"
VAR ups driver.version.internal "0.38"
VAR ups input.transfer.high "264"
VAR ups input.transfer.low "184"
VAR ups outlet.1.desc "PowerShare Outlet 1"
VAR ups outlet.1.id "1"
VAR ups outlet.1.status "on"
VAR ups outlet.1.switchable "no"
VAR ups outlet.desc "Main Outlet"
VAR ups outlet.id "0"
VAR ups outlet.switchable "yes"
VAR ups output.frequency.nominal "50"
VAR ups output.voltage "230.0"
VAR ups output.voltage.nominal "220"
VAR ups ups.beeper.status "enabled"
VAR ups ups.delay.shutdown "20"
VAR ups ups.delay.start "30"
VAR ups ups.firmware "02.08.0010"
VAR ups ups.load "20"
VAR ups ups.mfr "EATON"
VAR ups ups.model "SANTAK TG-BOX 850 "
VAR ups ups.power.nominal "850"
VAR ups ups.productid "ffff"
VAR ups ups.serial "Blank"
VAR ups ups.status "OL CHRG"
VAR ups ups.timer.shutdown "0"
VAR ups ups.timer.start "0"
VAR ups ups.type "offline / line interactive"
VAR ups ups.vendorid "0463"
END LIST VAR ups
LOGOUT
OK Goodbye
Connection closed by foreign host.

这,我写个Python脚本随便就能格式化这些数据,然后呈现给第三方监控系统啊。

四、第三方监控系统获取NUT电源详情

如果一些小型office的机房用到了这种小型UPS,又需要获取监控数据,而且office里恰好有一台群晖的话。
那么就可以用到下面这个方法
Public_Share_Project/PRTG 自定义传感器Customer Senser/UPS NUT/NUT_UPS.py

添加方式:
脚本拷贝到PRTG探针的如下目录,传递参数{‘nut’:‘10.10.10.111’},这里的IP地址写群晖NAS的IP地址。

C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\python

稍等一会即可看到监控数据

当市电中断或者其他故障发生的收,监控系统同样会产生相关的告警。

故障恢复的时候亦会收到恢复通知

【逗老师的小技巧】群晖UPS NUT接口开发探索相关推荐

  1. 【逗老师的小技巧】群晖Synology更改存储池和存储空间编号

    强迫症的福利 有时候我们遇到了群晖的NAS存储池编号乱了,或者想自定义修改一下存储池编号.本篇文章介绍如何修改存储池和存储空间编号,DSM 7.0可用. [改硬盘有风险,尽量做个备份] 一.修改存储池 ...

  2. 【逗老师的小技巧】黑群晖DSM 6.2.3混合MBR分区启动问题-适配古老电脑

    先说一个现象,众所周知DSM DS36xx 6.2.3的引导镜像有一个BUG导致其只能通过传统方式引导.但是无一例外的网上给出的6.2.3引导镜像统统是UEFI+Legacy混合启动镜像,镜像本身是一 ...

  3. 【逗老师的小技巧】win10 l2tp ipsec 无法连接解决方案

    1.单击"开始",单击"运行",键入"regedit",然后单击"确定" 2.找到下面的注册表子项 HKEY_LOCAL ...

  4. 【逗老师的小技巧】MacOS重置网络连接的方法

    如果MacOS在连接网络的时候出现各种奇怪的问题时,可以尝试重置MacOS的网络配置. 1.打开"Finder(访达)",按住Command+Shift+G,打开"前往文 ...

  5. 【逗老师的小技巧】树莓派4翻转屏幕,加载OpenGL驱动

    树莓派4之前的版本上,屏幕旋转用的是修改config.txt文件,而在树莓派4上,因为改了驱动程序,再修改config.txt文件就不起作用了. 网上看到的办法,基本都说了 但是这里面有个坑,有些HD ...

  6. 单盘位小先锋 群晖DS112j家用NAS评测

     NAS服务器开始逐渐走进消费级市场是用户需要直接导致的,时代不同了,技术发展的进步让人们对于容量的苛求和共享成为了非常关键的特性,一直做为企业级产品的NAS服务器,如果也必须加入消费级的行里,通 ...

  7. 群晖 root_群晖多人协作开发

    群晖多人协作开发 1.导语 最近回到学校,需要把群晖的git server整一下,顺便自己记录一下.具体如下: 使用群晖NAS搭建一个git server,其实搭建git server还是贼简单,那在 ...

  8. 两服务器文件异地同步,两台群晖之间Moments异地同步方法探索

    两台群晖之间Moments异地同步方法探索 2020-07-29 21:12:05 3点赞 6收藏 3评论 手里有一黑一白两台群晖,一直在寻找两台设备之间Moments文件异地同步的方法. 因为群晖里 ...

  9. 两台群晖服务器如何同步文件,两台群晖之间Moments异地同步方法探索

    两台群晖之间Moments异地同步方法探索 2020-07-29 21:12:05 3点赞 6收藏 3评论 手里有一黑一白两台群晖,一直在寻找两台设备之间Moments文件异地同步的方法. 因为群晖里 ...

最新文章

  1. openssl私有ca创建
  2. 051_InfiniteScroll无限滚动
  3. Kotlin1.6.20好用的新特性:多receiver扩展函数,绝不可空类型,并行编译kotlin减少编译时间
  4. Java调用Matlab程序
  5. 如何用最短时间搞定酷炫可视化大屏?这款工具值得一看
  6. windows无法启动oracleremexecservice服务_Windows下MySQL无法启动万能解决方案
  7. IT 企业稿阿米巴 失败
  8. Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类
  9. 深入浅出计算机组成原理04:存储和IO系统
  10. 3文字怎么断行_Word闹鬼,行首出现删不掉的空格怎么办?
  11. kali linux 2017 中文,Kali Linux 2017.3 发布,带来已升级的内核和新工具
  12. 数据库已关闭。请指定主机身份证明以访问数据库重新启动和诊断工具
  13. eclipse J2ME调试时模拟器一闪就消失原因
  14. Visio文件编辑查看工具Visio Viewer for Mac
  15. usb加密狗破解原理及方法介绍
  16. c语言中输入输出基本格式
  17. 微信如何收发企业邮箱邮件
  18. ios越狱开发_隐藏Root(Cydia)图标
  19. du和df命令的区别
  20. oracle连续周数,oracle周数计算

热门文章

  1. iOS端移动支付的一些坑
  2. Chrome,IE等浏览器主页被hao123等篡改的解决方法
  3. 03 Hello,World!
  4. 设计模式之MVC和MVT
  5. input选择视频或图片本地预览问题
  6. MVT框架模式的认识
  7. 一张三极管规格书参考图引发的思考
  8. 机器学习模型评价指标及拟合概念
  9. 数据安全能力成熟度模型DSMM----6、数据交换安全
  10. 为什么H5是黑灰产高发区?一文说明白