Ako monitorovať stav USB UPS cez SNMP
Ako monitorovať stav USB UPS cez SNMP
Existuje niekoľko počítačov s UPS pripojeným cez USB. Všetky počítače používajú program apcupsd. Povedzme, že chcete zhromaždiť informácie o stave napájania pre každú jednotku na jednom mieste. Keďže tam snmpd už beží, bolo by logické rozšíriť jeho funkcionalitu.
Reklama
Nižšie uvedené riešenie, s láskavým dovolením Adminov blog, bude zbierať údaje zo všetkých jednotiek snmpd naraz.
Aby sme mohli monitorovať stav USB UPS cez SNMP, musíme najprv upraviť konfiguráciu démona snmp.
Prípravky
Pridá nasledujúce do konfigurácie snmpd.conf.
# UPS APC
prejsť .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Obsah skriptu /etc/snmp/apcupsd.sh je nasledujúci.
#!/bin/sh -f # Skontrolujte, či je apcupsd online. apcaccess > /dev/null 2>&1 || výstup 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Požadované OID # # Spracujte požiadavky SET jednoduchým zaznamenaním priradenej hodnoty. # Všimnite si, že takéto "priradenia" nie sú trvalé, # ani nie je overená syntax alebo požadovaná hodnota. # if [ "$1" = "-s" ]; potom. echo $* >> /tmp/passtest.log. výstup 0. fi # # GETNEXT requesty - určenie ďalšej platnej inštancie. # if [ "$1" = "-n" ]; potom. prípad "$REQ" v. $PLACE| \ $PLACE.0| \ $PLACE.0.*| \ $PLACE.1| \ $ MIESTO.1.1.0*) RET=$MIESTO.1.1.1.0;; $PLACE.1*| \ $PLACE.2.0| \ $PLACE.2.0.*| \ $PLACE.2.1| \ $MIESTO.2.2.0*) RET=$MIESTO.2.2.1.0;; $MIESTO.2.2.1*) RET=$MIESTO.2.2.2.0;; $MIESTO.2.2.2*) RET=$MIESTO.2.2.3.0;; $MIESTO.2.2.3*) RET=$MIESTO.2.2.4.0;; $PLACE.2*| \ $PLACE.3.0*| \ $PLACE.3.1*| \ $ MIESTO.3.2.0*) RET=$MIESTO.3.2.1.0;; $PLACE.3.2.1*| \ $PLACE.3.2.2*| \ $ MIESTO.3.2.3*) RET=$MIESTO.3.2.4.0;; $PLACE.3.2.4*) RET=$MIESTO.3.2.5.0;; $PLACE.3.2*| \ $PLACE.4.0*| \ $PLACE.4.1*| \ $ MIESTO.4.2.0*) RET=$MIESTO.4.2.1.0;; $PLACE.4.2.1*) RET=$MIESTO.4.2.2.0;; $PLACE.4.2.2*) RET=$MIESTO.4.2.3.0;; $ MIESTO.4.2.3*) RET=$MIESTO.4.2.4.0;; $PLACE.4.2.*| \ $PLACE.5*| \ $PLACE.6*| \ $PLACE.7.0*| \ $PLACE.7.1*| \ $PLACE.7.2.0*| \ $PLACE.7.2.1*| \ $MIESTO.7.2.2*) RET=$MIESTO.7.2.3.0;; $MIESTO.7.2.3*) RET=$MIESTO.7.2.4.0;; $PLACE.7*| \ $PLACE.8.0*) RET=$MIESTO.8.1.0;; *) výstup 0;; esac. inak. # # Žiadosti GET - skontrolujte platnú inštanciu. # prípad "$REQ" v. $PLACE.1.1.1.0| \ $PLACE.2.2.1.0| \ $PLACE.2.2.2.0| \ $PLACE.2.2.3.0| \ $PLACE.2.2.4.0| \ $PLACE.3.2.1.0| \ $PLACE.3.2.4.0| \ $PLACE.3.2.5.0| \ $PLACE.4.2.1.0| \ $PLACE.4.2.2.0| \ $PLACE.4.2.3.0| \ $PLACE.4.2.4.0| \ $PLACE.7.2.3.0| \ $PLACE.7.2.4.0| \ $PLACE.8.1.0) RET=$REQ;; *) výstup 0;; esac. fi # # "Spracovať" požiadavky GET* - vráti pevne zakódovanú hodnotu. # echo "$RET" prípad "$RET" v. $PLACE.1.1.1.0) echo "reťazec"; apcaccess -u -p MODEL; výstup 0;; $PLACE.2.2.1.0) echo "Gauge32"; apcaccess -u -p BCHARGE; výstup 0;; $PLACE.2.2.2.0) echo "Gauge32"; apcaccess -u -p POLOŽKA; výstup 0;; $PLACE.2.2.3.0) echo "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); výstup 0;; $PLACE.2.2.4.0) echo "reťazec"; apcaccess -u -p BATTDATE; výstup 0;; $PLACE.3.2.1.0) echo "Gauge32"; apcaccess -u -p LINEV; výstup 0;; $PLACE.3.2.4.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; výstup 0;; $PLACE.3.2.5.0) echo "reťazec"; apcaccess -u -p LASTXFER; výstup 0;; $PLACE.4.2.1.0) echo "Gauge32"; apcaccess -u -p OUTPUTV; výstup 0;; $PLACE.4.2.2.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; výstup 0;; $PLACE.4.2.3.0) echo "Gauge32"; apcaccess -u -p LOADPCT; výstup 0;; $PLACE.4.2.4.0) echo "Gauge32"; apcaccess -u -p LOADPCT; výstup 0;; $PLACE.7.2.3.0) echo "reťazec"; apcaccess -u -p SELFTEST; výstup 0;; $PLACE.7.2.4.0) echo "reťazec"; apcaccess -u -p SELFTEST; výstup 0;; $PLACE.8.1.0) echo "Gauge32"; ozvena 1; výstup 0;; *) echo "reťazec"; echo "Potvrdiť... $RET $REQ"; výstup 0;; # Nemalo by sa to stať. esac.
Ak vás zaujímajú OID, môžete ich nájsť TU. Upozorňujeme, že niektoré modely UPS nevracajú všetky parametre alebo v nesprávnom formáte, takže kód môže obsahovať nepresnosti a útržky.
Teraz ste pripravení.
Ako monitorovať stav USB UPS cez SNMP
Ak chcete monitorovať stav USB UPS cez SNMP, spustite nasledujúci príkaz: snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Výstup bude takýto:
SNMPv2-SMI:: enterprises.318.1.1.1.1.1.1.0 = STRING: "Smart-UPS 750 "
SNMPv2-SMI:: podniky.318.1.1.1.2.2.1.0 = Gauge32: 100
SNMPv2-SMI:: podniky.318.1.1.1.2.2.2.0 = Gauge32: 36
SNMPv2-SMI:: podniky.318.1.1.1.2.2.3.0 = Timeticks: (432000) 1:12:00.00
SNMPv2-SMI:: podniky.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: podniky.318.1.1.1.3.2.1.0 = Gauge32: 227
SNMPv2-SMI:: podniky.318.1.1.1.3.2.4.0 = Gauge32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.5.0 = STRING: "Automatický alebo explicitný autotest"
SNMPv2-SMI:: podniky.318.1.1.1.4.2.1.0 = Gauge32: 227
SNMPv2-SMI:: podniky.318.1.1.1.4.2.2.0 = Gauge32: 50
SNMPv2-SMI:: podniky.318.1.1.1.4.2.3.0 = Gauge32: 13
SNMPv2-SMI:: podniky.318.1.1.1.4.2.4.0 = Gauge32: 13
SNMPv2-SMI:: podniky.318.1.1.1.7.2.3.0 = STRING: "NIE"
SNMPv2-SMI:: podniky.318.1.1.1.7.2.4.0 = STRING: "NIE"
SNMPv2-SMI:: podniky.318.1.1.1.8.1.0 = Gauge32: 1
Ak ďalej konfigurujete monitorovací skript, môžete získať tieto šikovné grafy: