<转>Openstack Ceilometer监控项扩展
Openstack ceilometer主要用于监控虚拟机、服务(glance、image、network等)和事件。虚拟机的监控项主要包含CPU、磁盘、网络、instance。本文在现有监控项的基础上,介绍怎样添加新的监控项目。
一、Ceilometer框架结构
Ceilometer监控通过在计算节点部署Compute服务。轮询其计算节点上的instance。获取各自的CPU、网络、磁盘等监控信息,发送到RabbitMQ。Collector服务负责接收信息进行持久化存储。具体框架例如以下图所看到的(点击查看大图)。

本文主要介绍instance的监控。获取instance的监控数据发送到message队列。instance的监控数据的获取主要通过Compute服务以pollster方式轮询各虚拟机。Compute服务类图例如以下(点击查看大图)。

通过该类图可知,新增项目须要继承ComputePollster类,并实现get_samples方法。最后通过配置就可以。获取到新的监控项数据。
因为。现有的Ceilometer没有对内存的实时监控,本文以内存为例。具体介绍添加新的监控项的流程。
二、新增虚拟机监控项
现有虚拟机的监控项目,没有对内存的监控。
本文以内存为例。介绍添加内存监控模块的方法,添加内存监控方法比較简单。主要在compute端添加获取数据的方式,然后改动配置文件,就可以将数据持久化数据库中。
具体过程例如以下:
1、在 ceilometer/ceilometer/compute/pollsters文件夹下新建文件mem.py(名字自己定义)。在该文件下定义MEMPollster类并实现get_samples方法:
| class MEMPollster(plugin.ComputePollster): |
| def get_samples(self, manager, cache, instance): |
2、get_samples中获取内存数据的方式,可參考CPU获取数据的架构,在ceilometer/ceilometer/compute/virt/inspector.py 中定义返回数据的格式:
| MEMStats = collections.namedtuple('MEMStats', ['total', 'free']) |
获取内存方式多样,本文採用读取proc文件获取instance所在进程占用的内存大小。有时获取的数据比instance最大内存大。所以该方式对windows系统的虚机有一定的误差。仅作为演示样例參考。
方法定义例如以下:
| def inspect_mems(self, instance_name): |
获取数据后,按sample数据结构返回就可以。
3、设计完上述获取数据的方式后。并不能轮询到内存数据,还须要改动一些设置文件。
首先。改动ceilometer/setup.cfg文件,在该文件ceilometer.poll.compute下,添加
| mem = ceilometer.compute.pollsters.mem:MEMPollster |
其次。因为包冲突的问题。将ceilometer安装在隔离环境中,所以source隔离环境,又一次安装ceilometer,以上配置才干生效。
运行 python setup.py develop 命令就可以。
4、重新启动ceilometer服务,进入mongodb的ceilometer数据库就可以在meter表中查看mem的监控数据。
监控的一些实现,能够做一下:https://github.com/kevinjs/procagent
<转>Openstack Ceilometer监控项扩展的更多相关文章
- Openstack Ceilometer监控项扩展
Openstack ceilometer主要用于监控虚拟机.服务(glance.image.network等)和事件.虚拟机的监控项主要包括CPU.磁盘.网络.instance.本文在现有监控项的基础 ...
- <转>Openstack ceilometer 宿主机监控模块扩展
<Openstack ceilometer监控项扩展>( http://eccp.csdb.cn/blog/?p=352 )主要介绍了对虚拟机监控项扩展, 比較简单.怎样在ceilomet ...
- 为自己的系统定制openstack ceilometer
一.目的 最近研究了一下ceilometer,目的做一个监控系统,对系统中发生的事件进行处理.ceilometer对openstack各个组件信息的收集方式主要由 推 和 拉 两种. “推”: 就是 ...
- zabbix 监控项
监控项 概述 监控项是从主机收集的数据信息. 配置主机后,你需要添加一些监控项以开始获取实际数据. 一个监控项是一个独立的指标.快速添加多个监控项的一种方法是将一个预定义的模板附加到主机.然而,为了优 ...
- 3 监控项、触发器、web监控、nginx监控
1.自定义监控项 Item 参数文档 https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_age ...
- Zabbix 微信报警Python版(带监控项波动图片)
#!/usr/bin/python # -*- coding: UTF- -*- #Function: 微信报警python版(带波动图) #Environment: python import ur ...
- zabbix添加自定义监控项
zabbix添加自定义监控项 author:headsen chen 2017-10-16 17:23:17 个人原创,转载请注明作者,出处,否则依法追究法律责任 主机端配置: 首先安装好za ...
- zabbix自定义监控项、添加图形、设置触发器、远程执行命令
监控项是在zabbix中手机数据的基础,没有监控项就没有数据,系统自带模板带有大量默认item,自定义item可以定义在模板中,在应用模板即可使用对应item:也可直接在host中定义 目标:自定义监 ...
- zabbix通过agent添加监控项的步骤
1.确定要监控的对象的指标 2.在agent端上,把如何具体获取指标写成shell脚本,并放在一个和其它agent端统一的位置上 3.在agent端上,自定义监控项key值,配置zabbix_agen ...
随机推荐
- ios数据的基本类型和流程控制
swift的声明变量方式和js是类似的.基本类型基本都和java的差不多,多了字符类型. let:用于声明常量: var:用于声明变量: 基本类型有:double,float,Int(数字类型):bo ...
- C语言常量
Constant包括4种类型: 整型 浮点型 枚举 字符型 #include <stddef.h> #include <uchar.h> int main() { /* Int ...
- 使用Dreamweaver在一张图片上添加多个热点链接
所有代码: <html> <head> <meta charset="utf-8"> <title>无标题文档</title& ...
- Android中ViewPager动态创建的ImageView铺满屏幕
ImageView imageView=new ImageView(context); imageView.setScaleType(ScaleType.FIT_XY);//铺满屏幕
- js 学习笔记---BOM
window对象 1. window 对象是Global对象,在全局作用域中声明的变量和函数都可以通过window.来访问.跟直接在window上添加属性效果一样.唯一的区别就是delete时,如果是 ...
- python_文件io
# -*- coding:UTF-8 -*-#从键盘读入raw_input([prompt]) #函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)#input([prompt]) 函数和 ...
- iOS UIWebView 访问https绕过证书验证的方法
@implementation NSURLRequest (NSURLRequestWithIgnoreSSL) + (BOOL)allowsAnyHTTPSCertificateForHost:(N ...
- C# 执行sql语句批量更新
int x = db.Database.ExecuteSqlCommand(string.Format("update T_Pension SET UnitType = '{0}' WHER ...
- 【上海站】EOLINKER 用户培训之旅,等你来共建API新连接
从今年3月4日起,EOLINKER AMS 团队将再次开启全国用户培训之旅.本次全国培训之旅依旧将覆盖北上广深等国内主要城市,重点提供两种服务内容,一是 对 EOLINKER 产品的交流,包括 API ...
- SolidWorks学习笔记(一)
一.草图绘制 1.简单命令 先直线后圆弧,几何约束.尺寸标定 2.圆周阵列 3.几何关系——对称 添加几何约束:圆弧相等.关于竖直中心线的对称 4.捕捉圆心 5.尺寸锁定,有圆弧的,先直后圆 6. 7 ...