Network UPS Tools部署

71 阅读4分钟

Network UPS Tools

Network UPS Tools

Network UPS Tools部署

NUT配置ups_nut客户端

要实现PVE主机配合山特UPS在断电后自动停止虚拟机、通知极空间NAS关机,以及来电自动开机的功能,推荐使用NUT(Network UPS Tools)方案,目前方案是pve作为客户端,极空间作为服务端。

apt update && apt install nut-client -y
 
#配置监控服务 
nano /etc/nut/upsmon.conf
RUN_AS_USER root
MONITOR ups0@192.168.50.88 1 nut nut slave
 
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0”
NOTIFYCHD /usr/sbin/upssched
POLLFREO 2
POLLFREOALERT 1
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
 
#通知服务配置
NOTIFYMSG ONLINE “UPS %s line power”
NOTIFYMSG ONBATE “UPS %s on battery"
NOTIFYMSG LONBATT "UPS %s battery is low"
NOTIFYMSG FSD "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMОK "Communications with UPS %s established"
NOTIFYMSG COMMBAD “Communications with UPS %s lost"
NOTIFYMSG SHUTDOWN "Auto logout and shutdown proceeding"
NOTIFYMSG REPLBATT "UPS %s battery needs to be replaced"
NOTIFYMSG NOCОMM "UPS %s is unavailable"
NOTIFYMSG NOPARENT "upsmon parent process died - shutdown impossible"
 
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG CОMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
 
#扫描UPS,获取设备驱动、端口、厂商ID等信息‌
nut -scanner -U
 
#编辑NUT配置文件 
nano /etc/nut/nut.conf
MODE = netclient
 
#配置定时模式 
nano /etc/nut/upssched.conf
 
CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /etc/nut/upssched.pipe
LOCKFN /etc/nut/upssched.lock
 
AT ONBATT * START-TIMER onbatt 30
AT ONLINE * CANCEL-TIMER onbatt online
AT ONBATT * START-TIMER earlyshutdown 30
AT LOWBATT * EXECUTE onbatt
AT COMMBAD * START-TIMER commbad 30
AT COMMOK * CANCEL-TIMER commbad commok
AT NOCOMM * EXECUTE commbad
AT SHUTDOWN * EXECUTE powerdown
 
#执行定义UPS关机脚本的配置文件
nano /etc/nut/upssched-cmd
 
#!/bin/sh
 case $1 in
       onbatt)
          logger -t upssched-cmd "UPS running on battery"
          ;;
       earlyshutdown)
          logger -t upssched-cmd "UPS on battery too long, early shutdown"
          /usr/sbin/upsmon -c fsd
          ;;
       shutdowncritical)
          logger -t upssched-cmd "UPS on battery critical, forced shutdown"
          /usr/sbin/upsmon -c fsd
          ;;
       upsgone)
          logger -t upssched-cmd "UPS has been gone too long, can't reach"
          ;;
       *)
          logger -t upssched-cmd "Unrecognized command: $1"
          ;;
 esac
 
#启动服务 
systemctl start nut-client nut-server
 
#测试服务 
upsc myups@localhost

    

NUT配置ups_nut服务端

#查看ups电源在那个usb口
lsusb
 
#更新安装服务端和客户端 
apt update
apt update && apt install nut nut-client nut-server -y
 
#查看ups电源信息 
nut -scanner -U
 
#查询ups信息展示 
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 15
battery.runtime: 1800
battery.type: PbAc
device.mfr: EATON
device.model: SANTAK TG-BOX 850 
device.serial: Blank
device.type: ups
driver.name: usbhid-ups
driver.parameter.lowbatt: 15
driver.parameter.offdelay: 60
driver.parameter.pollfreq: 15
driver.parameter.pollinterval: 15
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.version: 2.8.0
driver.version.data: MGE HID 1.46
driver.version.internal: 0.47
driver.version.usb: libusb-0.1 (or compat)
input.transfer.high: 264
input.transfer.low: 184
outlet.1.desc: PowerShare Outlet 1
outlet.1.id: 1
outlet.1.status: on
outlet.1.switchable: no
outlet.desc: Main Outlet
outlet.id: 0
outlet.switchable: yes
output.frequency.nominal: 50
output.voltage: 230.0
output.voltage.nominal: 220
ups.beeper.status: enabled
ups.delay.shutdown: 60
ups.delay.start: 30
ups.firmware: 02.08.0010
ups.load: 17
ups.mfr: EATON
ups.model: SANTAK TG-BOX 850 
ups.power.nominal: 850
ups.productid: ffff
ups.realpower: 116
ups.serial: Blank
ups.status: OL
ups.timer.shutdown: -1
ups.timer.start: -1
ups.type: offline / line interactive
ups.vendorid: 0463
 
记下driver\pid\vid\bus\port等信息
 
#备份ups配置文件
cp /etc/nut/ups.conf /etc/nut/ups.example.conf
#编辑配置新的ups文件
nano /etc/nut/ups.conf
 
pollinterval = 1
maxretry = 3
[tgbox850]         # UPS自定义名称
driver = usbhid-ups   # 驱动(CyberPower常用blazer_usb)
port = auto       # 自动检测USB端口
desc = "My SANTAK TG-BOX 850"  #备注名称
vendorid = 0463     # 替换为nut-scanner输出的VID
productid = ffff    # 替换为PID
 
 
#备份ups配置文件
cp  /etc/nut/upsmon.conf /etc/nut/upsmon.example.conf
nano  /etc/nut/upsmon.conf 
#配置文件 tgbox850,ups定义的名称;@localhost,本机ip地址;1显示的是连接几台ups;admin和123是用户名密码;master是主从服务标识【master/slave】;如果设置多个ups这里要填写多遍。
RUN_AS_USER root #表示必须root用户运行,可根据情况设置
MONITOR tgbox850@localhost 1 admin 123 master
 
 
#配置主从服务如果是本机连接可以设置127.0.0.1 。
cp /etc/nut/upsd.conf /etc/nut/upsd.example.conf
nano /etc/nut/upsd.conf
LISTEN 0.0.0.0 3493
 
 
#配置nut运行模式目前有【netserver服务模式,netclient客户端模式】
cp /etc/nut/nut.conf /etc/nut/nut.example.conf
nano /etc/nut/nut.conf
MODE=netserver
 
 
#用户配置,[admin]用户名,admin master,admin为主账户
cp /etc/nut/upsd.users /etc/nut/upsd.example.users
nano /etc/nut/upsd.users
 
[admin]
password = 123
admin master
 
 
#重启服务 
service nut-server restart
service nut-client restart
systemctl restart nut-monitor
upsdrvctl stop
upsdrvctl start
 
#重启输出展示 
Network UPS Tools - UPS driver controller 2.7.4
Network UPS Tools - UPS driver controller 2.7.4
Network UPS Tools - Generic HID driver 0.41 (2.7.4)
USB communication driver 0.33
Using subdriver: 
 
#查询特定某一项ups信息
upsc ups0@localhost battery.charge
查询特定信息则在后面加上相应变量
 
#安装网页端可视化 
apt install apache2 nut-cgi -y
 
#修改网页端配置参数 
cp /etc/nut/hosts.conf /etc/nut/hosts.example.conf
nano /etc/nut/hosts.conf
MONITOR ups0@192.168.50.88 "My SANTAK TG-BOX 850"
多个ups可以多行编写
 
#执行 
a2enmod cgi
systemctl restart apache2
 
#基本参数不用改动 
cp /etc/nut/upsset.conf /etc/nut/upsset.example.conf
nano /etc/nut/upsset.conf
I_HAVE_SECURED_MY_CGI_DIRECTORY
 
#与UPS链接的电脑IP后面添加/cgi-bin/nut/upsstats.cgi 
示例:http://192.178.33.108/cgi-bin/nut/upsstats.cgi

    

NUT配置Docker客户端

#Docker
version: "3.1
services:
    nut:
        imageteknologist/webnut
        containor_nanewobnut
        environment:
            - UPS_HOST = 192.168.0.120
            - UPS_PORT = 3493
            - UPS USER = admin
            - UPS PASSNORD = V40M8aBV
        restartunless-stopped
        security_opt:
            - no-new-privileges:true
        ports :
            - 6443:6543
 
nutweb:
    container_namenutweb
    imageghcr.nju.edu.cn/superioone/nut_webgui:latest
    restartunless-stopped
    environment:
      UPSD_ADDR192.168.1.254  # 实际就是宿主机内网地址
      UPSD_USERnutdev1
      UPSD_PASSadmin
    networks:
      - nginx_ipv4

    
```.preview-wrapper pre::before { position: absolute; top: 0; right: 0; color: #ccc; text-align: center; font-size: 0.8em; padding: 5px 10px 0; line-height: 15px; height: 15px; font-weight: 600; } .hljs.code\_\_pre > .mac-sign { display: flex; } h2 strong { color: inherit !important; }

> 本文使用 [文章同步助手](https://juejin.cn/post/6940875049587097631) 同步