一、  Ceilometer

  1. 1.    概述

Openstack ceilometer主要用于监控虚拟机、服务(glance、image、network等)和事件。虚拟机的监控项主要包括CPU、磁盘、网络、instance。

针对一个计量和监控系统需要考虑到的问题,可能都有哪些,打算上这样一个系统的时候,主要有三个问题需要考虑,一个是数据收集的问题,计量和监控,收集很多可能各种各样数据;另外一个是存储的问题,这么大量的数据收集过来怎么存储,怎么有效的查询;第三个问题是报警,我收集过来这些数据之后,用这些数据做一些事情,比如报警,能够及时地通知到管理员。Telemetry(Ceilometer、Gnocchi、Aodh)这三个项目分别就是解决这三个问题的。

  1. 2.    基本概念

ceilometer 主要有下面几个概念:

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

3.1 ceilometer整体架构

3.2进程介绍

A compute agent (ceilometer-agent-compute)

A central agent (ceilometer-agent-central)

A notification agent (ceilometer-agent-notification)

A collector (ceilometer-collector)

An alarm evaluator (ceilometer-alarm-evaluator)

An alarm notifier (ceilometer-alarm-notifier)

An API server (ceilometer-api)

3.3 Gathering the data

3.4 Notification Agents: Listening for data

3.5 Polling Agents: Asking for data

3.6 Processing the data

3.7 Transforming the data

3.8 Publishing the data

3.9 Storing the data

3.10 Accessing the data

二、  Gnocchi

  1. 1.   简述

Gnocchi的提出是为了解决Ceilometer性能问题,Ceilometer早期的时候数据模型设计的不是特别好,导致针对这几个数据库的性能都不太好。

Ceilometer因为当初提出得很早,又做过很多转变,导致他数据很灵活。但是性能有些下降。所以专门做了Gnocchi这样一个项目解决他这个问 题。这个是Gnocchi对解决问题的一个抽象,抽象出了Resource和Metric两个概念。刚刚提到Ceilometer是两种数据,一个是 Resource,一个是时间序列的数据,即Metric,Gnocchi主要就是来存储这些数据的,而Resource是索引,是Resoruce到 Metric的索引,这边是随着时间增长,对这些时间数据的索引,就是有哪些资源在Metric做这个事情。

  1. 2.   基本概念

2.1       Metric

指资源的某一项指标。如,主机的cpu,disk。

2.2       Measures

metric的检测的具体数据。

2.3       Resource

是被监控的资源对象,这个可以是一台虚拟机,一台物理机或者一块云硬盘

2.4       Resource Type

是用来管理resource的,只有预先定义resource的type,ceilometer collector注册资源的时候,才可以成功。Gnocchiclient没有提供创建type的cli。目前官方提供类型,请查看:http://docs.openstack.org/developer/gnocchi/resource_types.html

2.5       Archive Policy

metric的检测数据的存储规则。

l  Granulariy 处理数据的时间粒度。多长时间metric处理一次聚合数据。

l  Points 保存的数据数量。

l  timespan = points x granularity

l  back_window  metricd只处理时间戳在未来或在最近一次处理聚合周期内的检测数据。如果需要处理比当前处理数据周期老的数据,需要去设back_window。

For example, if an archive policy is defined with coarsest aggregation of 1 hour, and the last point processed has a timestamp of 14:34, it’s possible to process measures back to 14:00 with a back_window of 0. If the back_window is set to 2, it will be possible to send measures with timestamp back to 12:00 (14:00 minus 2 times 1 hour).

l  aggregation_methods 执行gnocchi capabilities list可以查看当前支持的聚合方法。在配置文件中,也可以配置default_aggregation_methods。

2.6       Archive Policy Rule

通过创建archive policy rule,模式匹配的方式把archive policy分配给metric

  1. 3.   整体架构

gnocchi的后端服务分成三部分:

l  gnocchi-api

a HTTP REST API 以wsgi方式启动的api服务。(metric/resource resource type/archive policy/archive policy rule的操作+measures的保存)

l  gnocchi-statsd

(udp数据接收,后续会支持tcp数据接收,当前没有通过udp发送数据,这里应该是空跑)

StatsD是用来收集数据的,收集完数据就发送到其他服务器进行处理,这里是存放到tmp目录下。

l  gnocchi-metricd

MetricProcessor核心服务,处理数据的聚合,清理等动作。

  1. 4.   数据存储

4.1   简单介绍

将数据裂化成两部分(index和storage):

index driver:存资源索引值(resource)。

storage driver:存时间时间序列上的数据值(metric)。

支持多种存储方式:

n  File

n  Swift

n  Ceph (preferred)

n  InfluxDB (experimental)

前三种,通过gnocchi的自己写的一个叫Carbonara(作者就是个吃货有没有)的类库支持

InfluxDB 本身就是一个时间序列的数据库,但是当前对接还处于试验阶段,bug较多

4.2   Data split

在Gnocchi 1.3之前,一个metric的数据是存储到一个对应的文件中(每一个聚合方法对应一个文件)。其实,就是从聚合方法的维度去划分数据。在2.0版本之后,在此基础上,通过配置point的大小,来划分块。增加了CRUD的并发。

4.3   Data compression

the suite of timestamps timestamps = [41230, 41235, 41240, 41250, 41255] is encoded into timestamps = [41230, 1, 1, 2, 1], interval = 5

To actually compress the values, I tried two

different algorithms:LZ4 XOR

4.4   Gnocchi aggregation mechanism

4.5   总结

1.   对存储的数据进行了分类处理。

2.   对数据进行压缩存储

3.   只存储处理后的聚合数据,原始数据删除。

4.   使用分布式存储,易于存储的扩展。

  1. 5.   性能提升

5.1   测试环境

硬件:2 台(2×Intel Xeon E5-2609 v3 (12 cores in total) 32 GB of RAM)

一个做gnocchi 一个client

软件:RHEL 7 disable OpenStack components

PostsgreSQL indexer

file storage driver

The OpenStack Keystone authentication middleware was not enabled in this setup

5.2   Metric CRUD operations

5.3   Sending and getting measures

5.4   Comparison with Ceilometer

Most Gnocchi operations are O(log R) where R is the number of metrics or resources, whereas most Ceilometer operations are O(log S) where S is the number of samples (measures). Since is R millions of time smaller than S, Gnocchi gets to be much faster.

三、  Aodh

1. Aodh把告警和事件分开处理,使告警的检测和响应更加及时。

l  An API server (aodh-api). 为告警数据的存储和访问提供借口。

l  An alarm evaluator (aodh-evaluator). 根据统计的数据,来评估是否需要触发告警.

l  A notification listener (aodh-listener). 监听事件,触发事件相关的告警.

l  An alarm notifier (aodh-notifier). 根据配置的告警方式,发出告警.

  1. Ceilometer-alarm
  1. 总结

Ceilometer-alarm有以下问题,而aodh正是解决了以下三个问题。

1)  目前有一个比较纠结的问题就是alarm和ceilometer的关系,虽然alarm的代码写在ceilometer的代码树中,其实,他们两个并没有紧密的关系,alarm是ceilometer api的消费者,把他们两个分开也是完全可以的。

2)  目前alarm是ceilometer api的消费者,每个alarm被检查的时间间隔是60s,当alarm数量很多的时候,会给api造成比较大的压力,所以有人提议让alarm直接访问数据库。

3)  目前,有的使用ceilometer作为billing服务,但是alarm和billing使用的同一个数据库,这无形中有了一些安全隐患,而且alarm和billing这两个对数据的时效性要求还不一样,alarm可能只需要最近一段时间的数据,而billing则要求数据保持较长的时间,所以这导致db-ttl也比较难做。

四、  多进程pdb调试

1.在代码中,添加下面的类:

import sys

import pdb

class ForkedPdb(pdb.Pdb):

"""A Pdb subclass that may be used

from a forked multiprocessing child

"""

def interaction(self, *args, **kwargs):

_stdin = sys.stdin

try:

sys.stdin = file('/dev/stdin')

pdb.Pdb.interaction(self, *args, **kwargs)

finally:

sys.stdin = _stdin

2. 在需要打断点的地方,添加ForkedPdb().set_trace()即可。

参考:

http://www.lygrzs.com/?p=797

https://www.ustack.com/blog/telemetry/

http://www.lygrzs.com/?p=826

https://wiki.openstack.org/wiki/Telemetry

Ceilometer + Aodh + Gnocchi 介绍的更多相关文章

  1. Ceilometer和Gnocchi的监控架构解析

    1  采集模块整体架构 采集模块主要分为三大块. Ceilometer:用于采集数据并处理数据后发送到gnocchi服务去存储 Gnocchi:用于将采集数据进行计算合并和存储并提供rest api方 ...

  2. OpenStack/Gnocchi简介——时间序列数据聚合操作提前计算并存储起来,先算后取的理念

    先看下 http://www.cnblogs.com/bonelee/p/6236962.html 这里对于环形数据库的介绍,便于理解归档这个操作! 转自:http://blog.sina.com.c ...

  3. OpenStack计费项目Cloudkitty系列详解(一)

    云计算是一种按需付费的服务模式,虽然OpenStack前期在计量方面走了些“弯路”,但现在的ceilometer.gnocchi.aodh.panko项目的稳步并进算是让其峰回路转.然而,目前来看Op ...

  4. Openstack实践(1)部署使用实例及neutron网络

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 如何快速部署使用openstack,使用kolla吧,o ...

  5. OpenStack与ZStack深度对比:架构、部署、计算、运维监控等

    摘要 OpenStack从2010年开源至今,已经走过9个年头,其正在进入主流企业市场,但该项目依然面临较难部署和管理的老问题.有一点是毫无疑问的,那就是OpenStack保持着高速增长的态势,超过5 ...

  6. OpenStack的基础原理

    OpenStack的基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其 ...

  7. Openstack逻辑架构

    一. Keystone  -身份认证管理 提供了认证和授权的服务,openstack不同的组件通信都要经过授权,确保正确的用户和服务是经过认证的.并且它集成了大量的认证机制,比如用户名/密码和令牌/基 ...

  8. openstack发展历程及其架构简介

    1.0 Openstack介绍 OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也 ...

  9. 使用packstack安装pike版本的openstack

    最近由于工作需要,需要调研安装pike版本的gnocchi.由于ceilometer与gnocchi版本的强相关性,所以需要部署一个同一版本的openstack环境,在同事的推荐下使用了packsta ...

随机推荐

  1. git无法添加文件夹

    如标题所示,在webapp下面创建了个空的pages文件夹,想着先提交一下,无奈怎么都提交不了,后来试着在文件夹下面随便添加了个文件就可以提交了, 也不知道是什么原因.

  2. 解决XMind运行卡顿

    问题 XMind是一款很好用的脑图工具,它是基于eclipse开发的,而且基础功能是免费的.最近我安装了XMind 8 Pro,但是发现在Mac上运行有卡顿. 解决方式 解决这个问题的思路也很简单,软 ...

  3. 关于非现场审计软件的一些介绍(ACL、IEDA、Teammate)

    http://group.vsharing.com/Article.aspx?aid=661512 IDEA是由caseware开发的数据分析软件.caseware的网址如下:http://www.c ...

  4. 装修工人如何在网上"找活"

    http://blog.sina.com.cn/s/blog_555e8fe80102wwsz.html ps:其实码农也是一种装修工. 在这个互联网时代,各个行业都在利用网络达到自己的商业目的,作为 ...

  5. Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

    Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具) 最近因为项目关系,收朋友之托,想制作秀场网站,但是因为之前一直没有涉及到这 ...

  6. SQLServer Merger Using语法使用和注意点

    SQL多表关联数据更新,如果数据量比较少的情况下,用Update也是可以的:脚本如下: UPDATE NA_AgentGrpOrder SET AttrServSIItem=b.AttrValue F ...

  7. python3 分布式爬虫

    背景 部门(东方IC.图虫)业务驱动,需要搜集大量图片资源,做数据分析,以及正版图片维权.前期主要用node做爬虫(业务比较简单,对node比较熟悉).随着业务需求的变化,大规模爬虫遇到各种问题.py ...

  8. c# 事件和EventManager

    事件 基本用法 关键字event,声明格式为: public event <委托类型> <事件对象> 事件的处理方法:适用于该委托的方法 数据的触发: 绑定同类事件,绑定时,可 ...

  9. JSP转译成Servlet详细过程【转】

    JSP转译成Servlet详细过程 JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术.Servlet是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTM ...

  10. 腾讯云Unubtu 16.04 (gunicorn+supervisor+ngnix+mongodb)部署Flask应用

    1.申请腾讯云服务 我申请了免费使用的云服务器 ,选择安装的Linux版本是ubuntu16.04.1 LTSx86_64.我个人PC安装使用的也是这个版本,比较熟悉些. 详细参考帮助文档. 2.登录 ...