Modern systems make use of virtualization to build scalable and elastic applications. A major example is cloud computing, which has emerged in the last decades as a cost-effective paradigm for hosting and delivering services over the Internet. Cloud providers adopt server consolidation strategies to manage resources, reducing underutilized hosts. However, collocated applications compete for physical resources. So, their particularities, as well as workload fluctuations, may negatively affect cloud applications’ performance. Performance monitors are useful tools for tracking performance behavior. The observation of events occurring in the system provides a detailed view of how applications affect resource usage. This way, performance counters can assist developers and enable the detection of bottlenecks, allowing administrators to verify whether service level agreements are met. However, the monitoring itself can be a contention source, especially in large scale systems, where hundreds of performance counters are collected, and the acquired data are stored at a high frequency. In this work, the influence of monitoring overhead in virtualized environments is analyzed. As a mean to reduce shared resource contention, it is proposed an approach to alleviate monitoring costs, bringing as benefits: an automatic method for performance counters selection; and overhead reduction by discarding unnecessary performance counters. Through experimental evaluation, this work characterizes the monitoring overhead in virtualized environments. A performance comparison using both the complete and the reduced set of performance counters highlights the benefits of adopting the proposed approach.