Come monitorare lo stato dell'UPS USB tramite SNMP
Come monitorare lo stato dell'UPS USB tramite SNMP
Esistono diversi computer con UPS collegato tramite USB. Tutti i computer utilizzano il programma apcupsd. Supponi di voler aggregare informazioni sullo stato dell'alimentazione per ogni unità in un unico posto. Poiché snmpd è già in esecuzione lì, sarebbe logico espandere la sua funzionalità.
La soluzione di seguito, per gentile concessione del Blog dell'amministratore, raccoglierà i dati da tutte le unità SNMPD contemporaneamente.
Per monitorare lo stato dell'UPS USB tramite SNMP, dobbiamo prima modificare la configurazione del demone snmp.
preparativi
Aggiunge quanto segue alla configurazione snmpd.conf.
# UPS APC
passare .1.3.6.1.4.1.318.1.1.1 /bin/sh /etc/snmp/apcupsd.sh
Il contenuto dello script /etc/snmp/apcupsd.sh è il seguente.
#!/bin/sh -f # Verifica che apcupsd sia online. apcaccess > /dev/null 2>&1 || exit 0 POSTO=".1.3.6.1.4.1.318.1.1.1" REQ="$2" # OID richiesto # # Elabora le richieste SET semplicemente registrando il valore assegnato. # Nota che tali "assegnamenti" non sono persistenti, # né la sintassi o il valore richiesto sono convalidati. # if [ "$1" = "-s" ]; poi. echo $* >> /tmp/passtest.log. uscita 0. fi # # Richieste GETNEXT - determina la prossima istanza valida. # if ["$1" = "-n"]; poi. caso "$REQ" in. $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;; *) uscita 0;; esac. altro. # # Richieste GET - verifica un'istanza valida. # caso "$REQ" in. $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;; *) uscita 0;; esac. fi # # Richieste GET* "Processo" - restituisce il valore hardcoded. # echo "$RET" caso "$RET" in. $PLACE.1.1.1.0) echo "stringa"; apcaccess -u -p MODELLO; uscita 0;; $PLACE.2.2.1.0) echo "Gauge32"; apcaccess -u -p BCHARGE; uscita 0;; $PLACE.2.2.2.0) echo "Gauge32"; apcaccess -u -p ITEMP; uscita 0;; $PLACE.2.2.3.0) echo "Timeticks"; echo $(($(LC_ALL=C printf "%.*f" 0 $(apcaccess -u -p TIMELEFT)) * 6000)); uscita 0;; $PLACE.2.2.4.0) echo "stringa"; apcaccess -u -p BATTDATE; uscita 0;; $PLACE.3.2.1.0) echo "Gauge32"; apcaccess -u -p LINEV; uscita 0;; $PLACE.3.2.4.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; uscita 0;; $PLACE.3.2.5.0) echo "stringa"; apcaccess -u -p LASTXFER; uscita 0;; $PLACE.4.2.1.0) echo "Gauge32"; apcaccess -u -p OUTPUTV; uscita 0;; $PLACE.4.2.2.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; uscita 0;; $PLACE.4.2.3.0) echo "Gauge32"; apcaccess -u -p LOADPCT; uscita 0;; $PLACE.4.2.4.0) echo "Gauge32"; apcaccess -u -p LOADPCT; uscita 0;; $PLACE.7.2.3.0) echo "stringa"; apcaccess -u -p SELFTEST; uscita 0;; $PLACE.7.2.4.0) echo "stringa"; apcaccess -u -p SELFTEST; uscita 0;; $PLACE.8.1.0) echo "Gauge32"; eco 1; uscita 0;; *) echo "stringa"; eco "ack... $RET $REQ"; uscita 0;; # Non dovrebbe accadere. esac.
Se ti stai chiedendo degli OID, puoi trovarli QUI. Si noti che alcuni modelli di UPS non restituiscono tutti i parametri o nel formato sbagliato, quindi il codice potrebbe contenere imprecisioni e stub.
Ora sei pronto.
Come monitorare lo stato dell'UPS USB tramite SNMP
Per monitorare lo stato dell'UPS USB tramite SNMP, eseguire il comando seguente: snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1
. L'output sarà così:
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 = Timeticks: (432000) 1:12:00.00
SNMPv2-SMI:: enterprise.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:: enterprises.318.1.1.1.3.2.5.0 = STRING: "Autotest automatico o esplicito"
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.1.0 = Gauge32: 227
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.2.0 = Gauge32: 50
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.3.0 = Gauge32: 13
SNMPv2-SMI:: enterprise.318.1.1.1.4.2.4.0 = Gauge32: 13
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.3.0 = STRING: "NO"
SNMPv2-SMI:: enterprise.318.1.1.1.7.2.4.0 = STRING: "NO"
SNMPv2-SMI:: enterprise.318.1.1.1.8.1 = Gauge32: 1
Se configuri ulteriormente lo script di monitoraggio, puoi ottenere questi graziosi grafici: