One possible to monitor cloud is to monitor the load of hosts. If the host is overloaded, some VMs should be migrated from this host to another host to improve the performance. Otherwise, all VMs should be migrated from underloaded host to other host and then switch off this host to save more energy.
I think first you must take in your consideration this field cloud monitoring it's a huge concept and contain different research trends so you must decide your work in simulation environment within programming field or within hardware section and their tools ... depending on architecture and classification type of cloud units you can choose one field then try to improve the performance of cloud by optimizing cloud.
The approach I have seen in the past with Openstack is to have one or more dedicated monitoring VMs. This is expensive. Their size depends on how big the Openstack deployment. This is for rapid high performance debugging, not really for operational performance. is this of any help?