Azure 為用戶提供了可以自己配置的性能監(jiān)控功能:Azure 診斷擴(kuò)展。但是在具體配置中勋眯,經(jīng)常會遇到各種各樣的問題只嚣。不了解監(jiān)控的工作機(jī)制常常給排查帶來一定難度。這里我們整理了關(guān)于 Azure 虛擬機(jī)監(jiān)控的工作原理吁恍,以及在出現(xiàn)問題時的大致排查步驟,希望對讀者和用戶有所幫助播演。
以下是 Azure 診斷的簡易原理圖冀瓦。簡單來說,我們通過在門戶中啟用診斷写烤,將配置信息發(fā)送給虛擬機(jī)中運(yùn)行的 VM 代理翼闽。VM 代理收到請求后,進(jìn)行 Azure 診斷擴(kuò)展的安裝和配置洲炊。然后感局,Azure 診斷根據(jù)配置文件尼啡,收集虛擬機(jī)中的性能數(shù)據(jù)等,并將其上傳到存儲賬戶對應(yīng)的表中蓝厌。最后玄叠,門戶通過 Microsoft.insights 這個資源提供程序古徒,從對應(yīng)的存儲賬戶中獲取數(shù)據(jù)拓提,并展現(xiàn)出來。Azure 警告可以根據(jù)這些監(jiān)控?cái)?shù)據(jù)進(jìn)行告警設(shè)置隧膘,觸發(fā)后續(xù)行動等代态。這個過程中的每個環(huán)節(jié),每個應(yīng)用和服務(wù)疹吃,缺一不可蹦疑,才能保證監(jiān)控能正常工作。
現(xiàn)在大家了解了基本的過程萨驶,那么在遇到性能數(shù)據(jù)無法顯示的問題時歉摧,大概的思路也就很清楚了。
檢查診斷擴(kuò)展是否安裝成功
檢查
最簡單的檢查方法腔呜,就是在門戶中查看擴(kuò)展?fàn)顟B(tài)叁温。
虛擬機(jī)中的 Extensions 邊欄里列出了該虛擬機(jī)安裝的所有擴(kuò)展。診斷擴(kuò)展在 Linux 系統(tǒng)中為 LinuxDiagnostic; 在 Windows 系統(tǒng)中為 IaaSDiagnostic核畴。
若狀態(tài)為Provisioning succeeded膝但,則說明擴(kuò)展安全成功。若是其他狀態(tài)如Not Available或者Failed谤草,則說明安裝可能有問題跟束。這時就需要排查安裝問題。
問題排查
由于 Azure 對虛擬機(jī)的管理都是通過 VM Agent 來完成的丑孩。因此冀宴,安裝不成功的大多數(shù)原因都在于 VM Agent 工作不正常。那么如何檢查呢温学?
Linux
以 root 身份運(yùn)行下面命令略贮,查看 VM Agent 的版本,系統(tǒng)版本枫浙,Python 版本和運(yùn)行狀態(tài)刨肃。
復(fù)制
# waAgent -daemon
2017/07/19 12:19:19.184938 INFO Azure Linux Agent Version:2.2.13
2017/07/19 12:19:19.189233 INFO OS: centos 7.3.1611
2017/07/19 12:19:19.194076 INFO Python: 2.7.5
2017/07/19 12:19:19.198558 INFO Daemon is already running: 808
檢查代理版本和狀態(tài)
默認(rèn)情況下,系統(tǒng)會自動更新版本到最新版箩帚。請參考WALinuxAgent查看是否是最新的版本真友。在排查問題過程中,建議首先嘗試將 VM Agent 升級到最新版本后再繼續(xù)操作紧帕。參考文檔進(jìn)行 VM Agent 的安裝和升級盔然。
若當(dāng)時虛擬機(jī)中 VM Agent 服務(wù)處于停止?fàn)顟B(tài)桅打,以 root 身份執(zhí)行下面命令進(jìn)行啟動:
# waAgent -start
如果是經(jīng)典模式虛擬機(jī),您還需要檢查虛擬機(jī)是否啟用了 VM Agent愈案。如果未更新 Azure 虛擬機(jī)的配置文件挺尾,即使安裝成功,Azure 也無法判斷您是否安裝了 VM Agent站绪,因此也不會使用該 Agent 進(jìn)行擴(kuò)展管理遭铺。
以下步驟需要在 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 = $TRUE
Update-AzureVM -Name $name -VM $vm.VM -ServiceName $svc
在 VM Agent 工作正常的情況下,診斷擴(kuò)展依舊安裝不成功敏沉,則需要通過日志來排查問題果正。/var/log/waAgent.log是 VM Agent 的日志輸出,日志中會記錄所有的虛擬機(jī)通過 VM Agent 與 Azure 平臺的交互盟迟。
Windows
查看 VM Agent 是否安裝秋泳。
C:\WindowsAzure\Packages是否有 WaAppAgent 這個應(yīng)用程序。若沒有安裝队萤,請參考VM Agent 和擴(kuò)展程序的VM Agent 和擴(kuò)展程序 - 第 2 部分進(jìn)行安裝和配置轮锥。
經(jīng)典虛擬機(jī)需要同時檢查 VM Agent 是否在虛擬機(jī)中啟用,具體參見 Linux 部分問題排查)要尔。
任務(wù)管理器中查看 WindowsAzureGuestAgent 是否運(yùn)行舍杜。
若沒有截圖中的進(jìn)程,說明 VM Agent 可能沒有運(yùn)行赵辕。點(diǎn)擊C:\WindowsAzure\Packages中的應(yīng)用程序WaAppAgent進(jìn)行啟動既绩。
同時避免重啟后 VM Agent 不會自動啟動,在服務(wù)管理中查看該服務(wù)是否設(shè)置為自動啟動还惠。
若運(yùn)行不正常饲握,請?zhí)峁┮韵氯罩疽怨┡挪椋?/p>
復(fù)制
C:\WindowsAzure\Logs
C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
關(guān)于 Windows VM agent 的更多信息,請參考Azure 虛擬機(jī)代理概述及VM Agent 和擴(kuò)展程序蚕键。
檢查診斷配置文件是否正確
通過門戶配置的診斷擴(kuò)展救欧,平臺會首先驗(yàn)證用戶的輸入,再給 VM Agent 發(fā)送標(biāo)準(zhǔn)的配置锣光,因此擴(kuò)展配置一般不會有問題笆怠。但有些用戶可能希望使用 PowerShell 腳本來啟用擴(kuò)展,這樣可以自定義一些需要保存的日志文件誊爹,或者添加刪除某些性能指標(biāo)蹬刷;在這種情況下瓢捉,若配置文件設(shè)置不當(dāng),很可能造成擴(kuò)展安裝成功办成,但工作不正常的情況泡态。
通過查看擴(kuò)展日志來找到原因:
Linux 中日志位于/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//下面,extension.log 記錄了所有的配置變更迂卢,以及錯誤信息某弦。根據(jù)錯誤信息進(jìn)行配置文件的修正,一般能解決大多數(shù)問題:如性能指標(biāo)寫的不對冷守;存儲賬號密刀崖、SAS 配置錯誤等惊科。
Windows 中日志位于C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\Status中拍摇。
如果在更新了 VM agent 版本,重啟 Waagent 服務(wù)馆截,甚至重啟了虛擬機(jī)的情況下充活,安裝擴(kuò)展仍然出現(xiàn)問題,或者擴(kuò)展仍然無法正常工作蜡娶,請將下面日志打包提供:
復(fù)制
Linux:
/var/log/waagent.log
/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//*
/var/lib/waagent/*.xml
Windows:
C:\WindowsAzure\Logs
C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
檢查存儲賬號是否有性能數(shù)據(jù)
若診斷擴(kuò)展運(yùn)行正常混卵,則對應(yīng)的存儲賬號中將會存在對應(yīng)的存放性能數(shù)據(jù)的表。且表中會有虛擬機(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)計(jì)數(shù)據(jù)。
表中的數(shù)據(jù)碑幅,一行為某個虛擬機(jī)的某個時間點(diǎn)的單個性能指標(biāo)的統(tǒng)計(jì)數(shù)據(jù)戴陡。其中記錄了虛擬機(jī)名,時間戳沟涨,性能指標(biāo)名稱恤批,時間范圍內(nèi)的采樣次數(shù),最大值拷窜,最小值开皿,平均值涧黄,以及總量。
Note
對于不同的性能指標(biāo)赋荆,并不是每一列都會用到笋妥。
在排查性能視圖不可見的問題時,用戶首先要明確的是什么時間段的數(shù)據(jù)不可見窄潭,然后找到對應(yīng)的表春宣,查看表中是否有虛擬機(jī)的對應(yīng)時刻的性能指標(biāo)記錄。由于表中包含數(shù)以萬計(jì)的實(shí)體嫉你,您可以使用 Microsoft Azure Storage Explorer 提供的過濾功能篩選結(jié)果月帝,但由于單次下載到內(nèi)存中的數(shù)據(jù)并不多,不一定能查到所需數(shù)據(jù)幽污;在這種情況下嚷辅,建議將表導(dǎo)出到本地 csv 文件中進(jìn)行篩選。
如果表中確實(shí)沒有對應(yīng)的數(shù)據(jù)距误,則需要再次檢查配置文件確認(rèn)存儲賬號設(shè)置是否有誤簸搞,或者數(shù)據(jù)上傳是否有錯。如果是上傳錯誤准潭,在 VM agent 的日志趁俊,或者擴(kuò)展日志中將會有對應(yīng)的記錄。
檢查訂閱是否注冊了 Microsoft.insights
通過以上步驟的排查刑然,但數(shù)據(jù)依舊沒有顯示寺擂,則最大的可能性就是負(fù)責(zé)處理性能數(shù)據(jù)顯示的資源提供程序 Microsoft.insights 沒有注冊,導(dǎo)致門戶無法獲取和處理數(shù)據(jù)泼掠。檢查方法如下:
門戶中搜索 Subscription怔软。打開后點(diǎn)擊對應(yīng)的訂閱,在 Resource Providers 邊欄中查看 Microsoft.insights 是否是注冊的狀態(tài)武鲁。若沒有注冊爽雄,點(diǎn)擊注冊將其注冊到訂閱中。再回到虛擬機(jī)頁面查看性能視圖沐鼠。
聯(lián)系技術(shù)支持
如果上述所有操作都嘗試過挚瘟,但還是有問題,請收集下面信息提供給技術(shù)支持團(tuán)隊(duì)進(jìn)行個案分析饲梭。
復(fù)制
Linux:
/var/log/waagent.log
/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//*
/var/lib/waagent/*.xml
Windows:
C:\WindowsAzure\Logs
C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
立即訪問http://market.azure.cn