Cum se monitorizează starea UPS-ului USB prin SNMP
Cum se monitorizează starea UPS-ului USB prin SNMP
Există mai multe computere cu UPS conectat prin USB. Toate computerele folosesc programul apcupsd. Să presupunem că doriți să agregați informații despre starea sursei de alimentare pentru fiecare unitate într-un singur loc. Deoarece snmpd rulează deja acolo, ar fi logic să-și extindă funcționalitatea.
Soluția de mai jos, prin amabilitatea Blogul administratorului, va colecta datele de la toate unitățile snmpd simultan.
Pentru a monitoriza starea UPS-ului USB prin SNMP, trebuie să modificăm mai întâi configurația demonului snmp.
Pregătiri
Adaugă următoarele la configurația snmpd.conf.
# UPS APC
trece .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/acupsd.sh
Conținutul scriptului /etc/snmp/apcupsd.sh este următorul.
#!/bin/sh -f # Verificați că apcupsd este online. apcaccess > /dev/null 2>&1 || exit 0 PLACE=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # OID solicitat # # Procesați cererile SET prin simpla înregistrare a valorii atribuite. # Rețineți că astfel de „atribuții” nu sunt persistente, # și nici sintaxa sau valoarea cerută nu sunt validate. # dacă [ "$1" = "-s" ]; atunci. echo $* >> /tmp/passtest.log. iesirea 0. fi # # solicitări GETNEXT - determinați următoarea instanță validă. # dacă [ "$1" = "-n" ]; atunci. cazul „$REQ” în. $PLACE| \ $PLACE.0| \ $PLACE.0.*| \ $PLACE.1| \ $LOC.1.1.0*) RET=$LOC.1.1.1.0;; $PLACE.1*| \ $PLACE.2.0| \ $PLACE.2.0.*| \ $PLACE.2.1| \ $LOC.2.2.0*) RET=$LOC.2.2.1.0;; $LOC.2.2.1*) RET=$LOC.2.2.2.0;; $LOC.2.2.2*) RET=$LOC.2.2.3.0;; $LOC.2.2.3*) RET=$LOC.2.2.4.0;; $PLACE.2*| \ $PLACE.3.0*| \ $PLACE.3.1*| \ $LOC.3.2.0*) RET=$LOC.3.2.1.0;; $PLACE.3.2.1*| \ $PLACE.3.2.2*| \ $LOC.3.2.3*) RET=$LOC.3.2.4.0;; $LOC.3.2.4*) RET=$LOC.3.2.5.0;; $PLACE.3.2*| \ $PLACE.4.0*| \ $PLACE.4.1*| \ $LOC.4.2.0*) RET=$LOC.4.2.1.0;; $LOC.4.2.1*) RET=$LOC.4.2.2.0;; $LOC.4.2.2*) RET=$LOC.4.2.3.0;; $LOC.4.2.3*) RET=$LOC.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*| \ $LOC.7.2.2*) RET=$LOC.7.2.3.0;; $LOC.7.2.3*) RET=$LOC.7.2.4.0;; $PLACE.7*| \ $LOC.8.0*) RET=$LOC.8.1.0;; *) iesirea 0;; esac. altfel. # # solicitări GET - verificați o instanță validă. # cazul „$REQ” în. $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;; *) iesirea 0;; esac. fi # # „Procesează” solicitări GET* - returnează valoarea codificată. # ecou „$RET” cazul „$RET” în. $PLACE.1.1.1.0) echo "șir"; apcaccess -u -p MODEL; ieșire 0;; $PLACE.2.2.1.0) echo "Gauge32"; apcaccess -u -p BCHARGE; ieșire 0;; $PLACE.2.2.2.0) echo "Gauge32"; apcaccess -u -p ITEMP; ieșire 0;; $PLACE.2.2.3.0) echo "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); ieșire 0;; $PLACE.2.2.4.0) echo "șir"; apcaccess -u -p BATTDATE; ieșire 0;; $PLACE.3.2.1.0) echo "Gauge32"; apcaccess -u -p LINEV; ieșire 0;; $PLACE.3.2.4.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; ieșire 0;; $PLACE.3.2.5.0) echo "șir"; apcaccess -u -p LASTXFER; ieșire 0;; $PLACE.4.2.1.0) echo "Gauge32"; apcaccess -u -p OUTPUTV; ieșire 0;; $PLACE.4.2.2.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; ieșire 0;; $PLACE.4.2.3.0) echo "Gauge32"; apcaccess -u -p LOADPCT; ieșire 0;; $PLACE.4.2.4.0) echo "Gauge32"; apcaccess -u -p LOADPCT; ieșire 0;; $PLACE.7.2.3.0) echo "șir"; apcaccess -u -p SELFTEST; ieșire 0;; $PLACE.7.2.4.0) echo "șir"; apcaccess -u -p SELFTEST; ieșire 0;; $PLACE.8.1.0) echo "Gauge32"; ecou 1; ieșire 0;; *) echo "șir"; ecou „ack... $RET $REQ"; ieșire 0;; # Nu ar trebui să se întâmple. esac.
Dacă vă întrebați despre OID, le puteți găsi AICI. Rețineți că unele modele de UPS nu returnează toți parametrii sau în format greșit, astfel încât codul poate conține inexactități și stub-uri.
Acum ești gata.
Cum se monitorizează starea UPS-ului USB prin SNMP
Pentru a monitoriza starea UPS USB prin SNMP, executați următoarea comandă: snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. Ieșirea va fi așa:
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 = Timeticks: (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: „Autotest automat sau explicit”
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 = STRING: „NU”
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRING: „NU”
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Gauge32: 1
Dacă configurați în continuare scriptul de monitorizare, puteți obține aceste grafice ingenioase: