This commit adds a comprehensive UPS monitoring and management system for the Proxmox cluster with automated shutdown orchestration and monthly battery health testing. Features: - NUT (Network UPS Tools) configuration for INNO TECH USB UPS - Automated cluster shutdown on power failure (3-minute grace period) - Monthly automated battery testing with health evaluation - Email notifications via PVE::Notify system - WinNUT monitoring client for Windows VM 201 Components added: - config/: NUT configuration files (ups.conf, upsd.conf, upsmon.conf, etc.) - scripts/ups-shutdown-cluster.sh: Orchestrated cluster shutdown - scripts/ups-monthly-test.sh: Monthly battery test with email reports - scripts/upssched-cmd: Event handler for UPS state changes - docs/: Complete installation and usage documentation Key findings: - UPS battery.charge reporting has 10-40 second delay after test start - Test must monitor voltage drop (1.5-2V) and charge drop (9-27%) - Battery health evaluation: EXCELLENT/GOOD/FAIR/POOR based on discharge rate - Email notifications use Handlebars templates without Unicode emojis for compatibility Configuration: - UPS: INNO TECH (Voltronic protocol, vendor 0665:5161) - Primary node: pvemini (10.0.20.201) with USB connection - Monthly test: cron 0 0 1 * * /opt/scripts/ups-monthly-test.sh - Shutdown timer: 180 seconds on battery before cluster shutdown Documentation includes complete installation guides for NUT server, WinNUT client, and troubleshooting procedures. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
81 lines
2.3 KiB
Plaintext
81 lines
2.3 KiB
Plaintext
# Network UPS Tools: Example upsd.users
|
|
#
|
|
# This file sets the permissions for upsd - the UPS network daemon.
|
|
# Users are defined here, are given passwords, and their privileges are
|
|
# controlled here too. Since this file will contain passwords, keep it
|
|
# secure, with only enough permissions for upsd to read it.
|
|
|
|
# --------------------------------------------------------------------------
|
|
|
|
# Each user gets a section. To start a section, put the username in
|
|
# brackets on a line by itself. To set something for that user, specify
|
|
# it under that section heading. The username is case-sensitive, so
|
|
# admin and AdMiN are two different users.
|
|
#
|
|
# Possible settings:
|
|
#
|
|
# password: The user's password. This is case-sensitive.
|
|
#
|
|
# --------------------------------------------------------------------------
|
|
#
|
|
# actions: Let the user do certain things with upsd.
|
|
#
|
|
# Valid actions are:
|
|
#
|
|
# SET - change the value of certain variables in the UPS
|
|
# FSD - set the "forced shutdown" flag in the UPS
|
|
#
|
|
# --------------------------------------------------------------------------
|
|
#
|
|
# instcmds: Let the user initiate specific instant commands. Use "ALL"
|
|
# to grant all commands automatically. There are many possible
|
|
# commands, so use 'upscmd -l' to see what your hardware supports. Here
|
|
# are a few examples:
|
|
#
|
|
# test.panel.start - Start a front panel test
|
|
# test.battery.start - Start battery test
|
|
# test.battery.stop - Stop battery test
|
|
# calibrate.start - Start calibration
|
|
# calibrate.stop - Stop calibration
|
|
#
|
|
# --------------------------------------------------------------------------
|
|
#
|
|
# Example:
|
|
#
|
|
# [admin]
|
|
# password = mypass
|
|
# actions = SET
|
|
# instcmds = ALL
|
|
#
|
|
|
|
#
|
|
# --- Configuring for a user who can execute tests only
|
|
#
|
|
# [testuser]
|
|
# password = pass
|
|
# instcmds = test.battery.start
|
|
# instcmds = test.battery.stop
|
|
|
|
#
|
|
# --- Configuring for upsmon
|
|
#
|
|
# To add a user for your upsmon, use this example:
|
|
#
|
|
# [upsmon]
|
|
# password = pass
|
|
# upsmon primary
|
|
# or
|
|
# upsmon secondary
|
|
#
|
|
# The matching MONITOR line in your upsmon.conf would look like this:
|
|
#
|
|
# MONITOR myups@localhost 1 upsmon pass primary (or secondary)
|
|
#
|
|
# See comments in the upsmon.conf(.sample) file for details about this
|
|
# keyword and the difference of NUT secondary and primary systems.
|
|
[admin]
|
|
password = parola99
|
|
actions = SET
|
|
instcmds = ALL
|
|
upsmon master
|