How are you collecting individual counters and statistics?
Thinking to use AOP to store info in MBeans.
Or provide inline code to collect counters.
But the key question is how to aggregate counters across server nodes.
You might consider setting up a JGroups Channel and use multicasting to pass information among the nodes as does the JBoss Cache. One idea.