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插件,并通 ...
随机推荐
- 【转】通过SQL Server 2008数据库复制实现数据库同步备份
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数 ...
- influxDB---数据库操作SQL
查询 查询不能只查tag标签,一定要加上fields. 如:select val,"班组" FROM "测试表" WHERE dev = 'cs123' and ...
- python系列十一:python3数据结构
#!/usr/bin/python #Python3 数据结构'''Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能.''' '''将 ...
- Python3.6全栈开发实例[006]
6.检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者. dic = {"k1": "v1v1", " ...
- git读取配置文件的顺序
a.查找系统配置文件: /etc/gitconfig 文件,该文件含有系统里每位用户及他们所拥有的仓库的配置值 b.查找用户配置文件: ~/.gitconfig 文件 或者 ~/.config/ ...
- 【WEB HTTP】集成点:网关、隧道及中继
网关:网关可以作为某种翻译器使用,它抽象出了一种能够到达资源的方法.网关是资源与应用程序之间的粘合剂. 在不同http版本之间进行转换的Web代理和网关一样,他们会执行复杂的逻辑,以便在各个端点之间进 ...
- 设计模式之单例模式--instance
<?php header('Content-Type:text/html;charest=utf-8'); /** * 设计模式之单例模式 * $_instance必须声明为静态的私有变量 * ...
- javascript;json数据,js转换日期方法。
接收json数据,日期格式为:"\/Date(1414078309687)\/" var value = "/Date(1414078309687)/"; va ...
- 基于R语言的数据分析和挖掘方法总结——均值检验
2.1 单组样本均值t检验(One-sample t-test) 2.1.1 方法简介 t检验,又称学生t(student t)检验,是由英国统计学家戈斯特(William Sealy Gosset, ...
- C语言math.h库函数中atan与atan2的区别
源: C语言math.h库函数中atan与atan2的区别 C语言中的atan和atan2