Alpine容器中的网络UPS工具(nut)包,包含支持Nagios监控UPS设备的配置。此多架构镜像支持Intel/AMD和ARM(如树莓派等)。
参见源代码目录中提供的kubernetes.yaml/docker-compose.yml文件;为访问USB设备,需以特权模式运行。
为API用户选择随机密码,并将其放入Docker密钥(若不使用swarm或kubernetes,可将其放在docker-compose.yml底部所示的文件路径中,例如/var/adm/admin/secrets/nut-upsd-password)。
容器将暴露TCP端口3493;要通过标准Nagios插件访问,需设置服务调用:
/usr/lib/nagios/plugins/check_ups -H <docker主机> -u <名称> [ -p <端口> ]
作为用于监控的只读服务,此容器不尝试锁定网络安全。
已通过最常见的UPS类型(APC消费级产品)验证;Tripp Lite型号也(可能)适用。CyberPower型号需将MAXAGE参数设置为长于默认值(25)。注意,APC的usbhid-ups驱动要求提供正确的12位硬件序列号。其他参数默认值均可正常工作。
若使用其他型号UPS,可通过将ups.conf、upsd.conf、upsmon.conf和/或upsd.users文件挂载到/etc/nut/local来覆盖默认配置。
若主机连接多个UPS,可运行多个此容器副本,并将每个容器的3493端口绑定到不同的TCP端口。
此仓库包含构建kubernetes集群的完整说明,可使用helm或kubernetes.yaml通过make启动,并在克隆仓库后自定义Makefile.vars:
git clone [***] cd docker-tools/k8s # 此make目标在Makefile.instances中定义 make nut-01
以下变量可根据需要从kubernetes.yaml或docker-compose.yml传递给镜像:
| 变量 | 默认值 | 描述 |
|---|---|---|
| ACTIONS | 允许的一个或多个用户操作(set、fsd) | |
| API_USER | upsmon | API用户 |
| API_PASSWORD | API密码(若不使用密钥) | |
| DESCRIPTION | UPS | 用户分配的描述 |
| DRIVER | usbhid-ups | 驱动(参见兼容性列表) |
| GROUP | nut | 本地组 |
| INSTCMDS | all或允许的命令列表,参见cmdvartab的CMDDESC值 | |
| MAXAGE | 15 | 声明驱动无响应前的秒数 |
| NAME | ups | 用户分配的配置名称 |
| NOTIFYCMD | 通知时运行的脚本完整路径 | |
| NUT_DEBUG_LEVEL | 0 | 调试消息的详细程度 |
| NUT_QUIET_INIT_SSL | true | 禁止多余的启动警告 |
| NUT_QUIET_INIT_UPSNOTIFY | true | 禁止多余的启动警告 |
| POLLINTERVAL | ups.conf的轮询间隔 | |
| PORT | auto | 主机上的设备端口(例如/dev/ttyUSB0) |
| SDORDER | UPS关闭顺序,设为-1禁用关闭 | |
| SECRETNAME | nut-upsd-password | 用于API用户的密钥名称 |
| SERIAL | UPS的硬件序列号 | |
| SERVER | primary | 主实例在从实例之后关闭 |
| ULIMIT | 2048 | 打开文件数限制 |
| USER | nut | 本地用户 |
| VENDORID | ups.conf的供应商ID |
要定义通知脚本,通过docker-compose文件将其挂载到/usr/local/bin下,或在helm值覆盖中设置,并设置NOTIFYCMD环境变量。(不要将任何可执行脚本挂载到/etc/nut下,应放在/usr/local下)。
若需要除usbhid-ups外的其他驱动,可通过以下命令列出所有支持的驱动:
docker run --rm --entrypoint /bin/ls instantlinux/nut-upsd /usr/lib/nut
入口点脚本可基于上述环境变量设置参数;每个驱动都有自己的参数(可通过挂载自定义ups.conf文件配置),文档如下:
MYDRIVER=liebert docker run --rm --entrypoint /usr/lib/nut/$MYDRIVER instantlinux/nut-upsd -h Network UPS Tools - Liebert MultiLink UPS driver 1.02 (3.15.0_alpha20210804-3402-gced***) Warning: This is an experimental driver. Some features may not function correctly. usage: liebert -a <id> [OPTIONS] -a <id> - autoconfig using ups.conf section <id> - note: -x after -a overrides ups.conf settings -V - print version, then exit -L - print parseable list of driver variables -D - raise debugging level -q - raise log level threshold -h - display this help -k - force shutdown -i <int> - poll interval -r <dir> - chroot to <dir> -u <user> - switch to <user> (if started as root) -x <var>=<val> - set driver variable <var> to <val> - example: -x cable=940-0095B Acceptable values for -x or ups.conf in this driver: Override manufacturer name : -x mfr=<value> Override model name : -x model=<value>
对于Tripp Lite型号,可能需要在环境中指定VENDORID为09ae。还需检查是否需要设置POLLINTERVAL。对于任何品牌或型号,可通过主机上的root shell执行以下命令识别idVendor和iSerial值:
# lsusb ... Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply # lsusb -D /dev/bus/usb/001/005 Device: ID 051d:0002 American Power Conversion Uninterruptible Power Supply ... idVendor 0x051d American Power Conversion idProduct 0x0002 Uninterruptible Power Supply bcdDevice 0.90 iManufacturer 1 American Power Conversion iProduct 2 Back-UPS RS 1500G FW:865.L6 .D USB FW:L6 iSerial 3 4B1624P26350
若需要udev规则设置权限,在运行容器前配置主机。例如:
cat >/etc/udev/rules.d/99-usb-serial.rules <<EOF ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="09ae", ATTRS{idProduct}=="2012", MODE="0660", GROUP="nut" EOF udevadm control --reload-rules && udevadm trigger
在Debian trixie下启动时,可通过将nofile ulimit设置为小于系统默认值来防止内存不足错误:参见issue #1672。此处默认设置为2048。
若启动时看到以下错误消息:
Unable to use old-style MONITOR line without a username Convert it and add a username to upsd.users - see the documentation
最可能的原因是缺少或为空的密钥(nut-upsd-password)。
若API用户需要密码,有两种指定方式:将值本身作为环境变量API_PASSWORD传递(不安全),或按以下方式定义Docker密钥:
| 密钥 | 描述 |
|---|---|
| nut-upsd-password | API用户的密码 |
如需对此镜像进行改进,请参阅CONTRIBUTING。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429