skip to primary navigationskip to content
 

UPS Monitoring in Perl

Using NUT and its Perl library UPS::Nut to log and alert stuff...

Network UPS Tools (NUT) comes with a basic utility (upsmon) that monitors UPS status and can perform a safe shutdown. However, the only criteria it makes a decision on are whether the mains is good and whether the battery is capable of supplying the load for an arbitrary time.

NUT also provides a basic logging utility (upslog) to record UPS statistics. It is not quite up to the job...

I plan to write a script to replace upsmon and upslog.

Requirements:

  • Monitor multiple UPSes
  • Replicate the decision making part of upsmon: request a shutdown when the UPS runtime is low and the mains has failed.
  • Extend upsmon: request a shutdown when UPS temperature exceeds a threshold.
  • Replicate upslog, but record data in a more useful format

Possible additional features:

  • When shutting down due to over temperature we might not necessarily want to only shut down the one reporting the temperature.
  • Perhaps prioritise?
  • Data formats: Round-robin? SQLite?
  • Automatically generate ups monitoring webpage?
  • Dump which clients are monitoring which ups? Requires NUT 2.6.