ceilometer的进化之路

9人阅读 评论(0) 收藏 举报
分类:

领导提出的需求:
  在不给云主机安装客户端的情况下,监控云主机的 cpui 内存 网络 io,并且能出图。
想了几个方案:
1、ceilometer取数据,存入mangodb,用zabbix来读mangodb数据绘图

2 ceilometer 取数据 ,gnocchi来聚合数据, grafana来出图
3 ceilometer 取数据,直接把取到的数据通过zabbix trapper 丢给 zabbix,由zabbix来维护数据

4 干脆跳过 ceiometer,直接用zabbix 调libvirt取数据
权衡了下 选择了方案4.

主要理由还是处于对于大规模情况下ceilometer的性能不信任,在加上我这zabbix的玩的比较熟,
实测数据和实例里面安装agent 数据差距不大。
代码参考了https://github.com/bushvin/zabbix-kvm-res 
代码放在 github 上面 
https://github.com/superbigsea/zabbix-kvm
安装方法参考github上面说明
目前只支持单网卡 单硬盘,等有空了加上硬盘和网卡的自动发现


ceilometer项目最初的创建目的是实现一个为openstack采集数据,然后为计量和监控以及其它服务提供数据支撑。而数据的收集和存储一直是ceilometer的大问题。

ceilometer-api的进化之路

WSGI(Web Server Common Interface)是专门为Python语言制定的web服务器与应用程序之间的网关接口规范,wsgiref则是官方给出的一个实现了WSGI标准的简单的Python内置库。ceilometer最初采用wsgiref+pecan作为api服务的实现基础。

其中wsgiref.simple_server作为WSGI Server,主要作用是接受client的http请求。它首先会在底层建立一个TCP连接,并把该TCP连接放到连接池中。当WSGI Server空闲时,它从连接池中取出http请求(TCP连接)并解析,然后经过路由发送给相应的应用进行处理,并将处理完成后的结果返回给client。

wsgiref.simple_server虽然易用,但是只能单进程运行,这意味ceilometers-api同时只能处理一个http请求。在实际应用中,外部应用与ceilometer-api经常交换大量的数据,所以会造成http请求的延时,一旦某个http请求阻塞了api进程,其他的请求将得不到及时响应,严重影响ceilometer-api的效率。

kilo版本中ceilometer使用werkzeug替换掉wsgiref.simple_server作为api服务的WSGI,支持多个worker同时运行。然而这只是减少了ceilometer-api响应超时的概率,并没有从根本上解决交换大量数据时的性能问题。

数据存储后端的进化之路

Ceilometer在openstack应用中会采集大量的数据,这些数据对计费、监控、Autoscalling、数据统计分析等有很大的价值。而这些数据会随着时间不断增长,如何在这些巨量数据中进行读写和检索等操作成为了ceilometer的一个性能瓶颈。

openstack其他组件都使用mariaDB(MySQL的一个开源社区分支)作为后端存储,为了不影响其他组件正常运行,ceilometer必须考虑到数据库的性能问题。openstack开源社区最初的解决方法是ceilometer单独使用mongoDB作为存储后端,这样有2个好处:一是与其他组件的数据库引擎分离,即使ceilometer还存在数据库的性能问题也不会影响到其他组件的正常运行;二是在数据量很大的情况下,mongoDB有着更优异的读写性能。

为了避免数据不断增长造成数据库性能下降的问题,实际应用中经常通过“ceilometer-expirer”来做数据库定时清理,这是以牺牲监控数据的持久化为代价的。还有一个比较“非主流”的解决方法,完全抛弃ceilometer的api和数据库,将采集的数据直接转存入elasticsearch,其他应用直接通过elasticsearch的restful API接口进行检索等操作。

在经历了alarm、event、sample分库后,似乎mongoDB还存在性能问题。也许是被数据库的性能问题搞的头大了,openstack社区在Liberty版本推出了一个新的组件gnocchi来管理数据存储的后端,alarm也从ceilometer独立出去成了一个新组件aodh。现在,ceilometer终于可以专心地做数据采集的工作了。

pipeline机制的进化之路

Pipeline是"管道"的意思,它是ceilometer一个重要的机制,是Agent和Message Bus以及外界之间的桥梁。Agent将收集来的数据发送给pipeline manager,在pipeline中,数据先经过transformer的处理,然后通过Publisher发送出去。

Ceilometer收集数据有三种方式:

1) agent-notification:Ceilometer接收OpenStack其它服务上报的notification消息,然后转换为ceilometer采样值。

2) agent-polling (compute/central):直接从Hypervisor或者openstack其他组件的REST API接口来获取数据。

3) RESTful API:外部使用Ceilometer的REST API创建samples。

Ceilometer在这三种方式中都包含了pipeline机制。Liberty版本以后ceilometer将pipeline机制从agent-polling和RESTful API中去除,agent-notification则保留了这个机制。agent-polling和RESTful API收集到数据后不再经过独立的transformer处理和Publish,而是通过AMQP发送给agent-notification统一处理。这个改动大大简化了ceilometer数据采集的框架结构。

未来进化之路

publish与dispatch的融合

pipeline机制中的publisher和collector服务中的dispatcher的具有相同的作用,可以通过file方式直接写到文件中,可以通过direct或database方式直接写到数据库中,也可以通过http发送到系统外部。gnocchi和kafka只要将接口调整一下,即可以做publisher又可以做dispatcher。

作者大胆猜测,将来publisher与dispatcher有可能融为一体,放在collector服务中,而pipeline机制也只做transformer处理。

与其他监控软件的融合

目前,ceilometer主要致力于compute、storage、network的计量监控。其中,对于compute的计量也集中在VM的性能监控,对Host的监控能力也略显不足,因此,Kilo版本中ceilometer在agent-central增加了对硬件资源的监控,通过snmp协议进行硬件性能数据的采集。

实际生产环境中,openstack需要借助第三方软件Mrtg,Cacti,Zabbix等来做为监控补充。ceilometer在自身功能不够强大的时候,也许会考虑与第三方软件的融合,比如打通与第三方软件监控数据的共享互通。

作者简介: 苏正伟,软件工程师,从事OpenStack相关的工作已有2年的时间,对ceilometer有深入的研究

出处:http://www.sohu.com/a/114363141_468741

查看评论

大数据分析高手之路

本课程由多名大数据业界精英呕心沥血精心打造,主要包括视频、交互、实训平台、以及直播课程。课程视频主要包括大数据的统计学基础、常用统计分析模型、以及爬虫理论与实践。理论与实操案例结合,通过R语言实操练习快速掌握常用的统计分析模型,通过Python实操掌握基本的爬虫理论与实践。然后再通过实训平台及交互课程的大量实训演练,使学者完全掌握大数据分析师所应具备技能。
  • 2016年05月30日 15:37

ceilometer+gnocchi+influxdb

在gnocchi的核心思想中,是通过后台的异步处理ceilometer发送过来的采样数据,然后根据存储策略定义的汇聚方式,对数据进行预处理。然后用户获取统计数据的时候,直接获取到对应的已经统计好的数据...
  • S1234567_89
  • S1234567_89
  • 2016-09-08 12:11:15
  • 1016

揭秘大型网站架构进化之路

丁浪,非著名架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。声明:版权归丁浪作者本人所有,转载请联系作者本人。互联网上有很多...
  • g6U8W7p06dCO99fQ3
  • g6U8W7p06dCO99fQ3
  • 2018-01-03 00:00:00
  • 353

程序员进化之路

程序员的成长的三个阶段
  • laizx
  • laizx
  • 2016-09-02 16:36:25
  • 458

垂直电商架构进化之路

作者:张增、邓良驹,分别为乐视云计算电商云团队负责人,乐视云计算高级开发工程师来自:高效运维1. 电商系统发展过程电商网站在不同时期的架构复杂度有所不同:初创期:商品类型少,业务复杂度低,系统架构简单...
  • g6U8W7p06dCO99fQ3
  • g6U8W7p06dCO99fQ3
  • 2018-01-02 00:00:00
  • 286

宜人贷系统架构——高并发下的进化之路(转载)

http://www.jianshu.com/p/410250e006cb 宜人贷系统架构——高并发下的进化之路 字数3583 阅读159 评论0 喜欢0 演讲嘉...
  • z278718149
  • z278718149
  • 2016-01-27 15:18:58
  • 1727

淘宝的十年技术之路

2014-10-15    分类:程序员人生1人评论     来源:内向爆裂 分享到:更多19 最近有幸,在学校的图书馆借到了子柳先生的《淘宝技术这十年》,拜读一番,感慨万分。...
  • leoking01
  • leoking01
  • 2014-11-12 10:10:16
  • 697

Ceilometer的知识总结

命令基本信息 官方文档位置这里 全部接口可以根据阅读以下代码文件来获取 ceilometerclient.shell.py //一级命令 ceilometerclient.v1.s...
  • alvine008
  • alvine008
  • 2014-06-26 15:22:29
  • 9951

Ceilometer详解

计量模块 Ceilometer 介绍及优化 0. 背景 0.1 为什么要有 Ceilometer? 通常云,特别是公有云在计费方面有三个层次: 计量 (Metering): 收集资源的使用...
  • u010305706
  • u010305706
  • 2016-03-28 21:56:35
  • 1380

Ceilometer原理及介绍

ceilometer的几个概念 ceilometer 主要有下面几个概念:  meter 是ceilometer定义的监控项,诸如内存占用,网络IO,磁盘IO等等 sample 是每个采集时间...
  • zhongbeida_xue
  • zhongbeida_xue
  • 2017-04-21 15:23:47
  • 5653
    个人资料
    持之以恒
    等级:
    访问量: 3万+
    积分: 2876
    排名: 1万+
    文章存档