我们要知道的是,ceilometer的服务是可以水平扩展的,其中最主要的两个服务是polling agent和notification agent
前者是为了轮询openstack的服务,并且建立计量值,比方说CPU运行的时间、磁盘接收到的请求量等等。
后者主要是为了监听消息队列,然后将监听到的消息转化成sample和event,并且根据pipeline.yaml中配置的信息做不同的处理。
所以,ceilometer主要有收集数据,转化数据,分发数据,存储数据五个过程:
一、收集数据
收集数据的总的流程图如上图所示,但是根据上面说到的,收集数据的流程又可以进一步的再细分为两个部分
(1)notification agent:监听数据
监听数据的过程如上图所示,我们可以看到notification agent消费来自其他服务的消息,启动一个notification agent主进程时,可以再创建多个子进程去处理不同的消息。
(2)ponning agent:请求数据
轮询数据的过程如上图所示,polling agent又可以细分成在计算节点上获取数据,和非计算节点上获取数据,前者称为compute agent,后者称为central agent,其中现在项目中主要用的是后者,他可以通过调用API来获取数据。其中,创建一个polling agent的主进程,可以相应的创建多个子进程,放在项目代码里面就是可以配置多个pollsters.
处理数据的这一整个过程也是通过notification agent完成的,其中处理数据又分为转化数据,分发数据和存储数据。
二、转化数据
转化数据如上图所示,通过上面的采集过程之后,我们得到许多数据,但是数据并不一定符合要求,所以我们可以根据pipeline.yaml中的配置,在管道中将采集到的数据进行进一步的转化。
三、分发数据
分发数据如上图所示,我们采集到的数据可以把它们送到不同的地方,现在主要有以下几种方式:
1、gnocchi,送到Gnocchi api
2、 notifier,通过notifier,送到消息队列,共外部系统使用
3、 udp,使用UDP包的方式分发
4、 http,送到REST 接口
5、 file,存储到指定文件
四、存储数据
ceilometer推荐使用gnocchi存储数据