Windows Tips & News

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:

Jak włączyć 64-bitowe procesy Internet Explorera?

Jak włączyć 64-bitowe procesy Internet Explorera?

Jak być może wiesz, 64-bitowe wersje systemu Windows zawierają 32-bitową przeglądarkę Internet Ex...

Czytaj więcej

Zatrzymaj działanie aplikacji telefonu w tle

Zatrzymaj działanie aplikacji telefonu w tle

ZALECANA: Kliknij tutaj, aby rozwiązać problemy z systemem Windows i zoptymalizować wydajność sys...

Czytaj więcej

Windows 10 Build 20170 (Dev Channel) jest dostępny z nową ikoną ustawień

Windows 10 Build 20170 (Dev Channel) jest dostępny z nową ikoną ustawień

Microsoft udostępnił Windows 10 Build 20170 na kanale Dev (dawniej Szybki dzwonek). Jednak z powo...

Czytaj więcej