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:

/etc/ups/upsd.users
[monuser]
password = password
upsmon master
/etc/ups/upsmon.conf
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:

/etc/ups/ups.conf
[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

/etc/ups/ups.conf
[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 2024-04-18