在做openstack资源统计监控中通过ceilometer+gnocchi获取cpu、memory的使用率,遇到了很多的坑,在一下分别记录,并附上实现的源码。
自从openstack发布到 S 版本以来,有些组件的获取数据的方式发生了很多的变化,需要持续关注的组件开源发展的人会知道,但是如果只是在网上搜一些博客等之类的文章,可能不够全面,例如前两年很多企业用的是 M、N等版本,其中有个统计参数 cpu_util ,用来获取cpu的使用率,但在 S 版本以后,你只能获取到 cpu 、vcpus 这样的参数了。这些参数并不是直接的使用率,但是通过聚合求值可以转化为使用率,为了进一步的测试,在前面的文章中提到了服务器压力测试,来查看获取结果的准确性,比如,你通过获取cpu的转化得到的使用率,它其实是多个cpu使用率之和,你如果给vm虚拟机分配的是单核,当然是不受影响的,但是如果是分配的多核,且每个核的cpu跑满的时候,就会发现问题,比如你计算得出的cpu使用率可能大于100%等等。
服务器压力测试可以参考下面的文章:
Linux服务器对cpu、memory、IO、disk以及web服务(CPU、内存、磁盘、网络等)进行压力测试
在这里,先附上如何通过API的方式获取虚拟机vm、主机节点compute node 的cpu、内存使用率,后面会写到应该注意的地方,在环境部署和虚拟机配置需要注意的地方,以及使用的参考资料会在后面列出。