欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~

这篇文章由巴拉克·梅里莫维奇撰写。

总结我自己有关Openstack的各种骚操作先告一段落。这一次我想谈谈有关监控云服务的使用情况。

我个人使用IaaS云比较多。有很多laas资源在手中。有了这么多资源,这么多项目,偶尔会有一些失误。开发人员或者一些自动化运维工具可能会忘记或遗漏掉本该关闭的虚拟主机。而且在云端,如果你忘记了一些东西,你就付出代价(金钱上的)。通常,虚拟主机不管你是否真的在做一些有用的事情,只要在运行就一直在计费。而且在你不知情的情况下,账单就会蜂拥而至,账户管理中心的人员就出现在你的面前。

所以我需要一些方法来监控我的跨平台和账户的云服务。我花了一段时间在网上寻找一个好的云监控解决方案,可以让我快速了解当前的云使用情况。顺便说一下,我喜欢看仪表板。能够在一个地方监控到所有相关的东西给我省了一大半力气。

看了一堆云监控相关的项目,我终于发现了mist.io,它具有我所需要的功能,剩下的就是将其插入到我现有的仪表板系统中。

所以我们先看看这些项目。

Mist.io

Mist.io是一个很酷的开源项目,可以监视多个云中的虚拟主机的使用情况。目前支持的云服务提供商非常多(请参阅此处的最新列表,目前包括:公有云服务器、裸机服务器, Docker容器和KVM管理程序。

还有另外一个mist.io网站,提供了一些额外的优质插件。我给我的云服务使用了这个项目,但你始终可以在本地安装开源版本。Mist.io还提供了一个Python SDK,使其成为一个非常容易编写脚本的系统 - 过一会我将使用客户端SDK。

Mist.io包含一个用于当前云服务使用情况的控制台,它本身非常有用:

但是对于我的项目,我还需要维护我的使用历史和统计数据。

Quickbuild

我们用于Cloudify 的持续集成系统(CI)是利用Quickbuild编译出来的。我们已经使用了它很长一段时间,它已经是一个十分稳定的系统。Quickbuild也有一个灵活的仪表板系统,我可以插入我自己的自定义数据源。

这篇文章讲了很多有关Quickbuild的细节,但对于任何CI /自动化系统来说,这些应该是相同的。

胶水(让Quickbuild和mist.io一同协作的方法)

总体思路是在Quickbuild中定义一个配置,它将轮询mist.io的API来运行虚拟机,收集历史数据并在Quickbuild仪表板上显示最新的结果。

所以让我们开始吧!

Mist.io帐户

首先,你需要在http://mist.io上设置你的帐户。完全免费。

云证书

对于要监视的每个云帐户,请创建一个专用用户,并为其提供查看当前正在运行的实例所需的最低权限。

配置mist.io后端

在mist.io中,后端是可以托管计算实例的可监视目标。所以我用mist.io客户端SDK编写了几个脚本来加快速度。

设置云后端:

from mistclient import MistClient
client = MistClient(email="MY_MIST_EMAIL", password="MY_MIST_PASSWORD") hp_username="YOU_CLOUD_USERNAME"
hp_password="YOU_CLOUD_PASSWORD"
hp_regions = [
["hpcloud:region-a.geo-1", "HP - US West"],
["hpcloud:region-b.geo-1", "HP - US East"]
] # list of HP tenants to monitor
hp_tenants = ["my-first-tenant", "my-other-tenant"] def create_hp_backends():
for region, region_name in hp_regions:
for tenant in hp_tenants:
print "Creating HP backend for tenant %s in region %s" % (tenant, region)
try:
client.add_backend(title= "%s - %s" % (region_name, tenant), provider=region, key=hp_username,secret=hp_password,tenant_name=tenant)
except Exception as e:
print "Failed to create backend: %s" % e.message create_hp_backends()

设置后端:

from mistclient import MistClient
client = MistClient(email="MY_MIST_EMAIL", password="MY_MIST_PASSWORD") ec2_demo_access_key ="YOU_ACCESS_KEY"
ec2_demo_secret_key = "YOU_SECRET_KEY"
ec2_account_name = "YOU_ACCOUNT_NAME" def create_ec2_backends():
# creates backends for all ec2 regions
for provider in client.supported_providers:
if "EC2" in provider["title"]:
title = "%s - %s" % (provider["title"], ec2_account_name)
print "Creating backend: %s" % title
try:
client.add_backend(title = title, provider = provider["provider"],
key=ec2_demo_access_key, secret=ec2_demo_secret_key)
except Exception as e:
print "Failed to create backend: %s" % e.message create_ec2_backends()

参考脚本,调整证书来满足您的需求。

顺便说一句:我希望mist.io会使这一点更容易一点。应该有一种更简单的方法只需给它一个可以监控一切的认证就可以(完成所有的工作)。

创建一个脚本来收集当前的计算实例细节

我使用mist SDK编写了另一个快速脚本来执行此操作。整个项目托管在github上:https://github.com/barakm/mist-monitor

这是有趣的一点:

https://github.com/barakm/mist-monitor/blob/master/mist_monitor/mist_monitor.py

请注意如何利用python生成一个包含计算实例详细信息的XML文件。因为Quickbuild更倾向于XML文件作为输入。

配置Quickbuild

首先我们需要设置Quickbuild来接受脚本生成的XML文件格式。这是一次性操作,但你需要成为Quickbuild服务器的管理员才能执行此操作。

  • 作为Quickbuild管理员,请转到管理 - >插件管理 - >自定义统计报告 - >配置
  • 点击“添加新类别”
  • 为您的类别指定一个名称,例如“运行云实例”和适当的说明
  • 添加两个“指标”(报告中的字段)
    • running - 这一项告诉我们正在运行的云服务实例,通常是最有用的东西。将XPath表达式设置为 - count(// machine [@ state ='running'])。
    • all - 这告诉我们实例的总数,所以它包括关闭或删除的机器。不那么有趣,但可以是有用的。将XPath表达式设置为 - count(// machine)

它应该看起来像这样:

设置循环任务

通过自定义Quickbuild类别,我们可以创建轮询mist.io API的任务。这可以而且应该由普通的Quickbuild用户来完成,而不是管理员。

我已经把配置作为一个要点。您可以从以下地址导入:https://gist.github.com/barakm/3927cc0e8930b259c69e

或者您可以使用以下说明手动创建它:

  • 在构建项目的地方创建一个新的Quickbuild配置。我自己的命名为“CloudNodeMonitor”
  • 在配置定义页面中,选择Settings -> Repositories
  • 点击“+”图标添加一个新的存储库,并选择一个git仓库
  • 将git仓库URL设置为 https://github.com/barakm/mist-monitor.git (如果你想添加一些东西,你可以随时fork这个仓库)。确保给你的Quickbuild仓库设置一个你不会忘记的名字。
  • 在Quickbuild配置中,点击settings -> steps
  • 添加一个新的项目(点击'+'图标),并选择repository -> checkout。
  • 在步骤编辑页面中,确保选择之前创建的仓库
  • 添加一个新的步骤,并选择build -> shell / batch命令
  • 设置命令字段为: ./mist_monitor_runner.sh $ {vars.getValue(“mistUsername”)} $ {vars.getValue(“mistPassword”)} 注意我们是如何将mist.io的认证变为Quickbuild的一个变量 - 我们一会将配置一下。
  • 将工作目录字段设置为:mist_monitor
  • 添加新步骤,然后选择Publish -> Custom Statistics Report
  • 将“统计信息类别”设置为之前创建的自定义统计信息类别的名称(如“正在运行的云服务实例”)
  • 将“要处理的文件”字段设置为: mist_monitor / output.xml
  • 将报告集名称设置为:All_Machines
  • 在配置编辑屏幕中,选择Settings->Variables
  • 添加一个新的变量。将其命名为mistUsername,并将其值设置为您的mist.io用户名。
  • 添加一个新的变量。将它命名为mistPassword(您可能希望将值设置为秘密值,而不是明文),并将其值设置为您的mist.io帐户的密码。
  • 设置任务执行时间表。选择Settings->General Settings->Edit并安排定期执行任务。我花了一个小时。

你的新的Quickbuild配置应该是这样的:

从Quickbuild控制台运行任务几次,以确保它按预期工作。查看“最新版本”选项卡查看结果。

设置仪表板小部件

Quickbuild有一个非常简单的内置仪表板系统。

选择要使用的仪表板(或创建一个新的仪表板)

选择Add Gadget -> Others -> Custom Statistics

选择一个相关的标题,并将配置设置为您创建的任务

将生成字段设置为:Latest Successful Build

设置类别名称字段添加到您创建的自定义类别(“Running Cloud Instances”)中

选择“All_Machines”报告集,然后单击保存。

您应该在仪表板上看到来自云监视器的最新结果。

点击“查看报告”,然后选择“统计”选项卡,您可以看到您的云使用统计:

现在,您已经有了一个Quickbuild仪表板,可以显示在您所有云上运行的计算实例的数量,由mist.io提供,还有一些不错的历史数据。

翻译人:higuoxing,该成员来自云+社区翻译社

原文链接:https://dzone.com/articles/cloud-management-usage

原文作者:Cloudify Community

相关阅读


此文已由作者授权腾讯云+技术社区发布,转载请注明文章出处
 

通过与Quickbuild和Mist.io的持续集成实现云管理和使用监控的更多相关文章

  1. Docker&K8S&持续集成与容器管理--系列教程

    前言 网络虚拟化 一 Docker简介 Docker介绍  → B站视频链接 Docker架构  → B站视频链接 二 Docker安装 Ubuntu Docker 安装 CentOS Docker ...

  2. Docker&持续集成与容器管理--系列教程

    一 Docker简介 Docker介绍 Docker架构 二 Docker安装 Ubuntu Docker 安装 CentOS Docker 安装 Windows Docker 安装 MacOS Do ...

  3. jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法

    我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...

  4. docker 可持续集成及日志管理及监控报警

  5. 持续集成之戏说Check-in Dance

    尽管Thoughtworks的首席科学家Martion folwer 为“持续集成 ” 下了定义,但由于自身背景与经历的不同,每个人对其都有不同的理解.从狭义上讲,持续集成可以认为是一种基于某种或者某 ...

  6. Jenkins 快速搭建持续集成环境

    持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...

  7. CI Weekly #20 | 从持续集成的角度看 “云” 的价值

    很多移动开发工程师对 fastlane 耳熟能详,最近 flow.ci 的 iOS 工作流「编译」这步已采用 fastlane gym 工具(iOS 应用打包签名自动化),进一步优化了构建打包速度.快 ...

  8. jenkins持续集成的步骤

    项目的持续集成分享 源代码管理 项目仓库 配置仓库 发布仓库 ci/cd相关 gitlab,管理版本,测试流水线 jenkins,对项目进行持续集成 各模块的关系 graph TD a(jenkins ...

  9. 持续集成之戏说Check-in Dance(转)

    add by zhj: 先说一下持续集成的定义,这是ThoughtWorks首席科学家Martin Fowler在<持续集成>第二版中给出的,“持续集成是一种软件开发实践.在持续集成中,团 ...

随机推荐

  1. SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法

    使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java ...

  2. 使用Tomcat的Reload提高开发速度(翻译)

    欢迎转载http://www.cnblogs.com/coodream2009,有翻译的不太准确的地方请大家指出,我继续修改完善. 按照Java Servlet规范第四部分推荐的,Tomcat系统的实 ...

  3. Windows程序设计学习笔记(五)——菜单资源和加速键的使用

    菜单可能是Windows提供的统一用户界面中最重要的一种方式,菜单通常在标题栏的下一行显示,这一栏叫做菜单栏,菜单栏中的每一项称之为菜单项,菜单栏中的每一个菜单项在激活时会显现一个下拉菜单(也可以说是 ...

  4. duilib基本框架

    最近我一个同学在项目中使用到了duilib框架,但是之前并没有接触过,他与我讨论这方面的内容,看着官方给出的精美的例子,我对这个库有了很大的兴趣,我自己也是初学这个东东,我在网上花了不少时间来找相关的 ...

  5. 【转载】vim复制时的缩进

    :set paste vi/vim鼠标中键粘贴文本默认情况是自动缩进的,如果粘贴的是多行的文本,则第二行缩进1个tab,第三行缩进2个tab……依此类推,到最后文本会面目全非,解决办法是粘贴之前设置为 ...

  6. 常用Atom插件列表

    1.simplified-chinese-menu Atom的简体中文语言包,完整汉化,兼容所有已发布的版本Atom. 2.tree-view-finder 左边菜单栏显示方式,类似Mac OS下的f ...

  7. 全景图(panorama)低成本解决方案

    软硬件 米家全景相机,用于较低成本(学习成本+Money)的获得全景图像,而比较专业的获得全景图像的方法则是单反+云平台+PTGui的组合. PhotoShop,用于处理全景图像. PhotoShop ...

  8. Nginx常用功能(5)

    一.反向代理 1.多域名跳转(location) server www.test.com location / { proxy_pass http://192.168.100.100:8080/web ...

  9. hackerrank Alex对战Fedor

    任意门 为了在漫长得飞行旅途中娱乐,Alex和Fedor发明了如下的一个简单的双人游戏.游戏是: 首先, Alex画一个有权无向图.该图中可能有多重边(多重边的权值可能相同或者不同). 然后,Fedo ...

  10. [bzoj3702] 二叉树

    一个节点的儿子是否交换,不会影响到它和兄弟节点间的逆序对数. 所以每次合并线段树的时候算一下交换与不交换的逆序对数,然后选个较小值就行了. #include<cstdio> #includ ...