zoukankan      html  css  js  c++  java
  • 通过与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帐户

    首先,你需要在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

    相关阅读

    腾讯云容器服务监控体系详解
    新时代运维监控能力的进化——天网云用户体验监控平台实践
    腾讯海量监控体系经验分享

    此文已由作者授权腾讯云+技术社区发布,转载请注明文章出处
     
  • 相关阅读:
    cmd 进入mysql 小技巧
    【scikit-learn】交叉验证及其用于參数选择、模型选择、特征选择的样例
    向txt文件中写入换行
    CTabCtrl的使用
    unicode下数据之间的转换
    下载数据库包
    python3.5.1语法
    配置Python+selenium+firefox自动化测试
    使用Tesseract OCR识别验证码
    white的配置使用
  • 原文地址:https://www.cnblogs.com/qcloud1001/p/8378078.html
Copyright © 2011-2022 走看看