转载请注明出处,本文仅用于学习交流,不对之处,恳请指正
兼容性问题
在购入这个UPS之后,我才了解到这个UPS使用Apcupsd会有兼容性问题,存在不定期”失去连接”的情况。后面在网站摸爬滚打了半天后,发现大部分使用ping或者群晖这种方式来解决。然而我希望的是让我的Proxmox VE来发送UPS状态给其他设备的。那么既然群晖可以正常使用,这就意味着NUT与其不存在兼容性问题。
NUT服务器
安装
sudo apt install nut
列出当前全部的UPS并检查
lsusb
如:
Bus 001 Device 002: ID 051d:000x American Power Conversion Uninterruptible Power Supply
配置/etc/nut/nut.conf
本文件为必须配置的文件,用于指定NUT的工作方法
其字段为: MODE
参数分别为
none: 未配置
standalone: 本地模式
netserver: 服务器模式
netclient: 客户端模式
#备份
mv /etc/nut/nut.conf /etc/nut/nut.conf.bak
# 编辑
nano /etc/nut/nut.conf
参数说明
# 本地模式(单机模式)
# MODE=standalone
# 服务器模式
MODE=netserver
# 客户端模式
# MODE=netclient
配置/etc/nut/ups.conf
该文件一般用于定义一些UPS的基本参数
你可以使用upsdrvctl来启动或者关闭你的设备
使用upsd来监视你的设备状态
#备份
mv /etc/nut/ups.conf /etc/nut/ups.conf.bak
# 编辑
nano /etc/nut/ups.conf
参数说明
# UPS的唯一标识名
# 使用中括号将其包住,可以是任意字符串,如:
# 但是如果需要群晖访问,则一定需要为ups
[ups]
# 设备驱动使用USB外设
driver = usbhid-ups
# 端口设置为自动即可
port = auto
# 我们可以添加一些描述,如:
desc = "UPS Server"
#
# 一些其他的参数
#
# 来启动程序,部分设备不支持失败重试的功能,这种情况下,我们可以
# 将maxretry,retrydelay注释掉
# 启动驱动程序失败的尝试次数
# maxretry = 3
# 每次尝试的间隔时间,默认为5秒
# retrydelay = 5
# sdorder,多个UPS时,用于指定关机顺序
# nolock,不推荐使用
# maxstartdelay,启动的最长等待时间,默认为45秒
# 使用这个标签来标示忽略ups的通知,采用以下的设置
ignorelb
battery.charge < battery.charge.low
battery.runtime < battery.runtime.low
# The idea is to set the battery.charge.low and/or battery.runtime.low levels in ups.conf to a value that gives enough time to cleanly shutdown your system:
override.battery.charge.low = 50
override.battery.runtime.low = 180
使用
upsdrvctl start
配置/etc/nut/upsd.conf
# 备份
mv /etc/nut/upsd.conf /etc/nut/upsd.conf.bak
# 编辑
nano /etc/nut/upsd.conf
参数说明
# MAXAGE
## 当UPS设备停止更新,超过$MAXAGE的时长后,UPSD将其标志为停止更新的陈旧数据,默认为15秒
## 应该在你的设备难以在15秒内保持更新时才使用本字段
#
# STATEPATH
## 获取UPS驱动程序状态更新的路径,默认为/var/run/nut
#
# LISTEN
# 用于监听的地址与端口,默认为本地地址以及3493端口
LISTEN 127.0.0.1 3493
LISTEN 192.168.1.x 3493
# LISTEN ::1 3493
#
# MAXCONN
# 最大连接数,你可以根据你的需求,在必要时设置最大的连接数,当超过连接数后,将拒绝新的接入
# 默认1024
#
# CERTFILE
# SSL安全证书地址
配置/etc/nut/upsd.users
用于配置访问UPSD的用户
使用中括号包裹用户名,用户名、密码区分大小写
正确配置参数之后,我们将在upsmon.conf中使用如下方式进行访问
MONITOR myups@localhost 1 upsmon pass master (or slave)
# 备份
mv /etc/nut/upsd.users /etc/nut/upsd.users.bak
# 编辑
nano /etc/nut/upsd.users
参数说明
# actions: 包括SET以及FSD两种,SET可更改UPS参数,FSD可以强制关机
#
# instcmds: 包括如下:
#
# test.panel.start 启动前面板测试
# test.battery.start-开始电池测试
# test.battery.stop-停止电池测试
# calibrate.start-开始校准
# calibrate.stop-停止校准
#
# upsmon: 包括有master,slave
#
# 用户名
[admin]
# 密码
password = xxxxxxxxxxxxxxxx
# 行为
actions = SET FSD
# 可控方式
instcmds = ALL
# 角色
upsmon master
# 用户名
[ups]
# 密码
password = xxxxxxxxxxxxxxxx
# 行为
actions = SET
# 可控方式
instcmds = ALL
# 角色
upsmon slave
# 群晖默认
[monuser]
password = secret
upsmon slave
配置/etc/nut/upsmon.conf
# 备份
mv /etc/nut/upsmon.conf /etc/nut/upsmon.conf.bak
# 编辑
nano /etc/nut/upsmon.conf
参数说明
# RUN_AS_USER
# 运行upsmon的用户,建议该用户不应具有写入本文件的权限
# 当你希望指定非编译时写入的用户来运行upsmon,且不详使用-u来指定,可以将该用户写入本文件
# 该用户应加入nut群组,并获得本文件的读取权限
# RUN_AS_USER nutmon
#
#
# MONITOR <system> <powervalue> <username> <password> ("master"|"slave")
# 声明监听系统的一些配置
# <system> 为前面设置的UPS名,在其后面应加上@localhost或者其他域名方式,如: ups@localhost
# <powervalue> 电池数量,一般为1
# <username> 用户名,在/etc/nut/upsd.users中所配置的用户名
# <password> 密码,在/etc/nut/upsd.users中所配置的密码
# <master> 运行角色,在/etc/nut/upsd.users中所配置的角色
MONITOR ups@localhost 1 admin QnoJZfGKjZ3SCC8t master
#
#
# MINSUPPLIES
# 最少保持供电的数量
# 一般家用为1
MINSUPPLIES 1
#
#
# SHUTDOWNCMD
# 关机命令,根据系统进行配置
# 一般为SHUTDOWNCMD "/sbin/shutdown -h +0"
SHUTDOWNCMD "/sbin/shutdown -h +0"
#
#
# NOTIFYCMD
# 通知命令
# 可以用来执行一些脚本,比如发送邮箱什么的
# 其与NOTIFYFLAG相互搭配使用
#
#
# POLLFREQ 正常工作时的轮询频率,过久会导致错过一些短暂的停电信息,过短会导致查询过于频繁,默认为5秒
POLLFREQ 5
#
#
# POLLFREQALERT 正常供电后的轮询频率,官方建议可以比上面的时间久一点。默认为5秒
POLLFREQALERT 5
#
#
# HOSTSYNC
# 主机等待从机断开连接的时间,如果超过这个时间,将无视从机。
# 从机中,该值具有同样效果,如果从机认为UPS状态不佳,需要进行关机处理,则将等待这么长时间以便主机做一些处理,如果,超过这个时间,则无视主机,进行关机。
# 默认值为15
HOSTSYNC 30
#
#
# DEADTIME
# UPSMON需要UPS在每个一段时间内提供状态信息,由POLLFREQ与POLLFREQALERT设置
# 如果超过$DEADTIME没有状态更新,则认为UPS已经"死亡",设备可能会进行关机。
# 官方建议,该数值应该为POLLFREQ与POLLFREQALERT中最大值的三倍,以免UPS永远都是"死亡"的。
DEADTIME 15
#
#
# POWERDOWNFLAG
# 在主系统上强制关闭UPS的标志文件
# 你应该在中检查此文件是否存在
# 默认为 POWERDOWNFLAG /etc/killpower
POWERDOWNFLAG /etc/killpower
#
#
# NOTIFYMSG
# 当UPS事件发生改变时,发送的消息
# 格式为 NOTIFYMSG <类型> "消息"
#
# ONLINE : UPS 重新连接
# ONBATT : UPS 使用电池
# LOWBATT : UPS 电池电量低,如果是使用电池模式,则认为状态严重,可能需要关机
# FSD : UPS 正在被主机关机
# COMMOK : 与UPS建立通信
# COMMBAD : UPS失去通讯
# SHUTDOWN : 系统正在关机
# REPLBATT : UPS电池损坏
# NOCOMM : UPS不可用
# NOPARENT : 关闭系统的进程死亡
#
NOTIFYMSG ONLINE "UPS %s on line power"
NOTIFYMSG ONBATT "UPS %s on battery"
NOTIFYMSG LOWBATT "UPS %s battery is low"
NOTIFYMSG FSD "UPS %s: forced shutdown in progress"
NOTIFYMSG COMMOK "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 NOCOMM "UPS %s is unavailable"
NOTIFYMSG NOPARENT "upsmon parent process died - shutdown"
#
#
# NOTIFYFLAG
# 通知的标志,用来当事件发生改变时,改变UPSMON的行为
# 默认情况下,UPSMON写入系统日志以及向所有登录用户发送全局消息(WALL)
# 格式为 NOTIFYFLAG <类型> <标志>+<标志>+...
#
# 标志参数
# SYSLOG - 将消息写入系统日志
# WALL - 发送全局(所有登录用户)消息
# EXEC - 附带消息内容去执行NOTIFYCMD
# IGNORE - 忽略,不做任何事情
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL
NOTIFYFLAG FSD SYSLOG+WALL
NOTIFYFLAG COMMOK SYSLOG+WALL
NOTIFYFLAG COMMBAD SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
NOTIFYFLAG REPLBATT SYSLOG+WALL
NOTIFYFLAG NOCOMM SYSLOG+WALL
NOTIFYFLAG NOPARENT SYSLOG+WALL
#
#
# RBWARNTIME
# 更换电池警告时间
# 默认12小时
RBWARNTIME 43200
#
#
# NOCOMMWARNTIME
# 无通讯警告时间
# 默认300秒
NOCOMMWARNTIME 300
#
#
# FINALDELAY
# 关闭系统前的等待时间
# 不能过高,否则可能到UPS电量耗尽前无法完成正确关机
# 如果从机上的FINALDELAY大于主机上的HOSTSYNC,主机将放弃从机,断开连接
# 默认5秒
FINALDELAY 15
#
#
# CERTPATH
# SSL证书路径
#
#
# CERTIDENT
# SSL证书密码
#
#
# CERTHOST
# SSL主机安全属性
#
#
# CERTVERIFY
# SSL证书验证
#
#
# FORCESSL
# 强制UPSMON使用安全证书
# 默认1,false
测试
# 使用upc+upsname来获得相关信息
# 如
upsc ups
# 理应输出UPS的相关信息则配置完成
文章评论