NUT
Das Hauptziel des Projekts „Network UPS Tools“ (NUT) ist die Unterstützung von Stromversorgungsgeräten wie unterbrechungsfreien Stromversorgungen, Stromverteilungseinheiten und Solar-Controllern. NUT bietet dafür viele Steuerungs- und Überwachungsfunktionen mit einer einheitlichen Steuerungs- und Verwaltungsschnittstelle; mehr als 100 verschiedene Hersteller und mehrere tausend Modelle sind kompatibel.
Installation und Konfiguration
Siehe https://networkupstools.org/docs/user-manual.chunked/ar01s06.html
# from EPEL repo
dnf -y install nut
Automatischer Scan der USV-Eigenschaften:
nut-scanner
# using snmpv3
nut-scanner --start_ip 192.0.2.30 --end_ip 192.0.2.37 --snmp_scan --secLevel authNoPriv --secName myuser --authPassword linuxfabrik --authProtocol MD5
Anschliessend gefundene Ergebnisse zur /etc/ups/ups.conf
hinzufügen (Beispiel [hp-usv]
, siehe weiter unten). Ohne konfigurierte /etc/ups/ups.conf
können die nut-Dienste nicht starten - im Notfall also anhand des Beispiels weiter unten manuell konfigurieren.
Dann:
systemctl start nut-driver
systemctl start nut-server
# test if values can be read
upsc hp-usv@localhost
Device aktiv überwachen:
[monuser]
password = password
upsmon master
MONITOR hp-usv@localhost 1 monuser password master
systemctl start nut-monitor
tail -f /var/log/messages
systemctl enable nut-server
systemctl enable nut-monitor
# maybe need to adjust or extend /usr/lib/udev/rules.d/62-nut-usbups.rules (for USB-Devices)
SNMP-UPS
SNMP-USVs sind etwas aufwändiger einzubinden. Falls die USVs per SNMP erreicht werden können/sollen, muss Net-SNMP installiert werden:
dnf -y install net-snmp
Automatischer Scan der USV-Eigenschaften:
nut-scanner --start_ip 192.0.2.30 --end_ip 192.0.2.37 --snmp_scan --secLevel authNoPriv --secName myuser --authPassword linuxfabrik --authProtocol MD5
Auch hier: wenn nichts gefunden wurde, manuell konfigurieren:
[snmpv3]
driver = snmp-ups
port = 192.0.2.36:161
snmp_version = v3
secLevel = authNoPriv
secName = mysecurityname
authPassword = myauthenticationpassphrase
#privPassword = myprivatepassphrase
desc = "Example SNMP v3 device, with the highest security level"
SELinux - nicht schön, aber anders haben wir es nicht geschafft, NUT für SNMP unter SELinux zu überreden:
setenforce 0
# semanage permissive --add nut_upsd_t
# semanage permissive --add nut_upsdrvctl_t
# semanage permissive --add nut_upsmon_t
nach dem Start der Daemons:
cd /tmp
ausearch -c 'snmp-ups' --raw | audit2allow -M my-snmpups
semodule -i my-snmpups.pp
setenforce 1
Schwellwerte anpassen
Siehe https://networkupstools.org/docs/man/apcsmart.html#_ignoring_lb_state
[hp-usv]
driver = "usbhid-ups"
port = "auto"
vendorid = "0463"
productid = "ffff"
product = "Eaton 5SC"
serial = "4711"
vendor = "EATON"
ignorelb
override.battery.charge.low = 19
systemctl restart nut-server
# Werte überprüfen
upsc hp-usv@localhost
Mails bei Events versenden
Siehe: https://networkupstools.org/docs/user-manual.chunked/ar01s07.html
semanage permissive --add nut_upsmon_t
.. code-block:: text
:caption: /etc/ups/notify-mail
#!/usr/bin/env bash
echo "$*" | mail -s "UPS Event $NOTIFYTYPE for $UPSNAME@$(/usr/bin/hostname)" -r noreply@example.com admin@example.com
chmod +x /etc/ups/notify-mail
.. code-block:: text
:caption: /etc/ups/upsmon.conf
NOTIFYCMD /usr/bin/notify-email
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
systemctl restart nut-monitor
systemctl restart nut-server
Beispiele für Benachrichtigungen
Subject: UPS Event ONBATT for hp-usv@localhost
UPS hp-usv@localhost on battery
Subject: UPS Event ONLINE for hp-usv@localhost
UPS hp-usv@localhost on line power
Built on 2023-11-28