作用:提供计量功能,专注于计量,为计费而生,计量监控计费,在私有云中,主要用来监控整个OpenStack的状态,以及对应具体的计算存储网络资源,实时的上报告警,配合nova以及heat,还可以实现VM的热迁移动作。
    架构:
    Ceilometer由5个重要的组件以及一个Message Bus组成,简单介绍一下各个组件以及他们之间的关系:
    (1) Compute Agent
    该组件用来收集计算节点上的信息,在每一个计算节点上都要运行一个Compute Agent,该Agent通过Stevedore管理了一组pollster插件, 分别用来获取虚拟机的CPU, Disk IO, Network IO, Instance这些信息,值得一提的是这些信息大部分是通过调用Hypervisor的API来获取的, 目前,Ceilometer仅提供了Libvirt的API。
    (2) Central Agent
    Central Agent运行在控制节点上,它主要收集其它服务(Image, Volume, Objects, Network)的信息,实现逻辑和Compute Agent类似,但是 是通过调用这些服务的REST API去获取这些数据的。
    (3) Collector
    这个应该是最为核心的组件了,它的主要作用是监听Message Bus,将收到的消息以及相应的数据写入到数据库中,它是在核心架构中唯一一个 能够对数据库进行写操作的组件。除此之外,它的另一个作用是对收到的其它服务发来的notification消息做本地化处理,然后再重新发送到 Message Bus中去,随后再被其收集。
    (4) Storage
    数据存储现在支持MongoDB, MySql, Postgresql和HBase,现在H3又新增加了对DB2的支持,其中MongoDB是支持最好的。
    (5) REST API
    像其它服务一样,Ceilometer也提供的是REST API,API是唯一一个能对数据库进行读操作的组件,虽然后来加入的Alarm API能够直接对数据库 进行读写,但是Alarm应该是一个较为独立的功能,并且它的读写量也不大
    (6) Message Bus
    Message Bus是整个数据流的瓶颈,所有的数据都要经过Message Bus被Collector收集而存到数据库中,目前Message Bus采用RabbitMQ实现。
    (7) Pipeline
    Pipeline虽然不是其中一个组件,但是也是一个重要的机制,它是Agent和Message Bus以及外界之间的桥梁,Agent将收集来的数据发送到pipeline中, 在pipeline中,先经过一组transformer的处理,然后通过Multi Publisher发送出去,可以通过Message Bus发送到Collector,或者是发送到其它的 地方。Pipeline是可配置的,Agent poll数据的时间间隔,以及Transformers和Publishers都是通pipeline.yaml文件进行配置。