Sådan overvåger du USB UPS-status via SNMP
Sådan overvåger du USB UPS-status via SNMP
Der er flere computere med USB-tilsluttet UPS. Alle computere bruger programmet apcupsd. Lad os sige, at du vil samle oplysninger om strømforsyningens tilstand for hver enhed på ét sted. Da snmpd allerede kører der, ville det være logisk at udvide dets funktionalitet.
Reklame
Nedenstående løsning, høflighed af Admins blog, vil indsamle data fra alle snmpd-enheder på én gang.
For at overvåge USB UPS-status via SNMP, skal vi først ændre snmp-dæmonens konfiguration.
Forberedelser
Tilføjer følgende til konfigurationen snmpd.conf.
# APC UPS
pass .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Indholdet af /etc/snmp/apcupsd.sh scriptet er som følger.
#!/bin/sh -f # Tjek, at apcupsd er online. apcaccess > /dev/null 2>&1 || exit 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Anmodet OID # # Behandle SET-anmodninger ved blot at logge den tildelte værdi. # Bemærk, at sådanne "tildelinger" ikke er vedvarende, # og syntaksen eller den anmodede værdi er heller ikke valideret. # if [ "$1" = "-s" ]; derefter. echo $* >> /tmp/passtest.log. udgang 0. fi # # GETNEXT-anmodninger - bestemme næste gyldige forekomst. # if [ "$1" = "-n" ]; derefter. tilfældet "$REQ" i. $PLACE| \ $PLACE.0| \ $PLACE.0.*| \ $PLACE.1| \ $PLACE.1.1.0*) RET=$PLACE.1.1.1.0;; $PLACE.1*| \ $PLACE.2.0| \ $PLACE.2.0.*| \ $PLACE.2.1| \ $PLACE.2.2.0*) RET=$PLACE.2.2.1.0;; $PLACE.2.2.1*) RET=$PLACE.2.2.2.0;; $PLACE.2.2.2*) RET=$PLACE.2.2.3.0;; $PLACE.2.2.3*) RET=$PLACE.2.2.4.0;; $PLACE.2*| \ $PLACE.3.0*| \ $PLACE.3.1*| \ $PLACE.3.2.0*) RET=$PLACE.3.2.1.0;; $PLACE.3.2.1*| \ $PLACE.3.2.2*| \ $PLACE.3.2.3*) RET=$PLACE.3.2.4.0;; $PLACE.3.2.4*) RET=$PLACE.3.2.5.0;; $PLACE.3.2*| \ $PLACE.4.0*| \ $PLACE.4.1*| \ $PLACE.4.2.0*) RET=$PLACE.4.2.1.0;; $PLACE.4.2.1*) RET=$PLACE.4.2.2.0;; $PLACE.4.2.2*) RET=$PLACE.4.2.3.0;; $PLACE.4.2.3*) RET=$PLACE.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*| \ $PLACE.7.2.2*) RET=$PLACE.7.2.3.0;; $PLACE.7.2.3*) RET=$PLACE.7.2.4.0;; $PLACE.7*| \ $PLACE.8.0*) RET=$PLACE.8.1.0;; *) exit 0;; esac. andet. # # GET-anmodninger - tjek for gyldig instans. # tilfældet "$REQ" i. $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 # # "Process" GET*-anmodninger - returner hårdkodet værdi. # ekko "$RET" tilfældet "$RET" i. $PLACE.1.1.1.0) ekko "streng"; apcaccess -u -p MODEL; udgang 0;; $PLACE.2.2.1.0) ekko "Måler32"; apcaccess -u -p BCHARGE; udgang 0;; $PLACE.2.2.2.0) ekko "Måler32"; apcaccess -u -p ITEMP; udgang 0;; $PLACE.2.2.3.0) ekko "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); udgang 0;; $PLACE.2.2.4.0) ekko "streng"; apcaccess -u -p BATTDATE; udgang 0;; $PLACE.3.2.1.0) ekko "Måler32"; apcaccess -u -p LINEV; udgang 0;; $PLACE.3.2.4.0) ekko "Måler32"; apcaccess -u -p LINEFREQ; udgang 0;; $PLACE.3.2.5.0) ekko "streng"; apcaccess -u -p LASTXFER; udgang 0;; $PLACE.4.2.1.0) ekko "Måler32"; apcaccess -u -p OUTPUTV; udgang 0;; $PLACE.4.2.2.0) ekko "Måler32"; apcaccess -u -p LINEFREQ; udgang 0;; $PLACE.4.2.3.0) ekko "Måler32"; apcaccess -u -p LOADPCT; udgang 0;; $PLACE.4.2.4.0) ekko "Måler32"; apcaccess -u -p LOADPCT; udgang 0;; $PLACE.7.2.3.0) ekko "streng"; apcaccess -u -p SELVMEST; udgang 0;; $PLACE.7.2.4.0) ekko "streng"; apcaccess -u -p SELVMEST; udgang 0;; $PLACE.8.1.0) echo "Gauge32"; ekko 1; udgang 0;; *) ekko "streng"; ekko "ak... $RET $REQ"; udgang 0;; # Bør ikke ske. esac.
Hvis du undrer dig over OID'er, kan du finde dem HER. Bemærk, at nogle UPS-modeller ikke returnerer alle parametre eller i det forkerte format, så koden kan indeholde unøjagtigheder og stubber.
Nu er du klar.
Sådan overvåger du USB UPS-status via SNMP
For at overvåge USB UPS-status via SNMP skal du køre følgende kommando: snmpwalk -v 1 -c offentlig 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Outputtet vil være sådan:
SNMPv2-SMI:: enterprises.318.1.1.1.1.1.1.0 = STRING: "Smart-UPS 750 "
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.1.0 = Måler32: 100
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.2.0 = Måler32: 36
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.3.0 = Tidspunkter: (432000) 1:12:00.00
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.1.0 = Måler32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.4.0 = Måler32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.5.0 = STRING: "Automatisk eller eksplicit selvtest"
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.1.0 = Måler32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.2.0 = Måler32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.3.0 = Måler32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.4.0 = Måler32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.3.0 = STRING: "NEJ"
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRING: "NEJ"
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Måler32: 1
Hvis du konfigurerer overvågningsscriptet yderligere, kan du få disse smarte grafer: