Azure 為用戶提供了可以自己配置的性能監(jiān)控功能:Azure 診斷擴展。但是在具體配置中,經(jīng)常會遇到各種各樣的問題。不了解監(jiān)控的工作機制常常給排查帶來一定難度。這里我們整理了關(guān)于 Azure 虛擬機監(jiān)控的工作原理,以及在出現(xiàn)問題時的大致排查步驟,希望對讀者和用戶有所幫助。
以下是 Azure 診斷的簡易原理圖。簡單來說,我們通過在門戶中啟用診斷,將配置信息發(fā)送給虛擬機中運行的 VM 代理。VM 代理收到請求后,進行 Azure 診斷擴展的安裝和配置。然后,Azure 診斷根據(jù)配置文件,收集虛擬機中的性能數(shù)據(jù)等,并將其上傳到存儲賬戶對應(yīng)的表中。最后,門戶通過 Microsoft.insights 這個資源提供程序,從對應(yīng)的存儲賬戶中獲取數(shù)據(jù),并展現(xiàn)出來。Azure 警告可以根據(jù)這些監(jiān)控數(shù)據(jù)進行告警設(shè)置,觸發(fā)后續(xù)行動等。這個過程中的每個環(huán)節(jié),每個應(yīng)用和服務(wù),缺一不可,才能保證監(jiān)控能正常工作。

現(xiàn)在大家了解了基本的過程,那么在遇到性能數(shù)據(jù)無法顯示的問題時,大概的思路也就很清楚了。
檢查診斷擴展是否安裝成功
檢查
最簡單的檢查方法,就是在門戶中查看擴展狀態(tài)。
虛擬機中的 Extensions 邊欄里列出了該虛擬機安裝的所有擴展。診斷擴展在 Linux 系統(tǒng)中為 LinuxDiagnostic; 在 Windows 系統(tǒng)中為 IaaSDiagnostic。
若狀態(tài)為Provisioning succeeded,則說明擴展安全成功。若是其他狀態(tài)如Not Available或者Failed,則說明安裝可能有問題。這時就需要排查安裝問題。

問題排查
由于 Azure 對虛擬機的管理都是通過 VM Agent 來完成的。因此,安裝不成功的大多數(shù)原因都在于 VM Agent 工作不正常。那么如何檢查呢?
Linux
以 root 身份運行下面命令,查看 VM Agent 的版本,系統(tǒng)版本,Python 版本和運行狀態(tài)。
復(fù)制
# waAgent -daemon2017/07/19 12:19:19.184938 INFO Azure Linux Agent Version:2.2.132017/07/19 12:19:19.189233 INFO OS: centos 7.3.16112017/07/19 12:19:19.194076 INFO Python: 2.7.52017/07/19 12:19:19.198558 INFO Daemon is already running: 808
檢查代理版本和狀態(tài)
默認情況下,系統(tǒng)會自動更新版本到最新版。請參考WALinuxAgent查看是否是最新的版本。在排查問題過程中,建議首先嘗試將 VM Agent 升級到最新版本后再繼續(xù)操作。參考文檔進行 VM Agent 的安裝和升級。
若當時虛擬機中 VM Agent 服務(wù)處于停止狀態(tài),以 root 身份執(zhí)行下面命令進行啟動:
# waAgent -start
如果是經(jīng)典模式虛擬機,您還需要檢查虛擬機是否啟用了 VM Agent。如果未更新 Azure 虛擬機的配置文件,即使安裝成功,Azure 也無法判斷您是否安裝了 VM Agent,因此也不會使用該 Agent 進行擴展管理。
以下步驟需要在 AzurePowershell 中執(zhí)行。首先判斷 VM 是否已經(jīng)設(shè)置了啟用 VM Agent:
復(fù)制
$vm= Get-AzureVM -ServiceName$serviceName-Name$vmname“$vm.VM.ProvisionGuestAgent”
如果$vm.VM.ProvisionGuestAgent為true,說明 VM 已啟用 VM Agent。剩余步驟即可跳過。 如果$vm.VM.ProvisionGuestAgent為false,說明尚未啟用 VM Agent。執(zhí)行以下命令啟用:
復(fù)制
$vm= Get-AzureVM -serviceName$serviceName-Name$vmname$vm.VM.ProvisionGuestAgent=$TRUEUpdate-AzureVM -Name$name-VM$vm.VM-ServiceName$svc
在 VM Agent 工作正常的情況下,診斷擴展依舊安裝不成功,則需要通過日志來排查問題。/var/log/waAgent.log是 VM Agent 的日志輸出,日志中會記錄所有的虛擬機通過 VM Agent 與 Azure 平臺的交互。
Windows
查看 VM Agent 是否安裝。
C:\WindowsAzure\Packages是否有 WaAppAgent 這個應(yīng)用程序。若沒有安裝,請參考VM Agent 和擴展程序的VM Agent 和擴展程序 - 第 2 部分進行安裝和配置。
經(jīng)典虛擬機需要同時檢查 VM Agent 是否在虛擬機中啟用,具體參見 Linux 部分問題排查)。
任務(wù)管理器中查看 WindowsAzureGuestAgent 是否運行。
若沒有截圖中的進程,說明 VM Agent 可能沒有運行。點擊C:\WindowsAzure\Packages中的應(yīng)用程序WaAppAgent進行啟動。

同時避免重啟后 VM Agent 不會自動啟動,在服務(wù)管理中查看該服務(wù)是否設(shè)置為自動啟動。

若運行不正常,請?zhí)峁┮韵氯罩疽怨┡挪椋?/p>
復(fù)制
C:\WindowsAzure\LogsC:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
關(guān)于 Windows VM agent 的更多信息,請參考Azure 虛擬機代理概述及VM Agent 和擴展程序。
檢查診斷配置文件是否正確
通過門戶配置的診斷擴展,平臺會首先驗證用戶的輸入,再給 VM Agent 發(fā)送標準的配置,因此擴展配置一般不會有問題。但有些用戶可能希望使用 PowerShell 腳本來啟用擴展,這樣可以自定義一些需要保存的日志文件,或者添加刪除某些性能指標;在這種情況下,若配置文件設(shè)置不當,很可能造成擴展安裝成功,但工作不正常的情況。
通過查看擴展日志來找到原因:
Linux 中日志位于/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//下面,extension.log 記錄了所有的配置變更,以及錯誤信息。根據(jù)錯誤信息進行配置文件的修正,一般能解決大多數(shù)問題:如性能指標寫的不對;存儲賬號密、SAS 配置錯誤等。
Windows 中日志位于C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\Status中。
如果在更新了 VM agent 版本,重啟 Waagent 服務(wù),甚至重啟了虛擬機的情況下,安裝擴展仍然出現(xiàn)問題,或者擴展仍然無法正常工作,請將下面日志打包提供:
復(fù)制
Linux:/var/log/waagent.log/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//*/var/lib/waagent/*.xmlWindows:C:\WindowsAzure\LogsC:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
檢查存儲賬號是否有性能數(shù)據(jù)
若診斷擴展運行正常,則對應(yīng)的存儲賬號中將會存在對應(yīng)的存放性能數(shù)據(jù)的表。且表中會有虛擬機的性能數(shù)據(jù)存在。
使用 Microsoft Azure Storage Explorer 連接到存儲賬戶,展開 Tables 檢查表。用于存放性能數(shù)據(jù)的表以 WADMetrics 開頭。根據(jù)存放的性能數(shù)據(jù)的時間頻度,后跟 PT1M 或者 PT1H,分別代表過去一分鐘和過去一小時。該表每 10 天會新建一個,因此,P10D 代表存最最多存放 10 天的數(shù)據(jù)。最后是表的版本和最新數(shù)據(jù)的時間段。如 WADMetricsPT1HP10DV2S20170510 代表該表存放的是 2017 年 05 月 10 日之后 10 天內(nèi)的每小時的統(tǒng)計數(shù)據(jù)。
表中的數(shù)據(jù),一行為某個虛擬機的某個時間點的單個性能指標的統(tǒng)計數(shù)據(jù)。其中記錄了虛擬機名,時間戳,性能指標名稱,時間范圍內(nèi)的采樣次數(shù),最大值,最小值,平均值,以及總量。
Note
對于不同的性能指標,并不是每一列都會用到。
在排查性能視圖不可見的問題時,用戶首先要明確的是什么時間段的數(shù)據(jù)不可見,然后找到對應(yīng)的表,查看表中是否有虛擬機的對應(yīng)時刻的性能指標記錄。由于表中包含數(shù)以萬計的實體,您可以使用 Microsoft Azure Storage Explorer 提供的過濾功能篩選結(jié)果,但由于單次下載到內(nèi)存中的數(shù)據(jù)并不多,不一定能查到所需數(shù)據(jù);在這種情況下,建議將表導(dǎo)出到本地 csv 文件中進行篩選。
如果表中確實沒有對應(yīng)的數(shù)據(jù),則需要再次檢查配置文件確認存儲賬號設(shè)置是否有誤,或者數(shù)據(jù)上傳是否有錯。如果是上傳錯誤,在 VM agent 的日志,或者擴展日志中將會有對應(yīng)的記錄。

檢查訂閱是否注冊了 Microsoft.insights
通過以上步驟的排查,但數(shù)據(jù)依舊沒有顯示,則最大的可能性就是負責(zé)處理性能數(shù)據(jù)顯示的資源提供程序 Microsoft.insights 沒有注冊,導(dǎo)致門戶無法獲取和處理數(shù)據(jù)。檢查方法如下:
門戶中搜索 Subscription。打開后點擊對應(yīng)的訂閱,在 Resource Providers 邊欄中查看 Microsoft.insights 是否是注冊的狀態(tài)。若沒有注冊,點擊注冊將其注冊到訂閱中。再回到虛擬機頁面查看性能視圖。

聯(lián)系技術(shù)支持
如果上述所有操作都嘗試過,但還是有問題,請收集下面信息提供給技術(shù)支持團隊進行個案分析。
復(fù)制
Linux:/var/log/waagent.log/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//*/var/lib/waagent/*.xmlWindows:C:\WindowsAzure\LogsC:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*? ? ? ? ? ? 立即訪問http://market.azure.cn