watcher
https://wiki.openstack.org/wiki/Watcher
Watcher为OS提供资源优化。主要是通过虚拟机迁移来提高整个数据中心的运营效率,降低TCO。
功能特点:
- 通过虚拟机迁移来提高整个数据中心的运营效率和各种优化
- advise mode (manual) or active mode (automatic),两种执行模式
- 通过plugin来扩展
架构图:

https://wiki.openstack.org/wiki/WatcherArchitecture
其中:
- Complex Event Processing (CEP) 对event分析和做出相应的反应,数据会写到Time Series database,
如果该event会影响到优化的结果,输入到Decision Engine。
- Time Series database存储数据中心/集群的各种state, metrics, events, ...,以便Decision Engine随时查询。
- Watcher Actions Applier执行CEP的action,需要与Watcher DB连接来获取ation的描述,并把action的状态写入DB
- REST API 提供Watcher中资源的操作,包括:Audit Templates Audits ActionPlans Actions,下面有说明例子。
- Watcher Database保存以上Watcher中资源。
- Watcher Decision Engine复杂根据优化目标来指定具体的优化措施。
影响最优操作的因素有:
- optimization goals
- deadline
- aggressiveness level
- Watcher Logger 把从Watcher Message/Notification Bus 来的event转送到CEP
如何使用
https://factory.b-com.com/www/watcher/doc/watcher/deploy/user-guide.html
1, 创建 audit template来定义优化目标
$ watcher audit-template-create my_first_audit SERVERS_CONSOLIDATION
2, 创建audit来请求优化
$ watcher audit-create -a <your_audit_template_uuid>
3 等待audit产生action计划,list action:
$ watcher action-plan-list --audit <the_audit_uuid>
4 每个action plan的具体action:
watcher action-list --action-plan <the_action_plan_uuid>
5, 执行action plan:
$ watcher action-plan-start <the_action_plan_uuid>
6, 查看action执行情况:
$ watcher action-list
RESTAPI资源
https://factory.b-com.com/www/watcher/doc/watcher/webapi/v1.html
Audit Templates
{
"created_at": "2015-11-04T10:06:04.328837",
"deleted_at": null,
"description": "Description of my audit template",
"extra": {
"automatic": true
},
"goal": "SERVERS_CONSOLIDATION",
"host_aggregate": ,
"links": ..."name": "My Audit Template",
"updated_at": "2015-11-04T10:06:04.328840",
"uuid": "27e3153e-d5bf-4b7e-b517-fb518e17f34c"
}
Audits
{
"audit_template_name": null,
"audit_template_uuid": "7ae81bb3-dec3-4289-8d6c-da80bd8001ae",
"created_at": "2015-11-04T10:06:04.465252",
"deadline": null,
"deleted_at": null,
"links": ..."state": "PENDING",
"type": "ONESHOT",
"updated_at": "2015-11-04T10:06:04.465255",
"uuid": "27e3153e-d5bf-4b7e-b517-fb518e17f34c"
}
ActionPlans
{
"audit_uuid": "abcee106-14d3-4515-b744-5a26885cf6f6",
"created_at": "2015-11-04T10:06:04.599433",
"deleted_at": null,
"first_action_uuid": "57eaf9ab-5aaa-4f7e-bdf7-9a140ac7a720",
"links": ..."state": "ONGOING",
"updated_at": "2015-11-04T10:06:04.599439",
"uuid": "9ef4d84c-41e8-4418-9220-ce55be0436af"
}
Actions
{
"actions": [
{
"action_plan_uuid": "7ae81bb3-dec3-4289-8d6c-da80bd8001ae",
"links": ..."next_uuid": "7ae81bb3-dec3-4289-8d6c-da80bd8001ae",
"state": "PENDING",
"uuid": "27e3153e-d5bf-4b7e-b517-fb518e17f34c"
}
]
}
watcher的更多相关文章
- node实现watcher的困境
@(node,watcher) watcher,在如今的前端领域已经数见不鲜了.目前流行的gulp流程工具提供了watcher的选项,是我们在开发过程中不需要手动进行触发构建流程,转而根据文件(目录) ...
- ZooKeerper学习之Watcher
ZooKeeper为我们提供了用于监视结点变化的Watcher机方法制: 1.可以注册Watcher的方法:getData().exists().getChildren().我们可以通过查看ZooKe ...
- ZooKeeper个人笔记客户端watcher和AsycCallback回调
每一个Watcher具有如下属性: 1.KeeperState 2.EventType 3.path 4.process(WatchedEvent evnet)回掉方法 Watcher干嘛的?用户监听 ...
- 支持断线重连、永久watcher、递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端
在公司内部的微服务架构中有使用到了"ZooKeeper",虽然官方有提供了.NET的SDK,但易用性非常的差,且搜遍github.nuget,没有发现一个可以跨平台且易用的组件,所 ...
- zookeeper Watcher API 说明
Watcher 在 ZooKeeper 是一个核心功能,Watcher 可以监控目录节点的数据变化以及子目录的变化,一旦这些状态发生变化,服务器就会通知所有设置在这个目录节点上的 Watcher,从而 ...
- zookeeper中Watcher和Notifications
问题导读:1.zookeeper观察者什么时候调用?2.传统远程轮询服务存在什么问题?3.zk中回调服务的机制是什么?4.zk中watcher为什么不永久注册?5.什么是znode? 在阅读之前首先明 ...
- XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识
一.标题:XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识 automated XSS testing assistant 二.引言 ...
- phpstorm-file watcher
在项目中使用了sass,将scss编译成css的时候,每次都需要compass watch netbeans产品带有file watcher功能 三大类 1,less,scss,sass into c ...
- 轻松学习Ionic (三) 安装sass并在webstorm中为scss添加watcher
1. 安装Ruby 最新为 2.1.5版本,不放心的话安装 Ruby 1.9.3-p551 安装过程中注意勾选上第二项!即将Ruby加入到可执行的环境变量中去. 安装结束后在命令行中 ...
- es watcher
https://www.elastic.co/products/watcher https://www.elastic.co/blog/watcher-beta-goes-public-you-kno ...
随机推荐
- 将方法定义在prototype上的好处
通常js类定义和使用的是这样的: var Class=function(){}; Class.prototype.sharedFn=function(){}; var instanceA=new Cl ...
- python系列十:python3函数
#!/usr/bin/python #-*-coding:gbk-*- '''函数的简单规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必 ...
- PHPExcel实现上传excel文件导入数据库
项目中需要批量导入数据,感觉这个需求以后也会经常用,必须总结分享下: 引入jquery的第三方表单插件: <scripttype="text/javascript&qu ...
- New Moto X 2014 全版本RSD&Fastboot刷官方底包教程
本来我是不想写教程的,因为这样的教程实在是太多了,基本上大家也都会了,为什么还要多次一举,发来发去的呢?实在没什么意义!但是我觉得吧,别人的教程写的都太过简单,太过明了了,有时候我们很难理解,这到底是 ...
- cn_office_professional_plus_2010_x86_515 安装激活方法解决方案64bit
一:首先选择 Office 2010 Toolkit.exe 右键 选择属性 –兼容性 然后 选择以管理员身份运行此程序 然后 双击 Office 2010 Toolkit.exe 需要安装的工具及 ...
- LeetCode:数据库技术【180-185】
LeetCode:数据库技术[180-185] 180.连续出现的数字 题目描述 编写一个 SQL 查询,查找所有至少连续出现三次的数字. +----+-----+ | Id | Num | +--- ...
- css系列(6)css的运用(二)
本节继续介绍css在html页面重的应用实例. (1)div的border-style属性: none: 无样式 hidden: 除了同表格的边框发生冲突的时候,其它同none dot ...
- ES6 随记(2)-- 解构赋值
上一章请见: 1. ES6 随记(1)-- let 与 const 3. 解构赋值 a. 数组的解构赋值 let [a1, b1, c1] = [1, 2, 3]; console.log(a1, b ...
- JS 操作复制剪切粘贴
测试了很多次之后,虽然有点细碎的突破,但还是想说,麻辣隔壁... 众所周知使用 oncut/oncopy/onpaste 监听剪切板,采用 window.clipboardData 并不是适用于大多浏 ...
- Centos系统 上下文切换的检查思路
1.什么是上下文切换(Context Switch)? 上下文切换,有时也称做进程切换或任务切换,是指CPU从一个进程或线程切换到另一个进程或线程. 操作系统可以同时运行多个进程, 然而一颗CPU同时 ...