Add complete UPS monitoring system with monthly battery testing
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>
This commit is contained in:
80
proxmox/ups/config/upsd.users
Normal file
80
proxmox/ups/config/upsd.users
Normal file
@@ -0,0 +1,80 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user