經過與Quickbuild和Mist.io的持續集成實現雲管理和使用監控

歡迎你們前往雲+社區,獲取更多騰訊海量技術實踐乾貨哦~html

這篇文章由巴拉克·梅里莫維奇撰寫。python

總結我本身有關Openstack的各類騷操做先告一段落。這一次我想談談有關監控雲服務的使用狀況。git

我我的使用IaaS雲比較多。有不少laas資源在手中。有了這麼多資源,這麼多項目,偶爾會有一些失誤。開發人員或者一些自動化運維工具可能會忘記或遺漏掉本該關閉的虛擬主機。並且在雲端,若是你忘記了一些東西,你就付出代價(金錢上的)。一般,虛擬主機無論你是否真的在作一些有用的事情,只要在運行就一直在計費。並且在你不知情的狀況下,帳單就會蜂擁而至,帳戶管理中心的人員就出如今你的面前。github

因此我須要一些方法來監控個人跨平臺和帳戶的雲服務。我花了一段時間在網上尋找一個好的雲監控解決方案,可讓我快速瞭解當前的雲使用狀況。順便說一下,我喜歡看儀表板。可以在一個地方監控到全部相關的東西給我省了一大半力氣。shell

看了一堆雲監控相關的項目,我終於發現了mist.io,它具備我所須要的功能,剩下的就是將其插入到我現有的儀表板系統中。後端

因此咱們先看看這些項目。bash

Mist.io

Mist.io是一個很酷的開源項目,能夠監視多個雲中的虛擬主機的使用狀況。目前支持的雲服務提供商很是多(請參閱此處的最新列表,目前包括:公有云服務器、裸機服務器, Docker容器和KVM管理程序。服務器

還有另一個mist.io網站,提供了一些額外的優質插件。我給個人雲服務使用了這個項目,但你始終能夠在本地安裝開源版本。Mist.io還提供了一個Python SDK,使其成爲一個很是容易編寫腳本的系統 - 過一會我將使用客戶端SDK。運維

Mist.io包含一個用於當前雲服務使用狀況的控制檯,它自己很是有用:ide

可是對於個人項目,我還須要維護個人使用歷史和統計數據。

Quickbuild

咱們用於Cloudify 的持續集成系統(CI)是利用Quickbuild編譯出來的。咱們已經使用了它很長一段時間,它已是一個十分穩定的系統。Quickbuild也有一個靈活的儀表板系統,我能夠插入我本身的自定義數據源。

這篇文章講了不少有關Quickbuild的細節,但對於任何CI /自動化系統來講,這些應該是相同的。

膠水(讓Quickbuild和mist.io一同協做的方法)

整體思路是在Quickbuild中定義一個配置,它將輪詢mist.io的API來運行虛擬機,收集歷史數據並在Quickbuild儀表板上顯示最新的結果。

因此讓咱們開始吧!

Mist.io賬戶

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

這是有趣的一點:

github.com/barakm/mist…

請注意如何利用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設置爲 github.com/barakm/mist… (若是你想添加一些東西,你能夠隨時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

相關閱讀


此文已由做者受權雲加社區發佈,轉載請註明 文章出處
相關文章
相關標籤/搜索