问题导读



1.ceilometer负责什么事情?

2.ceilometer 有哪些概念?

3.ceilometer 怎样採集hardware?







附上openstack 官网API   http://docs.openstack.org/developer/python-ceilometerclient/



ceilometer主要负责监控数据的採集。採集的项目包含虚拟机的性能数据,neutron-l3-router使用的网络带宽,glance&cinder&swift等租户使用信息,甚至是通过snmp採集物理机的信息,以及採集支持opendaylight的网络设备信息。

基本概念

ceilometer 主要有以下几个概念:

  • meter 是ceilometer定义的监控项,诸如内存占用,网络IO,磁盘IO等等
  • sample 是每一个採集时间点上meter相应的值
  • statistics 通常是统计学上某个周期内,meter相应的值(平均值之类)
  • resource 是被监控的资源对象,这个能够是一台虚拟机,一台物理机或者一块云硬盘
  • alarm 是ceilometer的告警机制,你能够通过阈值或者组合条件告警。并设置告警时触发的action

採集机制



ceilometer的各个服务中,与採集相关的服务是ceilometer-collector、ceilometer-agent-central、ceilometer-agent-compute、ceilometer-agent-notification。

我们能够通过下图了解一下他们之间的关系:









agent-*服务负责採集信息,採集的信息能够通过三种方式publish出来,包含RPC、UDP、File。RPC是将採集的信息以payload方式公布到消息队列,collector服务通过监听相应的queue来收集这些信息。并保存到存储介质中;UDP通过socket创建一个UDP数据通道。然后collector通过bind这个socket来接收数据。并保存到存储介质中;File方式比較直接,就是将採集的数据以filelog的方式写入log文件里。





至于使用哪种方式publish,那么就要看你的pipline文件是怎样配置的了。详细能够查看/etc/ceilometer/pipline.yaml中的publishers配置。

agent-*三个採集组件分别负责採集不同类型的信息。agent-notification负责收集各个组件推送到oslo-messaging的消息,oslo-messaging是openstack总体的消息队列框架,全部组件的消息队列都使用这个组件。agent-compute仅仅负责收集虚拟机的CPU内存IO等信息。所以他须要安装在Hypervisor机器上;agent-central是通过各个组件API方式收集实用的信息;agent-notification仅仅需监听AMQP中的queue就可以收到信息。而agent-compute和agent-central都须要定期Poll轮询收集信息。看下图来了解一下:











信息通过agent-*採集并由collector汇总处理,终于须要持久化到存储介质中,ceilometer眼下支持的存储包含mysql、DB2、HBase、mongoDB,从支持的数据库来看。监控数据持久化的压力还是相当大的。











採集项



agent-*组件在启动时候。通过stevedore的插件机制来载入採集项,包含每一个採集项相应的运行程序。

stevedore的插件配置是利用了setuptools的entry_points。所以我们能够通过查看entry_points的配置信息。来确定有哪些採集项。假设你的程序打包完成并公布到了python的搜索路径中。那么你须要查看ceilometer的egg文件来查看。或者你能够下载源代码查看setup.cf文件,相关信息例如以下:

  1. [entry_points]
  2. ceilometer.notification =
  3. instance = ceilometer.compute.notifications.instance:Instance
  4. instance_flavor = ceilometer.compute.notifications.instance:InstanceFlavor
  5. memory = ceilometer.compute.notifications.instance:Memory
  6. ...
  7. ...
  8. ceilometer.poll.compute =
  9. disk.read.requests = ceilometer.compute.pollsters.disk:ReadRequestsPollster
  10. cpu = ceilometer.compute.pollsters.cpu:CPUPollster
  11. ...
  12. ...
  13. ceilometer.poll.central =
  14. image = ceilometer.image.glance:ImagePollster
  15. storage.containers.objects = ceilometer.objectstore.swift:ContainersObjectsPollster
  16. ...
  17. ...

ceilometer.notification 相应的是agent-notification组件。ceilometer.poll.compute相应的是agent-compute组件。ceilometer.poll.central相应的是agent-central组件。



採集neutron l3 router 的bandwidth



与ceilometer其它採集方式不同的是。bandwidth的採集是通过neutron-meter-agent收集,然后push到oslo-messaging,ceilometer-agent-notification通过监听消息队列来收取bandwidth信息,能够看一些官方的wiki(https://wiki.openstack.org/wiki/Neutron/Metering/Bandwidth)。

依照wiki上的描写叙述,设置好rule,ceilometer就能够收集bandwidth信息了。router上的流量计算是利用了iptables的特性,iptables本身能够用于做流量统计。这里不清楚的去Google一下就可以。



比方我们使用neutron-meter 设定了这样一组规则:

  1. $ neutron meter-label-rule-list
  2. +--------------------------------------+----------+-----------+------------------+
  3. | id                                   | excluded | direction | remote_ip_prefix |
  4. +--------------------------------------+----------+-----------+------------------+
  5. | d2f28556-7369-42a7-9a92-9f2a12e929ce | False    | egress    | 66.66.66.0/24    |
  6. | e6a3542d-596b-415a-ab96-90df211c027b | False    | ingress   | 66.66.66.0/24    |
  7. +--------------------------------------+----------+-----------+------------------+

那么相应此规则建立的iptables规则例如以下:

  1. -A neutron-meter-r-d49bfb44-546 -d 66.66.66.0/24 -o qg-874a8e9b-4d -j neutron-meter-l-d49bfb44-546
  2. -A neutron-meter-r-d49bfb44-546 -d 66.66.66.0/24 -i qg-874a8e9b-4d -j neutron-meter-l-d49bfb44-546

neutron-meter-agent 会在设定的间隔时间内去通过iptables统计流量,然后push到oslo-messaging:

  1. $ ip netns exec qrouter-94cca346-ea17-48fe-94fd-30004078e339 iptables -t filter -L neutron-meter-l-d49bfb44-546 -n -v -x -Z
  2. Chain neutron-meter-l-d49bfb44-546 (2 references)
  3. pkts      bytes target     prot opt in     out     source               destination
  4. 0        0            all  --  *      *       0.0.0.0/0            0.0.0.0/0

採集hardware



ceilometer除了能够收集openstack组件的相关信息。也能够收集诸如kwapi、hardware、opendaylight信息。kwapi是採集物理机能耗信息的项目,agent-central组件通过kwapi暴露的api来收集物理机的能耗信息;agent-central也能够通过snmp协议直接收集hardware的CPU、MEM、IO等信息。opendaylight是SDN解决方式的开源项目,opendaylight规范中包含暴露一个API接口来提供SDN内部的一些信息,agent-central正是通过这个API能够收集opendaylight组件的信息。

假设我们想扩展这些监控信息。须要对ceilometer添加一些额外的配置。可是这些配置原理都是一样的,我们这里以採集hardware信息为例。



首先须要在被监控的hardw上开启SNMP协议。比方我们要监控一台物理机host为icehouse-ncloud-compute-a1。系统为ubuntu,先安装snmp和snmpd包,然后改动配置文件:

  1. #开启监听port和相应的ip
  2. agentAddress udp:161,udp6:[::1]:161
  3. #开启全部SNMP訪问项
  4. view   systemonly  included   .1   80

重新启动snmp服务,在ceilometer的pipline.yaml文件里增加例如以下(以採集hardware.memory为例),interval是poll的轮询间隔时间,能够按自家需求配置:

  1. - name: hardware_memory_source
  2. interval: 1800
  3. meters:
  4. - "hardware.memory.*"
  5. resources:
  6. - snmp://icehouse-ncloud-compute-a1
  7. sinks:
  8. - meter_sink

通过 ceilometer meter-list | grep hardware ,能够看到新增的监控项。假设要查看监控数据能够这样:

  1. $ ceilometer sample-list -m hardware.memory.total
  2. +----------------------------+-----------------------+-------+-------------+------+---------------------+
  3. | Resource ID                | Name                  | Type  | Volume      | Unit | Timestamp           |
  4. +----------------------------+-----------------------+-------+-------------+------+---------------------+
  5. | icehouse-ncloud-compute-a1 | hardware.memory.total | gauge | 131996840.0 | B    | 2014-05-21T03:07:40 |
  6. | icehouse-ncloud-compute-a1 | hardware.memory.total | gauge | 131996840.0 | B    | 2014-05-21T02:37:40 |

《转》ceilometer的数据採集机制入门的更多相关文章

  1. 数据採集器服务——Socket(今天才发现AES加解密代码跟贴的时候不一样,貌似乱码,不知什么情况)

    近期刚做的一个项目.关于 Socket TCP 通信. 需求方提供了一个 ARM 机器,及数据採集器,须要我做一个服务端与数据採集器进行交互. 目的: 数据採集器:定时将读取到的数据发送到服务端. 服 ...

  2. 数据採集之Web端上传文件到Hadoop HDFS

    前言 近期在公司接到一个任务.是关于数据採集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志採集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好近期都有在这方面 ...

  3. Matlab---串口操作---数据採集篇

    matlab功能强大,串口操作也非常easy.相信看过下面两个实验你就能掌握咯! 開始吧! 实验1: 从电脑COM2口读取数据.并将数据保存在TXT文件里,方便数据分析,以下是M脚本: %名 称:Ma ...

  4. 用WidgeDuino创建一个SCADA(监控与数据採集)系统

    WidgeDuino – 近期在Kickstarter上亮相 – 是一个智能的易配置的窗体- 基于Microsoft Windows平台和基于像 Atmel-based Arduino board 的 ...

  5. 金蝶盘点机条码数据採集器PDA,WIFI已经连接,可是PDA应用程序还是网络初始化不成功?

    PDA任务栏里显示了小电脑.小电脑也是绿色的,为什么PDA还是网络初始化不成功呢? 1.须要检查下server的[PDA后台服务程序]是否打开?假设没有打开请打开[PDA后台服务程序]. 2.须要检查 ...

  6. PHP採集利器:依据開始字符串和结束字符串截取须要的採集内容数据

    PHP採集利器:依据開始字符串和结束字符串截取须要的採集内容数据 function strCutByStr(&$str, $findStart, $findEnd = false, $enco ...

  7. C++ 採集音频流(PCM裸流)实现录音功能

    与上一篇的"C++ 播放音频流(PCM裸流)" 点击打开链接 相相应,本篇是关于用C++实现录音功能的.相同是直接建一个win32控制台程序然后将代码拷过去改个文件名称就能够用,也 ...

  8. PHP採集CSDN博客边栏的阅读排行

    项目中要用到採集的数据,所以就先拿CSDN博客来试了试.这里使用Simple HTML DOM(官网)这个库,它可以方便的遍历HTML文档. <?php include_once('simple ...

  9. Hadoop生态圈-大数据生态体系快速入门篇

    Hadoop生态圈-大数据生态体系快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.大数据概念 1>.什么是大数据 大数据(big data):是指无法在一定时间 ...

随机推荐

  1. java获取指定日期之前或之后的时间

    /** * 前/后?分钟 * * @param d * @param minute * @return */ public static Date rollMinute(Date d, int min ...

  2. 【php】利用php的构造函数与析构函数编写Mysql数据库查询类 (转)

    上次在<[php]利用原生态的JavaScript Ajax为php进行MVC分层设计,兼容IE6>(点击打开链接) 一文中,对于php查询Mysql数据库的model.php写法还不够完 ...

  3. 基于cookie或session的登陆验证之安全性问题

    因为session是关了浏览器就没了.所以可以通过cookie结合session方法来做验证! 第一次登陆,生成一个cookie,保存一些加密的帐号信息,然后再生成一个session 这样去其他需要验 ...

  4. C# SMTP邮件发送程序

    邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...

  5. cannot resolve symbol AppCompatActivity 心得

    新建Active 默认用的AppCompatActivity竟然报错cannot resolve symbol AppCompatActivity,网上找了半天,最后在朋友的帮助下解决,记录下 一.导 ...

  6. 使用SQL SERVER FOR XML PATH将多个结果集转换成一行并进行去重处理

    在一个医药行业的系统中需要根据患者的接触记录ID获取不同接触类型的集合,效果像这样     --患者接触记录信息,一个患者可以有N个不同的接触记录,每个接触记录又有N个接触类型记录 IF OBJECT ...

  7. OpenStack 部署总结之:单节点icehouse网桥的配置

    部署完icehouse,安装完实例之后.假设虚拟主机须要和外部进行通信.还须要对宿主机的网桥进行配置 宿主机的配置 改动ifcfg-em1的内容为下面内容: DEVICE=em1 ONBOOT=yes ...

  8. 【Project Euler 8】Largest product in a series

    题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...

  9. 华为E392-u92在 linux 2.6.34 内核环境下支持

    还是先说说思路吧.网关需要支持4G LTE网卡.如之前的操作,插上网卡后,usb-modeswitch 后没有产生对应的/dev/ttyUSB0-2. 所以ppp拨号脚本等无法工作.这里在ubuntu ...

  10. WCF 之 生成元数据和代理

    在WCF开发概述中讲解了手工方式的WCF应用,其实实际开发中使用更多的使用配置方式和元数据来实现WCF,下面我们来看一个具体的Demo,这个例子和WCF开发概述中使用的是同一个例子,只是实现方式不同, ...