...
It seems like the best option for the back end would be a combination of using both a custom data storage system and Amazon Cloudwatch. The custom data store would be used to hold "windowed" data, that is high resolution raw data (like per-user login events with timestamps, or project activity events) but for a specifically limited period of time. This data would then be periodically (daily) aggregated and pushed to Cloudwatch. Then, if it turns out that we want to store data at a higher resolution or for a longer period than cloud watch does, we can export it to our own round robin database tool (possibly rrdTool).
Below is a diagram of the basic data flow for the application. The main tool that needs to be implemented is the "Collector" aspect of the diagram below. This can probably be implemented as an Amazon Simple Workflow worker.