Cloud computing provides scalable computing resources on demand. Monitoring cloud computing resources is important so that resources can be dynamically allocated, migrated, or shut down to meet users' requirements. Challenges in cloud computing monitoring systems include detecting patterns that might lead to failure of the cloud system, detecting malfunctioning problems within the cloud platform after they occur, and issues related to the fact that existing monitoring solutions are tightly coupled to specific cloud platforms, while there is an emerging need for monitoring solutions that are independent of underlying subsystems. To address these challenges, we designed a hybrid cloud monitoring software architecture that can work as an add-on layer on top of existing cloud computing platforms. The proposed architecture is designed based on facade software design pattern and utilizes complex event processing concept in which data from various primitive metrics streams is processed to detect previously defined patterns. Prototype applications have been developed to demonstrate the architecture's usability. Performance tests were applied to prototype applications. Computation times required for the operation of the proposed architecture were negligible.