Windows Tips & News

Como monitorar o status do UPS USB via SNMP

Como monitorar o status do UPS USB via SNMP

Existem vários computadores com no-break conectado por USB. Todos os computadores usam o programa apcupsd. Digamos que você queira agregar informações sobre o estado da fonte de alimentação de cada unidade em um só lugar. Como o snmpd já está em execução lá, seria lógico expandir sua funcionalidade.

A solução abaixo, cortesia do Blog do administrador, irá coletar os dados de todas as unidades snmpd de uma vez.

Para monitorar o status do UPS USB via SNMP, precisamos primeiro modificar a configuração do daemon snmp.

Preparativos

Adiciona o seguinte ao config snmpd.conf.

# APC UPS
passar .1.3.6.1.4.1.318.1.1.1 / bin / sh /etc/snmp/apcupsd.sh

O conteúdo do script /etc/snmp/apcupsd.sh é o seguinte.

#! / bin / sh -f # Verifique se o apcupsd está online. apcaccess> / dev / null 2> & 1 || sair 0 PLACE = ". 1.3.6.1.4.1.318.1.1.1" REQ = "$ 2" # OID solicitado # # Processa solicitações SET simplesmente registrando o valor atribuído. # Observe que tais "atribuições" não são persistentes, # nem a sintaxe ou o valor solicitado são validados. # if ["$ 1" = "-s"]; então. echo $ * >> /tmp/passtest.log. saída 0. fi # # Solicitações GETNEXT - determina a próxima instância válida. # if ["$ 1" = "-n"]; então. case "$ REQ" em. $ 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;; *) saída 0;; esac. outro. # # Solicitações GET - verifique a instância válida. # case "$ REQ" em. $ 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;; *) saída 0;; esac. fi # # Solicitações GET * de "processo" - retorna o valor embutido em código. # eco "$ RET" caso "$ RET" em. $ PLACE.1.1.1.0) echo "string"; apcaccess -u -p MODEL; saída 0;; $ PLACE.2.2.1.0) echo "Gauge32"; apcaccess -u -p BCHARGE; saída 0;; $ PLACE.2.2.2.0) echo "Gauge32"; apcaccess -u -p ITEMP; saída 0;; $ PLACE.2.2.3.0) echo "Timeticks"; echo $ (($ (LC_ALL = C printf "%. * f" 0 $ (apcaccess -u -p TIMELEFT)) * 6000)); saída 0;; $ PLACE.2.2.4.0) echo "string"; apcaccess -u -p BATTDATE; saída 0;; $ PLACE.3.2.1.0) echo "Gauge32"; apcaccess -u -p LINEV; saída 0;; $ PLACE.3.2.4.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; saída 0;; $ PLACE.3.2.5.0) echo "string"; apcaccess -u -p LASTXFER; saída 0;; $ PLACE.4.2.1.0) echo "Gauge32"; apcaccess -u -p OUTPUTV; saída 0;; $ PLACE.4.2.2.0) echo "Gauge32"; apcaccess -u -p LINEFREQ; saída 0;; $ PLACE.4.2.3.0) echo "Gauge32"; apcaccess -u -p LOADPCT; saída 0;; $ PLACE.4.2.4.0) echo "Gauge32"; apcaccess -u -p LOADPCT; saída 0;; $ PLACE.7.2.3.0) echo "string"; apcaccess -u -p SELFTEST; saída 0;; $ PLACE.7.2.4.0) echo "string"; apcaccess -u -p SELFTEST; saída 0;; $ PLACE.8.1.0) echo "Gauge32"; echo 1; saída 0;; *) echo "string"; echo "ack... $ RET $ REQ "; saída 0;; # Não deveria acontecer. esac.

Se você está se perguntando sobre OIDs, pode encontrá-los AQUI. Observe que alguns modelos de UPS não retornam todos os parâmetros ou estão no formato errado, então o código pode conter imprecisões e stubs.

Agora você está pronto.

Como monitorar o status do UPS USB via SNMP

Para monitorar o status do UPS USB via SNMP, execute o seguinte comando: snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.318.1.1.1. A saída será assim:

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 = Horários: (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: "Autoteste automático ou explícito"
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: "NÃO"
SNMPv2-SMI:: enterprises.318.1.1.1.7.2.4.0 = STRING: "NÃO"
SNMPv2-SMI:: enterprises.318.1.1.1.8.1.0 = Gauge32: 1

Se você configurar ainda mais o script de monitoramento, poderá obter estes gráficos interessantes:

Desative os botões de ação rápida na Central de ações do Windows 10

Dica: Veja como pular para a chave de registro desejada com um clique.Se você não tiver essa chav...

Consulte Mais informação

Windows 10 desativar arquivos de coleta de dados

Outra rodada de histeria relacionada à privacidade começou recentemente em torno do Windows 10. M...

Consulte Mais informação

Desative os botões de ação rápida na Central de ações do Windows 10

Desative os botões de ação rápida na Central de ações do Windows 10

6 respostasA Central de Ações no Windows 10 é um painel especial que mantém vários tipos de notif...

Consulte Mais informação