Jak monitorować stan USB UPS przez SNMP?
Jak monitorować stan USB UPS przez SNMP?
Istnieje kilka komputerów z zasilaczem UPS podłączonym przez USB. Wszystkie komputery korzystają z programu apcupsd. Załóżmy, że chcesz zebrać w jednym miejscu informacje o stanie zasilania każdej jednostki. Ponieważ snmpd już tam działa, logiczne byłoby rozszerzenie jego funkcjonalności.
Poniższe rozwiązanie, dzięki uprzejmości Blog administratora, zbierze dane ze wszystkich jednostek snmpd jednocześnie.
Aby monitorować stan USB UPS przez SNMP, musimy najpierw zmodyfikować konfigurację demona snmp.
Przygotowania
Dodaje następujące elementy do pliku konfiguracyjnego snmpd.conf.
# UPS APC
przejść .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Zawartość skryptu /etc/snmp/apcupsd.sh jest następująca.
#!/bin/sh -f # Sprawdź, czy apcupsd jest online. apcaccess > /dev/null 2>&1 || wyjście 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # Żądany OID # # Przetwarzaj żądania SET, po prostu rejestrując przypisaną wartość. # Zauważ, że takie "przypisania" nie są trwałe, # ani składnia ani żądana wartość nie są sprawdzane. # if [ "$1" = "-s" ]; następnie. echo $* >> /tmp/passtest.log. wyjście 0. fi # # Żądania GETNEXT - określ następną ważną instancję. # if [ "$1" = "-n" ]; następnie. przypadek „$REQ” w. $MIEJSCE| \ $MIEJSCE.0| \ $PLACE.0.*| \ $PLACE.1| \ $MIEJSCE 1.1.0*) RET=$MIEJSCE.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;; $PLACE2.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;; *) wyjście 0;; esac. w przeciwnym razie. # # Żądania GET - sprawdź poprawną instancję. # przypadek „$REQ” w. $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;; *) wyjście 0;; esac. fi # # Żądania GET* „Process” — zwracają zakodowaną na sztywno wartość. # echo "$RET" przypadek „$RET” w. $PLACE.1.1.1.0) echo "ciąg"; apcaccess -u -p MODEL; wyjście 0;; $PLACE.2.2.1.0) echo "Wskaźnik32"; apcaccess -u -p BCHARGE; wyjście 0;; $PLACE.2.2.2.0) echo "Wskaźnik32"; apcaccess -u -p ITEMP; wyjście 0;; $PLACE.2.2.3.0) echo "Liczniki czasu"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); wyjście 0;; $PLACE.2.2.4.0) echo "ciąg"; apcaccess -u -p BATTDATE; wyjście 0;; $PLACE.3.2.1.0) echo "Wskaźnik32"; apcaccess -u -p LINEV; wyjście 0;; $PLACE.3.2.4.0) echo "Wskaźnik32"; apcaccess -u -p LINEFREQ; wyjście 0;; $PLACE.3.2.5.0) echo "ciąg"; apcaccess -u -p LASTXFER; wyjście 0;; $PLACE.4.2.1.0) echo "Wskaźnik32"; apcaccess -u -p OUTPUTV; wyjście 0;; $PLACE.4.2.2.0) echo "Wskaźnik32"; apcaccess -u -p LINEFREQ; wyjście 0;; $PLACE.4.2.3.0) echo "Wskaźnik32"; apcaccess -u -p LOADPCT; wyjście 0;; $PLACE.4.2.4.0) echo "Wskaźnik32"; apcaccess -u -p LOADPCT; wyjście 0;; $PLACE.7.2.3.0) echo "ciąg"; apcaccess -u -p SELFEST; wyjście 0;; $PLACE.7.2.4.0) echo "ciąg"; apcaccess -u -p SELFEST; wyjście 0;; $PLACE.8.1.0) echo "Wskaźnik32"; echo 1; wyjście 0;; *) echo „ciąg”; echo "potwierdź... $RET $REQ"; wyjście 0;; # Nie powinno się zdarzyć. esac.
Jeśli zastanawiasz się nad OID-ami, możesz je znaleźć TUTAJ. Należy pamiętać, że niektóre modele zasilaczy UPS nie zwracają wszystkich parametrów lub w złym formacie, więc kod może zawierać nieścisłości i fragmenty.
Teraz jesteś gotowy.
Jak monitorować stan USB UPS przez SNMP?
Aby monitorować stan USB UPS za pośrednictwem SNMP, uruchom następujące polecenie: snmpwalk -v 1 -c publiczne 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Wynik będzie taki:
SNMPv2-SMI:: enterprise.318.1.1.1.1.1.1.0 = STRING: "Smart-UPS 750"
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.1.0 = Gauge32: 100
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.2.0 = Gauge32: 36
SNMPv2-SMI:: enterprise.318.1.1.1.2.2.3.0 = Timeticki: (432000) 1:12:00.00
SNMPv2-SMI:: przedsiębiorstwa.318.1.1.1.2.2.4.0 = STRING: "2020-05-14"
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.4.0 = Gauge32: 50
SNMPv2-SMI:: enterprise.318.1.1.1.3.2.5.0 = STRING: "Automatyczny lub jawny autotest"
SNMPv2-SMI:: przedsiębiorstwa.318.1.1.1.4.2.1.0 = Wskaźnik32: 227
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.2.0 = Gauge32: 50
SNMPv2-SMI:: przedsiębiorstwa.318.1.1.1.4.2.3.0 = Wskaźnik32: 13
SNMPv2-SMI:: przedsiębiorstwa.318.1.1.1.4.2.4.0 = Wskaźnik32: 13
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.3.0 = STRING: "NIE"
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.4.0 = STRING: "NIE"
SNMPv2-SMI:: enterprise.318.1.1.1.8.1.0 = Wskaźnik32: 1
Jeśli skonfigurujesz dalej skrypt monitorowania, możesz uzyskać te fajne wykresy: