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插件,并通 ...
随机推荐
- C#中enum的总结(转载)
1.关于enum的定义 enum Fabric { Cotton = 1, Silk = 2, Wool = 4, Rayon = 8, Other = 128 } 2.符号名和常数值的互相转换 ...
- 路径规划 Adjacency matrix 传球问题
建模 问题是什么 知道了问题是什么答案就ok了 重复考虑 与 重复计算 程序可以重复考虑 但往目标篮子中放入时,放不放把握好就ok了. 集合 交集 并集 w 路径规划 字符串处理 42423 424 ...
- Date、Calendar、DateFormat、SimpleDateFormat、Timer、TimerTask类
类 Date 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值. 它也允许格式化和解析日期字符串.不过,这些函数的 API 不易于实现国际化.从 ...
- 前端基础-html(1)
写在前面: 前端 后端 C(client) S(server) B(browser) S(server) 以用户为出发点 一.web标准 1)web ...
- 提交cookie登录
# coding:utf-8import requests # 先打开登录首页,获取部分cookieurl = "https://passport.cnblogs.com/user/sign ...
- vue-cli 搭建项目
1.cnpm install -g vue-cli 2.vue -V(注意大写,查vue版本) 3.vue init webpack vue1(创建vue1目录) 4.cd vue1(定位到目录中) ...
- split命令
语法:split [OPTION]... [INPUT [PREFIX]]常用参数说明: -a, --suffix-length=N generate suffixes of l ...
- LeetCode-11-6
1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to a ...
- mysql数据库补充知识3 查询数据库记录信息之多表查询
一 介绍 准备表 company.employeecompany.department 复制代码 #建表 create table department( id int, name varchar(2 ...
- Ubuntu 下 java 版本的切换
切换的方法很简单,使用下面的两个命令即可: update-alternatives --config java update-alternatives --config javac eg: root@ ...