Jak sledovat stav USB UPS přes SNMP
Jak sledovat stav USB UPS přes SNMP
Existuje několik počítačů s UPS připojenými přes USB. Všechny počítače používají program apcupsd. Řekněme, že chcete shromáždit informace o stavu napájení pro každou jednotku na jednom místě. Protože tam snmpd již běží, bylo by logické rozšířit jeho funkcionalitu.
Níže uvedené řešení, s laskavým svolením Adminův blog, bude shromažďovat data ze všech jednotek snmpd najednou.
Aby bylo možné sledovat stav USB UPS přes SNMP, musíme nejprve upravit konfiguraci démona snmp.
Přípravky
Přidá následující do souboru config snmpd.conf.
# UPS APC
projít .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Obsah skriptu /etc/snmp/apcupsd.sh je následující.
#!/bin/sh -f # Zkontrolujte, zda je apcupsd online. apcaccess > /dev/null 2>&1 || exit 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Požadované OID # # Zpracujte požadavky SET jednoduchým protokolováním přiřazené hodnoty. # Všimněte si, že taková "přiřazení" nejsou trvalá, # ani není ověřena syntaxe nebo požadovaná hodnota. # if [ "$1" = "-s" ]; pak. echo $* >> /tmp/passtest.log. výstup 0. fi # # GETNEXT požadavky - určení další platné instance. # if [ "$1" = "-n" ]; pak. případ "$REQ" v. $PLACE| \ $PLACE.0| \ $PLACE.0.*| \ $PLACE.1| \ $MÍSTO.1.1.0*) RET=$MÍSTO.1.1.1.0;; $PLACE.1*| \ $PLACE.2.0| \ $PLACE.2.0.*| \ $PLACE.2.1| \ $PLACE.2.2.0*) RET=$MÍSTO.2.2.1.0;; $PLACE.2.2.1*) RET=$MÍSTO.2.2.2.0;; $MÍSTO.2.2.2*) RET=$MÍSTO.2.2.3.0;; $PLACE.2.2.3*) RET=$MÍSTO.2.2.4.0;; $PLACE.2*| \ $PLACE.3.0*| \ $PLACE.3.1*| \ $PLACE.3.2.0*) RET=$MÍSTO.3.2.1.0;; $PLACE.3.2.1*| \ $PLACE.3.2.2*| \ $PLACE.3.2.3*) RET=$MÍSTO.3.2.4.0;; $PLACE.3.2.4*) RET=$MÍSTO.3.2.5.0;; $PLACE.3.2*| \ $PLACE.4.0*| \ $PLACE.4.1*| \ $PLACE.4.2.0*) RET=$MÍSTO.4.2.1.0;; $PLACE.4.2.1*) RET=$MÍSTO.4.2.2.0;; $MÍSTO.4.2.2*) RET=$MÍSTO.4.2.3.0;; $PLACE.4.2.3*) RET=$MÍSTO.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*| \ $MÍSTO.7.2.2*) RET=$MÍSTO.7.2.3.0;; $MÍSTO.7.2.3*) RET=$MÍSTO.7.2.4.0;; $PLACE.7*| \ $PLACE.8.0*) RET=$MÍSTO.8.1.0;; *) exit 0;; esac. jiný. # # Požadavky GET - zkontrolujte platnou instanci. # pří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;; *) exit 0;; esac. fi # # "Zpracovat" požadavky GET* - vrátí pevně zakódovanou hodnotu. # echo "$RET" případ "$RET" v. $PLACE.1.1.1.0) echo "řetězec"; 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 "řetězec"; 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 "řetězec"; 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 "řetězec"; apcaccess -u -p SELFTEST; výstup 0;; $PLACE.7.2.4.0) echo "řetězec"; apcaccess -u -p SELFTEST; výstup 0;; $PLACE.8.1.0) echo "Gauge32"; echo 1; výstup 0;; *) echo "řetězec"; echo "potvrzuji... $RET $REQ"; výstup 0;; # Nemělo by se to stát. esac.
Pokud se zajímáte o OID, můžete je najít TADY. Upozorňujeme, že některé modely UPS nevracejí všechny parametry nebo v nesprávném formátu, takže kód může obsahovat nepřesnosti a útržky.
Nyní jste připraveni.
Jak sledovat stav USB UPS přes SNMP
Chcete-li sledovat stav USB UPS přes SNMP, spusťte následující příkaz: snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Výstup bude takový:
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:: enterprises.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ý nebo 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:: enterprises.318.1.1.1.7.2.3.0 = STRING: "NE"
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRING: "NE"
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Gauge32: 1
Pokud dále konfigurujete monitorovací skript, můžete získat tyto šikovné grafy: