通过与Quickbuild和Mist.io的持续集成实现云管理和使用监控

这篇文章由撰写。

总结我自己有关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帐户

首先,你需要在上设置你的帐户。完全免费。

云证书

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

配置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()

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyxfg.html