Forgot your password?

Forgot your username?

All about IT, Web and Development.
By users for users.

USV Management mit APCUPSd auf Debian / Ubuntu



Für Windows bietet APC die Software Power Chute zur Verwaltung und Steuerung seiner USV Systeme an.


Unter Linux steht mit dem APCUPSd eine ähnliche Implementierung zur Verfügung.


Installation


In Debian und Ubuntu sind bereits fertige Pakete in den Repositories enthalten.

sudo apt-get install apcupsd


Konfiguration


Die Konfiguration erfolgt über die Konfigurationsdatei /etc/apcupsd/apcupsd.conf.
Nach der Installation editieren wir diese mit dem Editor nano.

sudo nano /etc/apcupsd/apcupsd.conf

Im folgenden ist die Konfiguration für eine BackUPS Pro 900 aufgeführt. Diese wird über USB angebunden.

UPSNAME ups900
UPSCABLE usb
UPSTYPE usb


Hier lassen sich noch weitere Optionen setzen:

  • ONBATTERYDELAY - Zeit in Sekunden nach einem Stromausfall bis das ONBATTERY Event ausgelöst wird

  • BATTERYLEVEL - Verbleibende Restkapazität bei der ein Herunterfahren ausgelöst wird

  • MINUTES - Verbleibende Restlaufzeit bei der ein Herunterfahren ausgelöst wird



  • Skripte


    Der APCUPS Dämon löst bei bestimmten Events automatisch die passenden Skripte in /etc/apcupsd/ auf.

    • commfailure - Wird aufgerufen wenn die Verbindung zur USV unterbrochen wurde

    • commok - Verbindung zur USV wiederhergestellt ist

    • doshutdown - Aktionen beim Herunterfahren (z.B. bei niedrigem Batteriestand)

    • killpower - Abschaltung der USV

    • offbattery - Netzbetrieb wiederhergestellt

    • onbattery - Aktionen beim Betrieb auf Batterie



    E-Mail Benachrichtigungen


    Über die oben genannten Skripte lässt sich auch eine E-Mail Benachrichtigung einrichten. Im folgenden erstellen wir eine Benachrichtigung bei einem Stromausfall und eine Meldung, wenn dieser wieder vorhanden ist.

    Hinweis: Voraussetzung für eine funktionierende Mail Benachrichtigung ist ein konfiguriertes Mailsystem / Mail Relay Agent.

    Die betreffenden Skripte sind onbattery (Stromausfall) und offbattery (Strom wiederhergestellt).

    sudo nano /etc/apcupsd/onbattery
    #!/bin/sh
    #
    # This shell script if placed in /etc/apcupsd
    # will be called by /etc/apcupsd/apccontrol when the UPS
    # goes on batteries.
    # We send an email message to root to notify him.
    #
    SYSADMIN=admin@example.com
    APCUPSD_MAIL="/usr/bin/mail"

    HOSTNAME=`hostname`
    MSG="$HOSTNAME Power Failure !!!"
    #
    (
       echo "Subject: $MSG"
       echo " "
       echo "$MSG"
       echo " "
       /sbin/apcaccess status
    ) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
    exit 0


    Hier muss die Variable SYSADMIN an die eigene Konfiguration angepasst werden.


    sudo nano /etc/apcupsd/offbattery
    #!/bin/sh
    #
    # This shell script if placed in /etc/apcupsd
    # will be called by /etc/apcupsd/apccontrol when the    
    # UPS goes back on to the mains after a power failure.
    # We send an email message to root to notify him.
    #
    SYSADMIN=admin@example.com
    APCUPSD_MAIL="/usr/bin/mail"

    HOSTNAME=`hostname`
    MSG="$HOSTNAME Power has returned"
    #
    (
       echo "Subject: $MSG"
       echo " "
       echo "$MSG"
       echo " "
       /sbin/apcaccess status
    ) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
    exit 0


    Mehrere Server herunterfahren


    Sind an der USV mehrere Systeme angeschlossen möchte man diese evtl. ebenfalls herunterfahren. Hier kann die Netzwerkfunktion von APCUPSd genutzt werden.

    Der an die USV Angeschlossene Server (z.B. ein stromsparendes Raspberry Pi*) dient als Master und startet den Shutdown auf den anderen Servern.


    Master


    Hierzu passen wir die Konfiguration auf dem Master Server an. In unserem Fall besitzt dieser die IP-Adresse 192.168.1.10

    NETSERVER on
    NISIP 0.0.0.0
    NISPORT 3551


    Slaves


    Auf den Slaves wird ebenfalls der APCUPS Dämon benötigt. Dieser wird nun an den Master gekoppelt.

    UPSNAME ups900
    UPSCABLE ether
    UPSTYPE net
    DEVICE 192.168.1.10:3551

    BATTERYLEVEL 5
    MINUTES 3

    NETSERVER on
    NISIP 127.0.0.1
    NISPORT 3551

    UPSCLASS standalone
    UPSMODE disable



    USV Status


    Um den aktuellen Status der USV auszugeben kann folgender Befehl verwendet werden.

    apcaccess


    Fazit


    Auf den ersten Blick wirkt der APCUPSd sehr spartanisch. Mit den eigenen Skripten und der Netzwerkfunktionalität bietet sich ein sehr umfangreiches und anpassbares Tool.



    Michael Kostka

    Fachinformatiker / Systemintegration
    Ich schreibe hier regelmäßig zu den Themen Android, Web, Linux und Hardware.

    Raspberry Pi Starter Kit
DataCloud

Leave a comment

I have read the privacy policy and agree to electronically store and process my input data to answer the request.