在前面的介紹中,我們看到通過定義規則可以實現虛擬機器擴充套件集的auto scale,那麼在後台執行上vmss的擴充套件依賴於哪些元件,出現問題(比如自動擴充套件沒有發生的時候),我們在撥打400之前,如何快速的檢查是否是配置問題?
本文簡單介紹一下vmss下auto scale的原理,以及出現問題如何快速的檢查問題。下圖展示了azure的計算資源監控和資料收集機制,從資料來源來講,azure的監控資料可以來自於應用程式,診斷日誌,系統、自定義的指標資料,也包括審計和操作日誌。
例如在我們vmss例子中用於自動化擴充套件的度量資料,來自於linux diagnostic擴充套件,擴充套件載我們做arm模版定義的時候必須正確配置才能獲得資料:
通過在guest os獲得的metric資料會被儲存在azure storage的table當中,也可以儲存在eventhub當中進行日誌收集處理,收集的資料會被用於告警或者自動擴充套件處理,對於這些日誌資料的訪問,你可以通過azure的portal,或者powershell,或者使用命令列,或者使用rest api提供給第三方的工具進行監控:
在vmss的arm模板中,我們已經預先定義了一自動擴充套件的規則,獲取資料的時間視窗,週期,進行scale out或者scale in的規則,那麼在執行的時候,自動擴充套件引擎會根據定義的規則,時間視窗和度量值檢測是否滿足觸發條件,一旦滿足,就會執行相應的操作,例如增減,減少虛擬機器,郵件通知等等:
到此為止,我簡單介紹了一下vmss的auto scale的工作原理和機制,那麼現在問題來了,你部署了乙個vmss包含多個虛擬機器,當壓力增加的時候,你發現自動擴充套件沒有發生,應該從哪些地方入手?
當然是檢查你的arm模版,看看你的linuxdiagnotics是否定義,autoscale是否設定,規則是否正確等等。
開啟你的powershell並用rm登入,vmss的autoscale依賴於兩個resource provider,乙個是microsoft.insights, 乙個是microsoft.compute, 要確保他們的狀態都是"registered",否則需要使用命令register-azurermresourceprovider手工註冊這兩個provider:
登入到新的azure portal,單擊你的vmss的資源組,你會看到上次部署的記錄,檢查部署日誌,正常情況下,所有的部署操作都應該是成功的,如果有任何問題,檢視詳細日誌,修復錯誤操作並重新部署:
檢查你的自動擴充套件選項是否為開啟狀態:
根據我們之前對於vmss自動擴充套件的機制的了解,metrics資料會被寫到azure storage account裡面,如果上面的配置都沒有問題,那麼我們需要看一下vmss裡面建立的儲存賬號,其中乙個儲存賬號是存放診斷資料的:
如果你看到wadmetrics*這樣的表產生了,至少說明你的診斷的儲存賬號配置是正確的;如果你沒有看到任何這樣的如下的表產生,則說明你的儲存賬號和自動擴充套件配置是錯誤的
拷貝你的診斷儲存賬號的賬戶名和密碼,進行連線,檢視wad*表中是否存在資料,wadmetricspt1h*存放每小時彙總資料,wadmetricspt1m*存放每分鐘採集資料,如果你看到資料產生,則說明你的linux diag agent工作正常:
到此為止,如果上述檢查都通過,而你看到你的vmss中的虛擬機器你所希望的度量值的確達到了要求,那麼你需要看看你在arm模板中定義的度量值和採集到的值是否一樣,因為就cpu而言,也有非常多的度量值,例如早本例中,我們使用的是"\\processor\\percentusertime":
那麼在storage explorer中,選擇query,在查詢條件中field選擇countername,查詢值選擇"\processor\percentusertime",查詢該值的大小:
在大部分的情況下,如果前面的設定沒問題,你的auto scale還是不工作,一般都是你的度量值設定有問題,比如如果你使用的是\processor\percentidletime,但實際上你看到度量值中這個並不高,你需要檢查並調整下你的自動擴充套件策略。
基本上絕大部分問題都可以在上述的診斷中解決,了解了vmss的基本工作原理,可以幫助我們更好的使用這個強大的功能~
深入理解並查集
並查集是一種樹形結構,它是由並查集演算法進行維護的。而並查集演算法 union find algorithm 顧名思義,它主要是由 合併集合 和 查詢集合 合併集合 是將兩個連通的集合合併為乙個集合,查詢集合 判斷某個節點的代表節點,也就是根節點。圖的連通狀態如上圖所示,共分為三個集合,灰色 藍色 ...
擴充套件參考線 深入理解字型
font size line height vertical align font family 文字是通過一些文字製作軟體製作的,比如fontforge 製作文字時,會有幾根參考線,不同的文字型別,參考線不一樣。同一種文字型別,參考線一致。字型大小,設定的是文字的相對大小 文字的相對大小 1000...
python字符集編碼深入理解
在python中和字串相關的型別,分別是str,unicode兩種不同的型別 basestring str unicode指令碼字元編碼 指指令碼檔案本身是用何種字元編碼的,預設情況python直譯器 直譯器就是執行python 程式的程式 認為指令碼是ascii碼 test.py print 你好...