Virtualization and cloud computing increase efficiency and flexibility in providing data and applications to users, yet managing performance of applications and transactions in the cloud is neither simple nor easy. When you add another layer, particularly one that is highly dynamic in nature, assuring a high quality user experience gets trickier when applications misbehave. It’s harder to determine where an application or transaction was working when the failure or slowdown occurred, since virtual machines are provisioned and decommissioned continually according to business priority and demand. You can no longer monitor an application in the context of its server.
1. Think End-to-end
The traditional server-centric monitoring approach is no longer relevant. Focus on applications and transactions instead.
2. Fix First
Application problems don't go away in the cloud; address them before making the move.
3. Prioritize
Map out your business priorities by application so you can focus on infrastructure and monitoring.
4. Establish Baselines
Set performance baselines before migration, so IT can accurately characterize user issues in the cloud.
5. Define Metrics
Establish core metrics for the cloud, such as response time for critical transactions.
6. Monitor QoS.
Watch for degradation of quality of service during and after migration.
7. Watch for Contention
Resource contention on virtual machines is a common problem that IT should monitor.
8. Balance Java Clusters
Beware that adding nodes/capacity to an unbalanced cluster has detrimental effects.
9. Weigh Performance
Compare the performance history of your app in the cloud to the performance history while the app was "on iron".
10. Optimize Staff
Deploy IT staff according to business priority so you don't under-staff a critical application.
{Source}