I have a APC SUA1000UXI and my experience hasnt exactly been stellar. The external batteries usually lost their mojo every few months. I made sure that the battery was never deep cycled, but still the 'remaining time' as shown by apcupsd dropped sharply after few months.
All of that changed when I installed an inverter in the house. During a power cut the inverter gets kicked in first followed by the UPS. I am able keep months of computer uptime with this arrangement. So my 2 cents install both an inverter and an APC ups. I prefer APC because their software works very well and is supported on linux and BSD.
If the batteries are loosing charge in just a few months, then I am assuming you are using sealed batteries(no way a flooded battery would loose it capacity so fast). If you are then there is nothing you can do, other then to go for a flooded Tubular battery. Exide own white papers say that a sealed gel battery will loose its capacity/life by as much as 50%, even if its discharged once or twice to 100% discharged state .
In Smart UPS you can change the battery float voltage, by connecting it to the serial port. Usually the factory voltage is a tag higher, this increases in December when the temperature is really low, which causes the gel battery to expand and die or be damaged, in a flooded battery it will loose its water very frequently.