Windows Tips & News

Come monitorare lo stato dell'UPS USB tramite SNMP

click fraud protection

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:

Come aggiungere Windows Update al Pannello di controllo in Windows 10

Come aggiungere Windows Update al Pannello di controllo in Windows 10

Se utilizzi il classico Pannello di controllo in Windows 10, potresti aver già notato che non con...

Leggi di più

Come rinominare il sistema operativo nel menu di avvio di Windows 10

Come rinominare il sistema operativo nel menu di avvio di Windows 10

CONSIGLIATO: Fare clic qui per risolvere i problemi di Windows e ottimizzare le prestazioni del s...

Leggi di più

Scarica Aggiungi Windows Update al Pannello di controllo in Windows 10

Questo sito utilizza i cookie per migliorare la tua esperienza durante la navigazione nel sito. D...

Leggi di più