https://wiki.openstack.org/wiki/Watcher

Watcher为OS提供资源优化。主要是通过虚拟机迁移来提高整个数据中心的运营效率,降低TCO。

功能特点:

  1. 通过虚拟机迁移来提高整个数据中心的运营效率和各种优化
  2. advise mode (manual) or active mode (automatic),两种执行模式
  3. 通过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复杂根据优化目标来指定具体的优化措施。

影响最优操作的因素有:

  1. optimization goals
  2. deadline
  3. 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的更多相关文章

  1. node实现watcher的困境

    @(node,watcher) watcher,在如今的前端领域已经数见不鲜了.目前流行的gulp流程工具提供了watcher的选项,是我们在开发过程中不需要手动进行触发构建流程,转而根据文件(目录) ...

  2. ZooKeerper学习之Watcher

    ZooKeeper为我们提供了用于监视结点变化的Watcher机方法制: 1.可以注册Watcher的方法:getData().exists().getChildren().我们可以通过查看ZooKe ...

  3. ZooKeeper个人笔记客户端watcher和AsycCallback回调

    每一个Watcher具有如下属性: 1.KeeperState 2.EventType 3.path 4.process(WatchedEvent evnet)回掉方法 Watcher干嘛的?用户监听 ...

  4. 支持断线重连、永久watcher、递归操作并且能跨平台(.NET Core)的ZooKeeper异步客户端

    在公司内部的微服务架构中有使用到了"ZooKeeper",虽然官方有提供了.NET的SDK,但易用性非常的差,且搜遍github.nuget,没有发现一个可以跨平台且易用的组件,所 ...

  5. zookeeper Watcher API 说明

    Watcher 在 ZooKeeper 是一个核心功能,Watcher 可以监控目录节点的数据变化以及子目录的变化,一旦这些状态发生变化,服务器就会通知所有设置在这个目录节点上的 Watcher,从而 ...

  6. zookeeper中Watcher和Notifications

    问题导读:1.zookeeper观察者什么时候调用?2.传统远程轮询服务存在什么问题?3.zk中回调服务的机制是什么?4.zk中watcher为什么不永久注册?5.什么是znode? 在阅读之前首先明 ...

  7. XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识

    一.标题:XSS 自动化检测 Fiddler Watcher & x5s  & ccXSScan 初识     automated XSS testing assistant 二.引言 ...

  8. phpstorm-file watcher

    在项目中使用了sass,将scss编译成css的时候,每次都需要compass watch netbeans产品带有file watcher功能 三大类 1,less,scss,sass into c ...

  9. 轻松学习Ionic (三) 安装sass并在webstorm中为scss添加watcher

    1. 安装Ruby 最新为 2.1.5版本,不放心的话安装 Ruby 1.9.3-p551    安装过程中注意勾选上第二项!即将Ruby加入到可执行的环境变量中去.       安装结束后在命令行中 ...

  10. es watcher

    https://www.elastic.co/products/watcher https://www.elastic.co/blog/watcher-beta-goes-public-you-kno ...

随机推荐

  1. go build说明

    go build命令用于编译我们指定的源码文件或代码包以及它们的依赖包. 例如,如果我们在执行go build命令时不后跟任何代码包,那么命令将试图编译当前目录所对应的代码包.例如,我们想编译goc2 ...

  2. 巨蟒python全栈开发django10:ajax&&登录认证

    通过题目进行知识点回顾: 聚合查询 From django.db.models import Avg,Min,Max,F,Q,Count,Sum #查询书籍的平均值 Ret= Models.Book. ...

  3. mysql执行计划图

  4. rar 7z文件打包

    把D:\file目录下的所有东西打包为file.rar放到D:\目录下, Rar.exe是放在c盘根目录下 >>C:\Rar.exe a -k -r -s -m1 D:\file.rar ...

  5. 3.1 使用STC89C52控制MC20拨打电话

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  6. pandas(一)操作Series和DataFrame的基本功能

    reindex:重新索引 pandas对象有一个重要的方法reindex,作用:创建一个适应新索引的新对象 以Series为例 >>> series_obj = Series([4. ...

  7. 【转】Python爬虫(5)_性能相关

    爬虫性能相关 一 背景知识 爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,采用串行的方式执行,只能等待爬取一个结束后才能继续下一个,效率会非常低. 需要强调的是: ...

  8. Python基础(11)_python模块之time模块、rando模块、hashlib、os模块

    一.模块 1.什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀 模块的本质:模块的本质是一个py文件 2.模块分为三类:1)内置模块:2)第三方模块: ...

  9. 如何安装/更新ruby,安装cocoapods,为开发做好准备!(2016年12月07日更新内容)

    一:首先来说一下如何安装/更新ruby: 一般情况下,即使是新买的Mac电脑也会安装有ruby,可以在终端中键入一下命令查看ruby版本 ruby -v 正常情况下下面会打印出ruby的版本信息,如果 ...

  10. 每天一个Linux命令(42)watch命令

        watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示.     (1)用法:     用法:  watch  [参数]  [命令]       (2)功能:     功能:  可 ...