После установки системы мониторинга за источником бесперебойного питания NUT есть возможность получать параметры состояния ИБП следующим образом:

# /usr/local/bin/upsc myups@127.0.0.1
battery.voltage: 80.43
battery.voltage.nominal: 78.3
driver.name: megatec
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/cuau0
driver.version: 2.4.1
driver.version.internal: 1.6
input.frequency: 50.0
input.frequency.nominal: 50.0
input.voltage: 202.5
input.voltage.fault: 0.0
input.voltage.maximum: 238.5
input.voltage.minimum: 192.0
input.voltage.nominal: 220.0
output.voltage: 220.0
ups.beeper.status: disabled
ups.delay.shutdown: 0
ups.delay.start: 2
ups.load: 25.0
ups.mfr: UPS
ups.model: Model 3000 Ver R1.2B
ups.serial: unknown
ups.status: OL
ups.temperature: 33.0
ups.type: online

Из всего потока информации для визуализации представляют интерес:

  • текущее значение напряжения сети input.voltage
  • текущая нагрузка ИБП ups.load
  • текущая температура ups.temperature

Приведу скрипт, который выдает эту информацию в виде, необходимом для cacti

Voltage:204.0 Load:24.0 Temperature:33.0
#!/usr/bin/perl
$cmd = '/usr/local/bin/sudo /usr/local/bin/upsc myups@127.0.0.1';
@strings = `$cmd`;
foreach $str (@strings) {
if (($str,'input.voltage:')!=-1) {
$str =~ /.+\s(\d+\.\d)/;
$voltage = $1;
}
if (($str,'ups.load:')!=-1) {
$str =~ /.+\s(\d+\.\d)/;
$load = $1;
}
if (($str,'ups.temperature')!=-1) {
$str =~ /.+\s(\d+\.\d)/;
$temperature = $1;
}
}
"Voltage:$voltage Load:$load Temperature:$temperature \n";
__END__

Вот так выглядят графики:

Напряжение сети, В

Нагрузка ИБП, %

Температура внутри корпуса ИБП,  ºС.