Pular para o conteúdo

UPS com NUT

Uma UPS ligada por USB a um NAS, a um Raspberry Pi ou a um servidor é normalmente vigiada pelo Network UPS Tools (NUT): o seu daemon, upsd, publica o que a UPS diz na porta TCP 3493. O DumbMonit lê esse servidor, como qualquer cliente NUT: se a UPS funciona pela rede elétrica ou pela bateria, se a bateria está fraca ou gasta, a carga, a autonomia que resta, a carga ligada, a tensão de entrada e a idade da bateria. Um servidor publica muitas vezes várias UPS; todas são lidas numa só ligação, e cada série traz o nome da sua UPS.

Para uma UPS com placa de rede própria, o tipo de dispositivo SNMP lê antes a UPS-MIB padrão.

Todas as métricas têm o prefixo dumbmonit_nut_ e trazem a etiqueta ups, o nome da UPS em ups.conf (ups num NAS Synology, qnapups num QNAP). Uma variável que a UPS não publica não produz série.

MétricaO quêEtiquetas
ups_on_line, ups_on_battery, ups_low_battery, ups_high_battery, ups_replace_battery, ups_charging, ups_discharging, ups_bypass, ups_calibrating, ups_off, ups_overload, ups_trim, ups_boost, ups_forced_shutdown, ups_alarmOs indicadores de ups.status (OL, OB, LB, HB, RB, CHRG, DISCHRG, BYPASS, CAL, OFF, OVER, TRIM, BOOST, FSD, ALARM): 1 quando ativo, 0 caso contrário, todos em cada leituraups
ups_status_infovalor 1, o ups.status em brutoups, status
battery_charge_percent, battery_charge_low_percentcarga, e a carga abaixo da qual a UPS reporta bateria fracaups
battery_runtime_seconds, battery_runtime_low_secondsautonomia restante na bateria com a carga atual, e a autonomia de bateria fracaups
battery_voltage_volts, battery_temperature_celsiusups
battery_age_secondstempo desde battery.date (instalada ou substituída), ou então battery.mfr.dateups, source (installed, manufactured)
input_voltage_volts, input_voltage_nominal_volts, input_frequency_hertzlado da rede elétrica; 0 V durante um corteups
output_voltage_volts, output_frequency_hertzlado da cargaups
ups_load_percentcarga, em percentagem da capacidade da UPSups
ups_realpower_watts, ups_realpower_nominal_watts, ups_power_va, ups_power_nominal_vapotência consumida e a potência nominal, quando a UPS as reportaups
ups_temperature_celsiusups
ups_self_test_failed1 quando o último autoteste (ups.test.result) reporta um erro ou um aviso, 0 quando passou; ausente quando nenhum teste correuups, result
ups_infovalor 1ups, manufacturer, model, firmware, driver, battery_type, description
ups_data_stale1 quando o upsd responde mas não tem dados recentes da UPS (DATA-STALE, DRIVER-NOT-CONNECTED)ups
ups_driver_connected0 quando o driver NUT dessa UPS não está a correrups
server_upsnúmero de UPS que o servidor publica
server_infovalor 1version

Os números de série nunca são postos numa etiqueta. São lidas no máximo 32 UPS por servidor.

As regras incorporadas que se aplicam: UPS on battery, UPS battery low, UPS battery needs replacing, UPS load high, UPS runtime short, UPS data stale, mais Monitor unreachable quando o próprio servidor NUT deixa de responder.

O painel acima dos gráficos lê o que a sonda guardou; abrir a página nunca se liga ao servidor NUT. Um cartão por UPS: o seu estado por palavras (na rede elétrica, na bateria, bateria fraca, substituir bateria, bypass, sobrecarga…), a carga, a autonomia restante, a carga ligada, a tensão de entrada e a idade da bateria.

  1. Encontre o servidor NUT: a máquina à qual a UPS está ligada (um NAS, um Raspberry Pi, um servidor) corre o upsd na porta TCP 3493. A partir do anfitrião do DumbMonit, verifique que responde e anote os nomes das suas UPS.

    printf 'LIST UPS\nLOGOUT\n' | nc nas.lan 3493

    Com as ferramentas de cliente NUT instaladas, upsc -l nas.lan dá a mesma lista.

  2. Numa instalação NUT simples, faça o upsd escutar num endereço que o anfitrião do DumbMonit alcance: adicione esta linha ao upsd.conf, abra a porta TCP 3493 na firewall para o anfitrião do DumbMonit, e reinicie o upsd. Ler não precisa de conta: o upsd deixa qualquer anfitrião que aceite ler as variáveis, e não altera nada sem um utilizador com direito para isso.

    LISTEN 0.0.0.0 3493
  3. Num NAS, o mesmo interruptor tem outro nome. Synology DSM: Painel de Controlo → Hardware e Energia → UPS, marque Ativar servidor UPS de rede, e adicione o anfitrião do DumbMonit em Monitores DiskStation Permitidos; a UPS chama-se ups. QNAP: a página UPS do Painel de Controlo, Enable network UPS master, com o anfitrião do DumbMonit entre os endereços permitidos; a UPS chama-se qnapups. TrueNAS: o serviço UPS com Remote Monitor marcado.

  4. Opcional: o DumbMonit só envia nome de utilizador e palavra-passe se introduzir um, e o upsd não pede nenhum para ler. Se a sua política quer todos os clientes identificados, adicione ao upsd.users um utilizador sem actions nem instcmds, com uma palavra-passe longa e aleatória, e reinicie o upsd.

    [dumbmonit]
    password = a-long-random-password
  5. No DumbMonit, introduza o endereço do servidor NUT, por exemplo «nas.lan». Todas as UPS que publica são vigiadas; para vigiar só algumas, liste os seus nomes na opção UPS.

  6. O DumbMonit só lê: envia LIST UPS e LIST VAR, nunca LOGIN, SET, INSTCMD ou FSD, pelo que o servidor nunca o conta como secundário a esperar antes de se desligar.

CredencialCampos
Sem autenticaçãoA predefinição: o upsd deixa qualquer anfitrião que aceite ler as variáveis da UPS.
Nome de utilizador / palavra-passe do upsdEnviados com USERNAME e PASSWORD antes de ler. O upsd só os verifica para comandos, que o DumbMonit nunca envia.

Endereço: um nome de anfitrião ou IP (nas.lan), host:port, ou a forma ups@host do upsc, da qual só o anfitrião é mantido. Opções: porta (3493), a UPS a vigiar (todas por predefinição) e o tempo limite por troca (10 s).

Uma ligação recusada ou a ausência de resposta conta como o monitor estar inacessível. Quando a máquina que corre o servidor NUT se desliga no corte que reporta (é muitas vezes o seu próprio upsmon primário), os alertas da UPS ficam ocultos como suprimidos enquanto Monitor unreachable dispara para esse mesmo monitor: leia o alerta Monitor unreachable como o sinal de que a falha de energia venceu. Corra o servidor NUT numa máquina que sobreviva às outras, ou vigie a UPS a partir de um segundo servidor NUT. ACCESS-DENIED é mostrado como erro de credencial, e um nome de UPS que o servidor não publica como erro de configuração; nenhum dos dois acorda ninguém de noite. A ligação é TCP simples: STARTTLS não é usado, e nada do que é lido é secreto.