架构图

Winchester 来蒸馏notification,变成event,再利用Streams 转换成新的event或者notification。

类似于Ceilometer event处理,由event handler把notification转换成Ceilometer event并存储起来。

最后Notabene 可以把Winchester出来的notification重新发布到message bus上做进一步的处理,这个过程可以反复。

这个对应到Ceilometer上就是把event transformer出来的event转换成notification在重新发布到message bus上,可以进一步,比如把它处理成meter,

Ceilometer正在实现这个功能,BP在这儿:event to sample publisher https://review.openstack.org/#/c/223926/

Yagi配置:

[global]
verbose = False
debug = True
update_timer = 10 [event_worker]
event_driver = yagi.broker.rabbit.Broker [rabbit_broker]
host = localhost
user = guest
password = guest
port = 5672
vhost = /
poll_delay = 0.5 [consumers]
queues = monitor.info [consumer:monitor.info]
apps = winchester.yagi_handler.WinchesterHandler, yagi.handler.shoebox_handler.ShoeboxHandler
exchange = monitor
exchange_type = topic
routing_key = monitor.info
durable = True
max_messages = 100

从Notifications 到 Events的提取,由winchester.yagi_handler:WinchesterHandler来做这部分工作。

把Notifications中有用的field提取为event的 Traits。在配置文件中定义。

例子:

- event_type: compute.instance.*
traits:
tenant_id:
fields:
- payload.tenant_id
- _context_project_id
user_id:
fields: payload.user_id
request_id:
fields: _context_request_id
instance_id:
fields:
- payload.instance_uuid
- payload.instance_id
- exception.kwargs.uuid
- instance.uuid

这点和ceilometer很类似,ceilometer的配置文件event_definitions中定义了每个event需要提前哪些traits。

接下来就是在streams中处理event,streams就是事件分发到的bucket(Streams are buckets that collect events)。

采用类似于ceilometer中的event pipeline机制。把event分发到pipeline,pipeline中最后部分是handler,

Winchester 配置文件:

---
database:
url: mysql://winchester:testpasswd@localhost/winchester distiller_config: event_definitions.yaml
trigger_definitions: triggers.yaml
pipeline_config: pipelines.yaml pipeline_handlers:
logger: winchester.pipeline_handler:LoggingHandler
usage: winchester.pipeline_handler:UsageHandler
notabene: winchester.pipeline_handler:NotabeneHandler

其中:

trigger_definitions: triggers.yaml 中决定

  • into which streams to place incoming events
  • which events to accept into a stream
  • when a stream is ready for processing
  • when a stream expires
  • how to process ready streams
  • how to process expired streams
- name: my_trigger
distinguished_by:
- request_id
expiration: "$last + 1h"
fire_pipeline: "my_fire_pipeline"
expire_pipeline: "my_expire_pipeline"
match_criteria:
- event_type:
- compute.instance.*
fire_criteria:
- event_type: compute.instance.*.end

上面 distinguished_by:request_id,也就是不同的request发到不同的stream bucket中。

match_criteria定义这个pipelinez需要处理的事件,类似ceilometer event_pipeline,yaml中的source - events配置。

fire_criteria: 定义了何时触发stream bucket中的event的处理。比如最后一次收到事件之后的2小时,或者基于特定事件如收到compute.instance.*.end。

最后如何处理stream bucket中的event定义在fire_pipeline: "my_fire_pipeline"中。可以有多个pipeline handlers, 类似于ceilometer event_pipeline,yaml中

的sinks中的publisher。

fire_pipeline的配置:

---
my_fire_pipeline:
- logger
- usage
- name: notabene
params:
host: localhost
user: guest
password: guest
exchange_type: topic
queue_name: monitor.info
env_keys:
- usage_notifications my_expire_pipeline:
- logger
- usage

再来看看pipeline中的handler:

UsageHandler is a pipeline handler for determining the daily usage of every instance with an OpenStack Nova deployment

NotabeneHandler will take any new notifications (not events)publish them to the RabbitMQ exchange specified.

总结与Ceilometer的区别:

stacktach只用来处理notification

ceilometer可以处理notification和meter还有alarm

都可以把notification转换成event来保存和处理,stacktach的处理更丰富和到位

ceilometer主要还是生成数据和meter

stacktach中的pipeline不能单个或者2个event做transformer。

stacktach有处理触发机制,一次对bucket event处理,效率更高。

https://github.com/openstack/stacktach

http://stacktach.readthedocs.org/

http://stacktach.com/about.html

https://www.openstack.org/summit/openstack-summit-hong-kong-2013/session-videos/presentation/stacktach-ceilometer-integration

stacktach和ceilometer的更多相关文章

  1. 探索 OpenStack 之(16):计量模块 Ceilometer 介绍及优化

    0. 背景 0.1 为什么要有 Ceilometer? 通常云,特别是公有云在计费方面有三个层次: 计量 (Metering): 收集资源的使用数据,其数据信息主要包括:使用对象(what), 使用者 ...

  2. 探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制

    本文将阐述 Ceilometer 中的数据收集机制.Ceilometer 使用三种机制来收集数据: Notifications:Ceilometer 接收 OpenStack 其它服务发出的 noti ...

  3. 为自己的系统定制openstack ceilometer

    一.目的 最近研究了一下ceilometer,目的做一个监控系统,对系统中发生的事件进行处理.ceilometer对openstack各个组件信息的收集方式主要由 推 和  拉 两种. “推”: 就是 ...

  4. Openstack-Mitaka Ceilometer 中使用 SNMP 监控真实物理机

    Ceilometer 是 Openstack 的监控管理计费模块,我所用的版本为 Mitaka 版本.在 Ceilometer 中,可以使用 SNMP 监控服务器的实时硬件资源信息. 系统环境为 Ce ...

  5. Openstack-Mitaka Ceilometer 部署心得

    Openstack-Mitaka Ceilometer 部署心得 标签 : Openstack Ceilometer 是 Openstack 的监控管理计费模块,我所用的版本为 Mitaka 版本.C ...

  6. Openstack Ceilometer监控项扩展

    Openstack ceilometer主要用于监控虚拟机.服务(glance.image.network等)和事件.虚拟机的监控项主要包括CPU.磁盘.网络.instance.本文在现有监控项的基础 ...

  7. openStack ceilometer API

    1.概述 Ceilometer是OpenStack中的一个子项目,它像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑.Ceilomet ...

  8. Ceilometer + Aodh + Gnocchi 介绍

    一.  Ceilometer 1.    概述 Openstack ceilometer主要用于监控虚拟机.服务(glance.image.network等)和事件.虚拟机的监控项主要包括CPU.磁盘 ...

  9. ceilometer主要组件分析

    一.Agent 主要有compute agent 和central agent,还有一些其他的agent这里暂时不分析. agent初始化时会动态加载给定namespace的pollster插件,并通 ...

随机推荐

  1. js判断选择的时间是否大于今天

    获取的时间格式为  2012-5-28var thetime = document.getElementById("clearDate").value;var   d=new   ...

  2. python多线程/多进程

    thread和threading的区别 threading相对与thread是更高级别的线程管理模块 thread和threading模块中的一些属性会有冲突 thread模块拥有的同步原因实际上只有 ...

  3. echarts之series,markLine、markPoint

    一.标记线和标志点 markLine 标记线 标记线的添加,如最大值.最小值.平均值的标记线 symbol 标记的图形. data->type 特殊的标注类型,用于标注最大值最小值等. 可选: ...

  4. Go语言的一些问题

    1.go 运行错误expected 'package', found 'EOF'解决? 只要将文件保存一下,再运行就ok了. 2.问题如下: D:\goprojects>go buildcan' ...

  5. Machine Learning - week 2 - 编程练习

      3. % J = COMPUTECOST(X, y, theta) computes the cost of using theta as the % parameter for linear r ...

  6. SSL逐渐演变到TLS

    w https://zh.wikipedia.org/wiki/超文本传输安全协议

  7. xml数据发送请求,读取xml

    # coding:utf-8 import requests url = "http://httpbin.org/post" # python3字符串换行,在右边加个反斜杠 bod ...

  8. 学习pyhton需要做哪些准备工作

    1:知道python个版本是有差异的 2:既然有差异,那么如何在不同项目不同版本的开发环境; ----------------------------------------------------- ...

  9. Django of python 中文文档 及debug tool

    http://python.usyiyi.cn/django/index.html http://www.ziqiangxuetang.com/django/django-views-urls.htm ...

  10. New Moto X 2014 全版本RSD&Fastboot刷官方底包教程

    本来我是不想写教程的,因为这样的教程实在是太多了,基本上大家也都会了,为什么还要多次一举,发来发去的呢?实在没什么意义!但是我觉得吧,别人的教程写的都太过简单,太过明了了,有时候我们很难理解,这到底是 ...