In my experience, power loss and network infrastructure problems are a far more likely reason for "the PLC went down and then came back up and nobody knows why" sorts of failures than a memory management function.
It sounds like you have some sort of historian in your system; exactly what is it ?
RSLinx Classic and FactoryTalk Linx have some limited "pre-defined items" that you could log via OPC. @IsPresent tells you the basic connectivity status, and if you're really interested in memory, @FreeMem will tell you that.
Each communication driver also has a Diagnostics set of data that you can monitor, but it's not exposed to OPC or easy to log manually.
The CompactLogix communications daughtercard has Ethernet and CIP communications statistics in its various objects, which you could trend with some effort.
But often the most bang for your buck comes from network management software that's set up to monitor the SNMP objects inside the switches and routers that make up your infrastructure. Sometimes you get it from the vendor (Cisco, HP, etc) sometimes it's IT-industry stuff like SolarWinds or OpenNMS or Cacti.
The task of figuring out organically-expanded networks to find the vendors and capabilities of their switches also often lends itself to clean-up and better understanding of the network.
I wish the CompactLogix had an easily-accessible "Uptime" counter, but it's hidden in a little Java applet. Instead, put a simple one into your CompactLogix to grab the WallClockTime when the controller goes into RUN mode, so you can compare it to the current Wall Clock Time and figure out if the controller has recently been power cycled.