Hvordan overvåke USB UPS-status via SNMP
Hvordan overvåke USB UPS-status via SNMP
Det er flere datamaskiner med USB-tilkoblet UPS. Alle datamaskinene bruker apcupsd-programmet. La oss si at du ønsker å samle informasjon om tilstanden til strømforsyningen for hver enhet på ett sted. Siden snmpd allerede kjører der, ville det være logisk å utvide funksjonaliteten.
Annonse
Løsningen nedenfor, med tillatelse fra Admins blogg, samler inn dataene fra alle snmpd-enheter samtidig.
For å overvåke USB UPS-status via SNMP, må vi først endre snmp-demonkonfigurasjonen.
Forberedelser
Legger til følgende til konfigurasjonen snmpd.conf.
# APC UPS
pass .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Innholdet i /etc/snmp/apcupsd.sh-skriptet er som følger.
#!/bin/sh -f # Sjekk at apcupsd er online. apcaccess > /dev/null 2>&1 || exit 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Forespurt OID # # Behandle SET-forespørsler ved ganske enkelt å logge den tilordnede verdien. # Merk at slike "tildelinger" ikke er vedvarende, # heller ikke er syntaksen eller den forespurte verdien validert. # if [ "$1" = "-s" ]; deretter. echo $* >> /tmp/passtest.log. utgang 0. fi # # GETNEXT-forespørsler - finn neste gyldige forekomst. # if [ "$1" = "-n" ]; deretter. tilfellet "$REQ" i. $PLACE| \ $PLACE.0| \ $PLASS.0.*| \ $PLACE.1| \ $PLASS.1.1.0*) RET=$PLASS.1.1.1.0;; $PLASS.1*| \ $PLACE.2.0| \ $PLASS.2.0.*| \ $PLASS.2.1| \ $PLASS.2.2.0*) RET=$PLASS.2.2.1.0;; $PLASS.2.2.1*) RET=$PLASS.2.2.2.0;; $PLASS.2.2.2*) RET=$PLASS.2.2.3.0;; $PLASS.2.2.3*) RET=$PLASS.2.2.4.0;; $PLASS.2*| \ $PLACE.3.0*| \ $PLASS.3.1*| \ $PLASS.3.2.0*) RET=$PLASS.3.2.1.0;; $PLASS.3.2.1*| \ $PLASS.3.2.2*| \ $PLASS.3.2.3*) RET=$PLASS.3.2.4.0;; $PLASS.3.2.4*) RET=$PLASS.3.2.5.0;; $PLASS.3.2*| \ $PLASS.4.0*| \ $PLASS.4.1*| \ $PLASS.4.2.0*) RET=$PLASS.4.2.1.0;; $PLASS.4.2.1*) RET=$PLASS.4.2.2.0;; $PLASS.4.2.2*) RET=$PLASS.4.2.3.0;; $PLASS.4.2.3*) RET=$PLASS.4.2.4.0;; $PLASS.4.2.*| \ $PLASS.5*| \ $PLASS.6*| \ $PLACE.7.0*| \ $PLASS.7.1*| \ $PLACE.7.2.0*| \ $PLASS.7.2.1*| \ $PLASS.7.2.2*) RET=$PLASS.7.2.3.0;; $PLASS.7.2.3*) RET=$PLASS.7.2.4.0;; $PLASS.7*| \ $PLACE.8.0*) RET=$PLACE.8.1.0;; *) exit 0;; esac. ellers. # # GET-forespørsler - se etter gyldig forekomst. # tilfellet "$REQ" i. $PLASS.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| \ $PLASS.3.2.5.0| \ $PLACE.4.2.1.0| \ $PLACE.4.2.2.0| \ $PLASS.4.2.3.0| \ $PLACE.4.2.4.0| \ $PLASS.7.2.3.0| \ $PLASS.7.2.4.0| \ $PLACE.8.1.0) RET=$REQ;; *) exit 0;; esac. fi # # "Prosess" GET*-forespørsler - returner hardkodet verdi. # ekko "$RET" tilfelle "$RET" i. $PLACE.1.1.1.0) ekko "streng"; apcaccess -u -p MODELL; utgang 0;; $PLACE.2.2.1.0) ekko "Gauge32"; apcaccess -u -p BCHARGE; utgang 0;; $PLACE.2.2.2.0) ekko "Gauge32"; apcaccess -u -p ITEMP; utgang 0;; $PLACE.2.2.3.0) ekko "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); utgang 0;; $PLACE.2.2.4.0) ekko "streng"; apcaccess -u -p BATTDATE; utgang 0;; $PLACE.3.2.1.0) ekko "Gauge32"; apcaccess -u -p LINEV; utgang 0;; $PLACE.3.2.4.0) ekko "Gauge32"; apcaccess -u -p LINEFREQ; utgang 0;; $PLACE.3.2.5.0) ekko "streng"; apcaccess -u -p LASTXFER; utgang 0;; $PLACE.4.2.1.0) ekko "Gauge32"; apcaccess -u -p OUTPUTV; utgang 0;; $PLACE.4.2.2.0) ekko "Gauge32"; apcaccess -u -p LINEFREQ; utgang 0;; $PLACE.4.2.3.0) ekko "Gauge32"; apcaccess -u -p LOADPCT; utgang 0;; $PLACE.4.2.4.0) ekko "Gauge32"; apcaccess -u -p LOADPCT; utgang 0;; $PLACE.7.2.3.0) ekko "streng"; apcaccess -u -p SELVEST; utgang 0;; $PLACE.7.2.4.0) ekko "streng"; apcaccess -u -p SELVEST; utgang 0;; $PLACE.8.1.0) ekko "Gauge32"; ekko 1; utgang 0;; *) ekko "streng"; ekko "ack... $RET $REQ"; utgang 0;; # Bør ikke skje. esac.
Hvis du lurer på OID, kan du finne dem HER. Merk at noen UPS-modeller ikke returnerer alle parametere eller i feil format, så koden kan inneholde unøyaktigheter og stubber.
Nå er du klar.
Hvordan overvåke USB UPS-status via SNMP
For å overvåke USB UPS-status via SNMP, kjør følgende kommando: snmpwalk -v 1 -c offentlig 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Utgangen vil være slik:
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 = Tidsmerker: (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 eksplisitt 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: "NEI"
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRING: "NEI"
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Måler32: 1
Hvis du konfigurerer overvåkingsskriptet ytterligere, kan du få disse smarte grafene: