CentOS 7 配置 APC UPS 监控软件 Apcupsd

APC UPS Daemon

UPS (Uninterrupted Power System) 利用电池化学能作为后备能量, 在市电断电等电网故障时, 不间断地为用户设备提供 (交流) 电能的一种能量转换装置。

购买 UPS

购买 UPS 的时候尽量购买在线式的 UPS

  • 在线式 UPS, 提供正弦波输出, 价格较贵但效果好, 噪音大
  • 后备式 UPS, 通常输出模拟正弦波或方波, 效果差, 不工作时很安静 (不推荐, 没钱还是用这个吧)

由于官方没有为 Linux 提供配套的守护程序, Apcupsd 是一个社区维护的项目

Apcupsd 安装及配置

UPS 配给了一条是 USB+串口 的电缆。我们使用这条电缆将 UPS 和服务器相连接

# 安装 USB 工具
yum install libusbx libusb usbutils

# lsusb 这里可以检查 UPS 的 usb 有没有被识别
lsusb

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

# usb-devices 这个可以展示 usb 的详细信息
usb-devices

T:  Bus=01 Lev=01 Prnt=01 Port=13 Cnt=01 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=051d ProdID=0002 Rev=00.90
S:  Manufacturer=American Power Conversion
S:  Product=Back-UPS RS 1500G FW:878.L5 .I USB FW:L5
S:  SerialNumber=********
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

# 安装 Apcupsd
yum install apcupsd

配置 Apcupsd

编辑配置文件 /etc/apcupsd/apcupsd.conf, 以下是推荐的配置示例

# 用于将 UPS 连接到计算机的电缆类型。采用 USB 接口
UPSCABLE usb
# 拥有的 apcups 类型, DEVICE 留空它会自动识别
UPSTYPE usb
DEVICE
# 每 60秒 轮询一次 UPS 状态
POLLTIME 60
# Apcupsd 为指定目录中的串行或 USB 端口创建一个锁文件。
LOCKFILE /var/spool/lock
# Apccontrol 和事件脚本所在的目录。
SCRIPTDIR /usr/local/etc/apcupsd
# POWERFAIL 和 NOLOGIN 文件放到 /var/run (实际上并不需要)
PWRFAILDIR /var/run
NOLOGINDIR /var/run
# 等待 6秒 才开始真正的 ONBATTERY 操作: 如果电源只是短暂地发生瞬断则不做反应。
ONBATTERYDELAY 6
# 当停电导致电池剩余容量低于 8% 时, 立即执行关机操作。默认值为 5
BATTERYLEVEL 8
# 当停电导致剩余容量低于 3分钟时, 立即执行关机操作。
MINUTES 3
# 0 禁止按掉电时间为关机判断条件。发生电源故障后, apcupsd 将在指定的秒数过期后关闭系统。
TIMEOUT 0
# 指定请求登录用户从系统注销的广播消息之间的时间 (以秒为单位)。仅当 UPS 使用电池运行时, 此计时器才会启动。每 5分钟 (300s) 警告一次登录的用户系统发生掉电。
ANNOY 300
# 首次掉电后 1分钟 (60s) 告知登录的用户发生掉电。
ANNOYDELAY 60
# 禁止在掉电时阻止用户登录。
NOLOGON disable
# 禁止 apcupsd 关闭电源。
KILLDELAY 0
# 启用 NIS 服务 (提供让 munin 收集的 UPS 数据)。
NETSERVER on
# NIS 服务监听 127.0.0.1:3551
NISIP 127.0.0.1
NISPORT 3551
# 在 /var/log/apcupsd.events 中记录 "事件"。
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 1024
# 设置 ups 的模式, 我们主要用主从模式
UPSCLASS standalone
# 设置为 "禁用" 以进行正常的独立操作, 指示您正在禁用 Share-UPS 接口扩展器支持。
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
FACILITY DAEMON
SENSITIVITY H
# UPS 在供电恢复后等待 60秒 再恢复对设备的供电
WAKEUP 60
LOWBATT 02
# 每两周进行一次自检
SELFTEST 336

配置完了需要重启 Apcupsd 服务

systemctl restart apcupsd

设置开机启动

systemctl enable apcupsd

检查 Apcupsd 运行状态

使用 apcaccess 检查是否正常运行

APC      : 001,038,0986
DATE     : 2019-02-21 17:22:55 +0800
HOSTNAME : NAS
VERSION  : 3.14.14 (31 May 2016) redhat
UPSNAME  : UPS-Network
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2019-01-16 21:31:05 +0800
MODEL    : Back-UPS RS 1500G
STATUS   : ONLINE
LINEV    : 236.0 Volts
LOADPCT  : 26.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 25.0 Minutes
MBATTCHG : 10 Percent
MINTIMEL : 6 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 176.0 Volts
HITRANS  : 294.0 Volts
ALARMDEL : 30 Seconds
BATTV    : 27.2 Volts
LASTXFER : Automatic or explicit self test
NUMXFERS : 4
XONBATT  : 2019-02-16 08:34:11 +0800
TONBATT  : 0 Seconds
CUMONBATT: 67 Seconds
XOFFBATT : 2019-02-16 08:34:21 +0800
LASTSTEST: 2019-02-16 08:34:11 +0800
SELFTEST : NO
STATFLAG : 0x05000008
SERIALNO : ******
BATTDATE : 2017-11-08
NOMINV   : 230 Volts
NOMBATTV : 24.0 Volts
NOMPOWER : 865 Watts
FIRMWARE : 878.L5 .I USB FW:L5
END APC  : 2019-02-21 17:23:00 +0800

原文

Apcupsd UPS control software
APC UPS Daemon unter CentOS 7.x
Centos7下ups监控apcupsd的使用
配合 APC BE550G UPS 的 apcupsd 配置

最后更新于 2019-02-21
使用 Hugo 构建
主题 StackJimmy 设计