Monitoring is vital in IT environments, because it helps administrators to keep a close eye on their infrastructure and services. With the emerging of the Cloud Computing (CC), things become more critical. Indeed, CC aims to provide unlimited ΓΓ resources as pay-per-use services and due to its distributed and elastic nature, monitoring solutions need to be also distributed, scalable, high performance and modular. Not to mention that CC generates a high amount of data, their processing needs to be efficient without affecting the performance of the entire Cloud. This paper will discuss a proposed monitoring architecture for Cloud infrastructures that provides RESTful API for each component and interacts with various Cloud Managers (CM) (such as OpenStack, CloudStack, Eucalyptus etc.) and other monitoring solutions such as Nagios, Icinga etc. to gather additional information about the infrastructure (new added hosts, VMs etc.). This architecture will also provide a data-mining component using the parallel computing model MapReduce to provide metrics for billing purpose, and data correlation to avoid future performance or availability problems.