Yeah, PowerChute is the way to go with an APC UPS. I have it on about 5 different personal systems (windows, linux, and solaris based). I have used it on about 30 more work systems (including multiple systems connected to the same APC unit, with just the single USB, in which case you had to have the other systems point to the main one to receive shutdown information, and the network based APC UPS systems wherein you tell all the systems the IP of the UPS). It works really well once you play around with it and get to understand it's capabilities.
I have most of mine setup such that they stagger shutdowns (on systems that share a single UPS) such that it would focus on keeping systems that I had file storage located as opposed to compute systems (so my fileserver VM stays on, but I shutdown all the other VMs on my main server, and I turn off the fileserver when there is just 5 minutes battery remaining in order to give it enough time to cleanly power off).