OpenStack作为一个开源的IaaS平台,发展迅速,越来越多的公司基于OpenStack做自己的公有云平台,而计量和监控则是必不可少的基础服务。由于OpenStack初始并不提供这两种服务,所以许多公司需要自行开发,为了顺应需求以及避免重复的工作,Ceilometer作为OpenStack的一个子项目孕育而生,它像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑。
Ceilometer数据收集方式
触发收集,轮询收集
最初采用这两种消息收集方式原因以及当前情况:
当OpenStack内部发生的一些事件时,都会发出对应的notification消息,比如说创建和删除instance,这些信息是计量/计费的重要信息,因此第一种方式是Ceilometer第一数据来源,但是有些计量信息通过notification消息是获取不到的,比如说instance的CPU的运行时间,或者是CPU的使用率,这些信息不会通过notification消息发送出来,因此Ceilometer增加了第二种方式,周期性的调用相关的API去获取这些信息。但是随着alarm的应用,也由于轮询机制的消耗比较大(由于不需要的数据而带来的数据了的叠加),触发机制基本可以代替轮询方式。