Hur man övervakar USB UPS-status via SNMP
Hur man övervakar USB UPS-status via SNMP
Det finns flera datorer med USB-ansluten UPS. Alla datorer använder programmet apcupsd. Säg att du vill samla information om tillståndet för strömförsörjningen för varje enhet på ett ställe. Eftersom snmpd redan körs där skulle det vara logiskt att utöka dess funktionalitet.
Annons
Nedanstående lösning, med tillstånd av Admins blogg, samlar in data från alla snmpd-enheter på en gång.
För att övervaka USB UPS-status via SNMP måste vi först ändra snmp-demonkonfigurationen.
Förberedelser
Lägger till följande till konfigurationen snmpd.conf.
# APC UPS
passera .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Innehållet i skriptet /etc/snmp/apcupsd.sh är som följer.
#!/bin/sh -f # Kontrollera att apcupsd är online. apcaccess > /dev/null 2>&1 || exit 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Begärt OID-nummer # Bearbeta SET-förfrågningar genom att helt enkelt logga det tilldelade värdet. # Observera att sådana "tilldelningar" inte är beständiga, # inte heller är syntaxen eller det begärda värdet validerat. # if [ "$1" = "-s" ]; sedan. echo $* >> /tmp/passtest.log. avsluta 0. fi # # GETNEXT-förfrågningar - bestäm nästa giltiga instans. # if [ "$1" = "-n" ]; sedan. fallet "$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. annan. # # GET-förfrågningar - kontrollera efter giltig instans. # fallet "$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 # # "Bearbeta" GET*-förfrågningar - returnera hårdkodat värde. # eko "$RET" fallet "$RET" i. $PLACE.1.1.1.0) eko "sträng"; apcaccess -u -p MODELL; utgång 0;; $PLACE.2.2.1.0) echo "Gauge32"; apcaccess -u -p BCHARGE; utgång 0;; $PLACE.2.2.2.0) echo "Gauge32"; apcaccess -u -p ITEMP; utgång 0;; $PLACE.2.2.3.0) echo "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); utgång 0;; $PLACE.2.2.4.0) eko "sträng"; apcaccess -u -p BATTDATE; utgång 0;; $PLACE.3.2.1.0) echo "Gauge32"; apcaccess -u -p LINEV; utgång 0;; $PLACE.3.2.4.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; utgång 0;; $PLACE.3.2.5.0) eko "sträng"; apcaccess -u -p LASTXFER; utgång 0;; $PLACE.4.2.1.0) echo "Gauge32"; apcaccess -u -p OUTPUTV; utgång 0;; $PLACE.4.2.2.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; utgång 0;; $PLACE.4.2.3.0) echo "Gauge32"; apcaccess -u -p LOADPCT; utgång 0;; $PLACE.4.2.4.0) echo "Gauge32"; apcaccess -u -p LOADPCT; utgång 0;; $PLACE.7.2.3.0) eko "sträng"; apcaccess -u -p SJÄLVMEST; utgång 0;; $PLACE.7.2.4.0) eko "sträng"; apcaccess -u -p SJÄLVMEST; utgång 0;; $PLACE.8.1.0) echo "Gauge32"; eko 1; utgång 0;; *) eko "sträng"; eko "ack... $RET $REQ"; utgång 0;; # Bör inte hända. esac.
Om du undrar över OID kan du hitta dem HÄR. Observera att vissa UPS-modeller inte returnerar alla parametrar eller i fel format, så koden kan innehålla felaktigheter och stubbar.
Nu är du redo.
Hur man övervakar USB UPS-status via SNMP
För att övervaka USB UPS-status via SNMP, kör följande kommando: snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Utgången blir så här:
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 = Gauge32: 100
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.2.0 = Gauge32: 36
SNMPv2-SMI:: enterprises.318.1.1.1.2.2.3.0 = Tidsgränser: (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 = Gauge32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.4.0 = Gauge32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.3.2.5.0 = STRING: "Automatiskt eller explicit självtest"
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.2.0 = Gauge32: 50
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.3.0 = Gauge32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.4.2.4.0 = Gauge32: 13
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.3.0 = STRÄNG: "NEJ"
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRÄNG: "NEJ"
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Gauge32: 1
Om du konfigurerar övervakningsskriptet ytterligare kan du få dessa snygga grafer: