stacktach和ceilometer
架构图

- Yagi 从rabbitmq拿到 notifications并传递给Yagi Handlers 链。
- Yagi Handlers 包括:
- Shoebox for long-term archiving.
- Atom-Hopper for pub-sub ATOM feeds.
- Stack-distiller/Winchester for StackTach.v3 stream processing.
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
stacktach和ceilometer的更多相关文章
- 探索 OpenStack 之(16):计量模块 Ceilometer 介绍及优化
0. 背景 0.1 为什么要有 Ceilometer? 通常云,特别是公有云在计费方面有三个层次: 计量 (Metering): 收集资源的使用数据,其数据信息主要包括:使用对象(what), 使用者 ...
- 探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制
本文将阐述 Ceilometer 中的数据收集机制.Ceilometer 使用三种机制来收集数据: Notifications:Ceilometer 接收 OpenStack 其它服务发出的 noti ...
- 为自己的系统定制openstack ceilometer
一.目的 最近研究了一下ceilometer,目的做一个监控系统,对系统中发生的事件进行处理.ceilometer对openstack各个组件信息的收集方式主要由 推 和 拉 两种. “推”: 就是 ...
- Openstack-Mitaka Ceilometer 中使用 SNMP 监控真实物理机
Ceilometer 是 Openstack 的监控管理计费模块,我所用的版本为 Mitaka 版本.在 Ceilometer 中,可以使用 SNMP 监控服务器的实时硬件资源信息. 系统环境为 Ce ...
- Openstack-Mitaka Ceilometer 部署心得
Openstack-Mitaka Ceilometer 部署心得 标签 : Openstack Ceilometer 是 Openstack 的监控管理计费模块,我所用的版本为 Mitaka 版本.C ...
- Openstack Ceilometer监控项扩展
Openstack ceilometer主要用于监控虚拟机.服务(glance.image.network等)和事件.虚拟机的监控项主要包括CPU.磁盘.网络.instance.本文在现有监控项的基础 ...
- openStack ceilometer API
1.概述 Ceilometer是OpenStack中的一个子项目,它像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑.Ceilomet ...
- Ceilometer + Aodh + Gnocchi 介绍
一. Ceilometer 1. 概述 Openstack ceilometer主要用于监控虚拟机.服务(glance.image.network等)和事件.虚拟机的监控项主要包括CPU.磁盘 ...
- ceilometer主要组件分析
一.Agent 主要有compute agent 和central agent,还有一些其他的agent这里暂时不分析. agent初始化时会动态加载给定namespace的pollster插件,并通 ...
随机推荐
- [转载]使用iscroll.js-tab左右滑动导航--tab点击无效果
转载自:http://blog.csdn.net/zuoyiran520081/article/details/77369421 最近在页面中用iscroll.js,但是但是有跳转,用a标签的hre ...
- 我的Android进阶之旅------>Android使用百度地图时,关于android.permission.BAIDU_LOCATION_SERVICE的声明警告。
[重要提醒] 定位SDKv3.1版本之后,以下权限已不需要,请取消声明,否则将由于Android 5.0多帐户系统加强权限管理而导致应用安装失败. <uses-permission androi ...
- 使用 adb logcat 显示 Android 日志
本文为转载. 地址:http://www.hanshuliang.com/?post=32 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. ...
- Linux中的流程控制语句
if语句 if [ 条件判断式 ] then 程序elif [ 条件判断式 ] then 程序else 程序fi 注意: a.使用fi结尾 b.条件判断式和中括号之间需要有空格 [root@local ...
- Spring学习笔记4—流程(Spring Web Flow)
Spring Web Flow是Spring框架的子项目,作用是让程序按规定流程运行. 1 安装配置Spring Web Flow 虽然Spring Web Flow是Spring框架的子项目,但它并 ...
- gearman管理
通常,Gearman被用来分发任务,以便实现异步操作.下面捋捋如何管理Gearman. 说明:请自行安装好Gearman和PHP PECL Gearman. (我之前安装的gearman php的c语 ...
- bootstrap-select 使用笔记 设置选中值及手动刷新
直接笔记: 1.页面刚加载完填充select选项数据时,需要手动刷新一下组件,否则没有选项值.(组件初始化时,li 与 option 分离的,需要刷新一下(据说)) $.post('/cpms/tod ...
- docker学习笔记1-- 用Toolbox安装Docker--介绍Docker Machine
使用的是Docker Toolbox,非Docker for Windows 一.docker的认识与安装(windows安装) http://blog.csdn.net/tina_ttl/artic ...
- iOS 设置 延迟执行 与 取消延迟执行 方法 以及对 run loop 初步认识
之前开发过程中经常会有需求会使用 NSObject中的"performSelector:withObject:afterDelay:"做方法延迟执行的处理, 但是 还没有什么地方需 ...
- 【LeetCode】【动态规划】Edit Distance
描述 Given two words word1 and word2, find the minimum number of operations required to convert word1 ...