ceilometer架构分析
整体架构
采集模块主要分为三大块。
1. Ceilometer:用于采集数据并处理数据后发送到gnocchi服务去存储
2. Gnocchi:用于将采集数据进行计算合并和存储并提供rest api方式接收和查询监控数据
3. Aodh:主要负责告警功能
ceilometer架构
1. Ceilometer-compute服务:通过调用多个采集插件(采集插件在setup.cfg中有定义,ceilometer.poll.compute对应的就是采集插件)收集信息,这个服务收集的是有关虚拟机资源使用情况相关的数据,比如cpu、内存占用率等,通过libvirt获取这些信息,并发送到notifications.sample队列中保存。
2. Ceilometer-central服务:也是采集数据的服务,但它是通过API的轮询方式去获取一些服务的信息,采集的是Ceilometer-polling服务采集以外的信息,比如磁盘服务的状态和总共使用了多少。
3. Ceilometer-agent-notification:polling服务采集到的原始数据称为Meter。Meter是资源使用的计量项,它的属性包括:名称(name)、单位 (unit)、类型(cumulative:累计值,delta:变化值、gauge:离散或者波动值)以及对应的资源属性等,不符合相关格式,因此可以在发送数据前进行一些转换,这个转换称为Transformer,一条Meter数据可以经过多个Transformer处理后再由publisher发送。
这个是处理数据并进行数据转换的服务,该服务先是从notifications.sample队列中取出消息,
然后经过处理和转换成measure结构后发送数据到gnocchi服务中去。
4. Ceilometer-collector服务:该服务在以前的版本中是用来获取监控数据消息然后统一处理后发给Gnocchi-api服务的,但现在通过配置pipeline.yaml配置文件的publisher为gnocchi,则不经过ceilometer-collector中转了,直接发送到gnocchi-api服务里去处理。
Gnocchi架构
从图可以看出Gnocchi的服务主要包含两大服务,API和Metricd服务。同时可以看到有三个存储,Measure Storage、Aggregate Storage和Index。
1. Measure Storage:是经过ceilometer-agent-notification服务处理后发送过来的数据,是实际的监控数据,但这些数据还需要经过gnocchi服务处理,处理后就会删除掉。比如这部分数据就可以保存到file中,当然也支持保存到ceph,但这属于临时数据,所以用file保存就可以了。
2. Aggregate Storage:Aggreate是总数、合计的意思,gnocchi服务采用的是一种独特的时间序列存储方法,这个存储存放的是按照预定义的策略进行聚合计算后的数据,这样在获取监控数据展示时速度就会很快,因为已经计算过了。用户看到的是这层数据。后端存储包括file、swift、ceph,influxdb,默认使用file。可以保存到ceph中,这样可在任意一个节点上获取,但由于存储的都是大量小文件,大量的小文件对ceph来说并不友好。
3. Index:通常是一个关系型数据库(比如MYSQL),是监控数据的元数据,用以索引取出resources和metrics,使得可以快速的从Measure Storage和Aggregate Storage中取出所需要的数据。
4. API:gnocchi-api服务进程,可以托管到httpd服务一起启动,通过Indexer和Storage的driver,提供查询和操作ArchivePolicy,Resource,Metric,Measure的接口,并将新到来的Measure(也就是ceilometer-agent-notification发送到gnocchi-api服务的数据)存入Measure Storage。
5. Metricd:gnocchi-metricd服务进程,根据Metric定义的ArchivePolicy规则周期性的从Measure Storage中获取未处理的Measure数据并进行处理,将处理结果保存到Aggregate Storage中,同时也对Aggregate Storage中的数据进行聚合计算和清理过期的数据。
6. API和Metricd服务都是设计成了无状态的服务,可以横向拓展来加快数据的处理。
7. Gnocchi中有三层数据,resources -> metric -> measure
Resource:是gnocchi对openstack监控数据的一个大体的划分,比如虚拟机的磁盘的所有监控资源作为一个resource,可用命令gnocchi resource list查看
Metric:是gnocchi对openstack监控数据的第二层划分,归属于resource,代表一个较具体的资源,比如cpu值,可用命令gnocchi metric list查看
Measure:是gnocchi对openstack监控数据的第三层划分,归属于metric,表示在某个时间戳对应资源的值,可用命令gnocchi measures show metric_id