匯出 (0) 列印
全部展開

為 Azure 雲端服務和虛擬機器設定診斷功能

更新日期: 2015年3月

需要對 Azure 雲端服務或 Azure 虛擬機器進行疑難排解時,使用 Visual Studio 將能讓您更輕鬆地設定 Azure 診斷功能。Azure 診斷功能會從執行雲端服務的虛擬機器和虛擬機器執行個體擷取系統資料和記錄資料,並將這些資料傳輸至您的儲存體帳戶。您也能以程式設計方式和直接編輯組態檔的方式存取 Azure 診斷功能。如需詳細資訊,請參閱<使用 Azure 診斷程式收集記錄資料>。

您可以透過下列方式設定 Azure 診斷功能:

  • 使用 Visual Studio 中的診斷組態對話方塊,或直接修改組態檔。組態檔 diagnostics.wadcfg (Azure SDK 2.4 或更早版本) 或 diagnostics.wadcfgx (Azure SDK 2.5) 會加入至您的專案。

    若您採用此方式,所做的組態變更會在您下次將雲端服務部署至 Azure 或在模擬器中執行該服務時生效。

  • 使用 [伺服器總管] 變更執行中雲端服務或虛擬機器的診斷設定。

本主題包括下列各節。

如果您將專案從 Azure SDK 2.4 升級為 Azure SDK 2.5,您應該記住下列診斷功能差異。

  • 不完全支援模擬器 – 您無法在本機模擬器中使用診斷功能。追蹤陳述式將會出現在本機的 [輸出] 視窗中,但它們不傳送到 Azure 儲存體。

  • 組態 API 已淘汰 – Azure SDK 2.4 或較早的版本中支援以程式設計方式設定診斷功能,但在 Azure SDK 2.5 中已淘汰。如果您的診斷組態目前定義在程式碼中,您必須在移轉的專案中重新設定這些設定值,診斷功能才能繼續運作。Azure SDK 2.4 的診斷組態檔是 diagnostics.wadcfg,Azure SDK 2.5 的診斷組態檔是 diagnostics.wadcfgx。

  • 雲端服務應用程式的診斷功能只能在角色層級上設定,無法再於執行個體層級上設定。

  • 每次部署應用程式時都會更新診斷組態 – 如果您從 [伺服器總管] 變更診斷組態,然後重新部署您的應用程式,這可能會造成同位檢查問題。

  • 在 Azure SDK 2.5,損毀傾印是在診斷組態檔中設定,而不是在程式碼中 – 如果您在程式碼中設定損毀傾印,您必須手動將組態從程式碼移轉至組態檔,因為在移轉至 Azure 2.5 期間不會移轉損毀傾印。

在 Visual Studio 中,當您在模擬器中執行服務時,您可以在部署之前選擇為 Azure 中執行的角色收集診斷資料。在 Visual Studio 中對診斷設定所做的全部變更都會儲存在 Azure SDK 2.4 或更早版本的 diagnostics.wadcfg 組態檔中,以及 Azure SDK 2.5 的 diagnostics.wadcfgx 組態檔中。當您部署雲端服務時會使用這些設定。

您可以在模擬器中執行服務,並在 Azure SDK 2.4 和更早的版本中使用診斷功能。在 Azure SDK 2.5,您仍然可以啟用診斷功能後再部署,組態將會儲存在 diagnostics.wadcfgx 檔案中。

  1. 從您要診斷之角色的捷徑功能表,選擇 [屬性],然後在角色的 [屬性] 視窗中選擇 [組態] 索引標籤。

  2. 在 [診斷] 區段,確定已選取 [啟用診斷] 核取方塊。

    存取 [啟用診斷] 選項
  3. 選擇 [設定] 按鈕以檢視 [診斷組態] 對話方塊。

    每個索引標籤 ([一般] 和 [記錄檔目錄] 除外) 代表您可以收集的診斷資料來源。

    選擇 [自訂] 方案,然後按一下 [編輯] 按鈕

    預設索引標籤 [一般] 提供下列的診斷資料收集選項:[只限錯誤]、[全部資訊] 和 [自訂計劃]。預設選項 [只限錯誤] 佔用最少的儲存空間,因為它不會傳輸警告或追蹤訊息。[全部資訊] 選項傳輸的資訊最多,所以也最佔空間。

  4. 此範例中,請選取 [自訂計劃] 選項,以便自訂要收集的資料。

  5. 選擇 [設定] 按鈕,以指定您要收集診斷資料的儲存體帳戶。

  6. [磁碟配額 (MB)] 方塊指定您要在儲存體帳戶中配置給診斷資料的空間。想要的話,您可以變更預設值。

  7. 在您想要收集診斷資料的每個索引標籤上,選取其 [啟用傳輸] 核取方塊。

    例如,如果您想要收集應用程式記錄檔,請在 [應用程式記錄檔] 索引標籤上選取 [啟用傳輸應用程式記錄檔] 核取方塊。此外,指定每個診斷資料類型所需的其他任何資訊。關於每個索引標籤上的設定資訊,請參閱本主題稍後的<設定診斷資料來源>一節。

  8. 在啟用收集所有您想要的診斷資料之後,請選擇 [確定] 按鈕。

  9. 像往常一樣在 Visual Studio 中執行您的專案。當您使用您的應用程式時,您已啟用的記錄資訊會儲存到您的 Azure 儲存體。

在 Visual Studio 中,您可以選擇為 Azure 虛擬機器收集診斷資料。

  1. 在 [伺服器總管] 中,選擇 [Azure] 節點,然後連接至您的 Azure 訂用帳戶 (如果您未連線)。

  2. 展開 [虛擬機器] 節點。您可以建立新的虛擬機器,或選取一個已經存在的虛擬機器。

  3. 在所需之虛擬機器的捷徑功能表,選擇 [設定]。這會顯示虛擬機器組態對話方塊。

    設定 Azure 虛擬機器
  4. 在 [已安裝擴充功能] 清單中,選擇 [選取可用的擴充功能] 下拉式選單,然後選擇 [Microsoft Monitoring Agent 診斷]。

    安裝 Azure 虛擬機器擴充模組
  5. 選擇 [加入] 按鈕以檢視 [診斷組態] 對話方塊。

  6. 選擇 [設定] 按鈕來指定儲存體帳戶,然後選擇 [確定] 按鈕。

    每個索引標籤 ([一般] 和 [記錄檔目錄] 除外) 代表您可以收集的診斷資料來源。

    選擇 [自訂] 方案,然後按一下 [編輯] 按鈕

    預設索引標籤 [一般] 提供下列的診斷資料收集選項:[只限錯誤]、[全部資訊] 和 [自訂計劃]。預設選項 [只限錯誤] 佔用最少的儲存空間,因為它不會傳輸警告或追蹤訊息。[全部資訊] 選項傳輸的資訊最多,所以也最佔空間。

  7. 此範例中,請選取 [自訂計劃] 選項,以便自訂要收集的資料。

  8. 選擇 [設定] 按鈕,以指定您要收集診斷資料的儲存體帳戶。

  9. [磁碟配額 (MB)] 方塊指定您要在儲存體帳戶中配置給診斷資料的空間。想要的話,您可以變更預設值。

  10. 在您想要收集診斷資料的每個索引標籤上,選取其 [啟用傳輸] 核取方塊。

    例如,如果您想要收集應用程式記錄檔,請在 [應用程式記錄檔] 索引標籤上選取 [啟用傳輸應用程式記錄檔] 核取方塊。此外,指定每個診斷資料類型所需的其他任何資訊。關於每個索引標籤上的設定資訊,請參閱本主題稍後的<設定診斷資料來源>一節。

  11. 在啟用收集所有您想要的診斷資料之後,請選擇 [確定] 按鈕。

  12. 儲存已更新的專案。

    您會在 [Microsoft Azure 活動記錄檔] 視窗中看到訊息指出已經更新虛擬機器。

啟用收集診斷資料之後,您可以選擇您確實想要收集的資料來源和所收集的資訊。下列是 [診斷組態] 對話方塊中的索引標籤清單,以及每個組態選項的意義。

應用程式記錄檔包含 Web 應用程式所產生的診斷資訊。如果您想要擷取應用程式記錄檔,請選取 [啟用傳輸應用程式記錄檔] 核取方塊。您可以變更 [傳輸期間 (分鐘)]值,以增加或減少應用程式記錄檔傳輸至儲存體帳戶的分鐘數。您也可以設定 [記錄層級]值,以變更記錄檔中擷取的資訊數量。例如,您可以選擇 [詳細] 以取得詳細資訊,或選擇 [嚴重] 只擷取嚴重錯誤。如果您有特定的診斷提供者發出應用程式記錄檔,您可以將該提供者的 GUID 加入至 [提供者 GUID] 方塊,以擷取這些記錄檔。

應用程式記錄檔

如需應用程式記錄檔的詳細資訊,請參閱對 Web Apps 啟用診斷記錄

如果您想要擷取 Windows 事件記錄檔,請選取 [啟用傳輸 Windows 事件記錄檔] 核取方塊。您可以變更 [傳輸期間 (分鐘)]值,以增加或減少事件記錄檔傳輸至儲存體帳戶的分鐘數。選取您想要追蹤的事件類型的核取方塊。這些類別對應至 Windows 事件檢視器中的篩選條件。

事件記錄檔

如果您想要指定自訂資料來源,您可以在 diagnostics.wadcfgx 檔案的 WindowsEventLog 區段中新增,如以下範例所示。

<WindowsEventLog scheduledTransferPeriod="PT1M">
   <DataSource name="Application!*" />
   <DataSource name="CustomDataSource!*" />
</WindowsEventLog>

效能計數器資訊可協助您找出系統瓶頸並微調系統和應用程式的效能。如需詳細資訊,請參閱在 Azure 應用程式中建立及使用效能計數器。如果您想要擷取效能計數器,請選取 [啟用傳輸效能計數器] 核取方塊。您可以變更 [傳輸期間 (分鐘)]值,以增加或減少事件記錄檔傳輸至儲存體帳戶的分鐘數。選取您想要追蹤的效能計數器的核取方塊。

效能計數器

若要追蹤任何未列出的效能計數器,請使用建議的語法自行輸入,然後選擇 [加入] 按鈕。您所能追蹤的效能計數器取決於虛擬機器上的作業系統。如需有關語法的詳細資訊,請參閱指定計數器路徑

如果您想要擷取基礎結構記錄檔,其中包含 Azure 診斷基礎結構、RemoteAccess 模組和 RemoteForwarder 模組的相關資訊,請選取 [啟用傳輸基礎結構記錄檔] 核取方塊。您可以變更 [傳輸期間 (分鐘)]值,以增加或減少記錄檔傳輸至儲存體帳戶的分鐘數。

診斷基礎結構記錄檔

如需詳細資訊,請參閱<使用 Azure 診斷程式收集記錄資料>。

如果您想要擷取記錄檔目錄,其中包含針對 Internet Information Services (IIS) 要求、失敗的要求或您選擇的資料夾,而從記錄檔目錄中收集的資料,請選取 [啟用傳輸記錄檔目錄] 核取方塊。您可以變更 [傳輸期間 (分鐘)]值,以增加或減少記錄檔傳輸至儲存體帳戶的分鐘數。

您可以選取您想要收集之記錄檔的方塊,例如 [IIS 記錄] 和 [失敗的要求記錄檔]。系統會提供預設儲存體容器名稱,但您可以依需要來變更名稱。

此外,您可以擷取任何資料夾中的記錄檔。只需在 [絕對目錄中的記錄檔] 區段中指定路徑,然後選擇 [加入目錄] 按鈕。記錄檔將會擷取至指定的容器。

記錄檔目錄

如果您使用 Windows 的事件追蹤 (ETW),而且想要擷取 ETW 記錄檔,請選取 [啟用傳輸 ETW 記錄檔] 核取方塊。您可以變更 [傳輸期間 (分鐘)]值,以增加或減少記錄檔傳輸至儲存體帳戶的分鐘數。

將會從您指定的事件來源和事件資訊清單中擷取事件。若要指定事件來源,請在 [事件來源] 區段中輸入名稱,然後選擇 [加入事件來源] 按鈕。同樣地,您可以在 [事件資訊清單] 區段中指定事件資訊清單,然後選擇 [加入事件資訊清單] 按鈕。

ETW 記錄檔

ASP.NET 是透過 System.Diagnostics 命名空間中的類別來支援 ETW 架構。Microsoft.WindowsAzure.Diagnostics 命名空間 (繼承並擴充標準 System.Diagnostics 類別) 可讓您使用 System.Diagnostics 作為 Azure 環境中的記錄架構。如需詳細資訊,請參閱<掌握 Windows Azure 中的記錄與追蹤>和<在 Azure 雲端服務和虛擬機器中啟用診斷>。

如果您想要擷取角色執行個體當機時的相關資訊,請選取 [啟用傳輸損毀傾印] 核取方塊(由於 ASP.NET 處理了大部分的例外狀況,因此這通常只對背景工作角色有用)。您可以變更 [目錄配額 (%)] 值,以增加或減少專供損毀傾印使用的儲存空間百分比。您可以變更用來儲存損毀傾印的儲存體容器,也可以選擇要擷取 [完整] 或 [小型] 傾印。

將會列出目前正在追蹤的處理序。選取您想要擷取的處理序的核取方塊。若要將另一個處理序加入至清單,請輸入處理序名稱,然後選擇 [加入處理序] 按鈕。

損毀傾印

如需詳細資訊,請參閱<掌握 Windows Azure 中的記錄與追蹤>。

在收集雲端服務或虛擬機器的診斷資料之後,您可以檢視它。

  1. 如往常般部署您的雲端服務,然後加以執行。

  2. 您可以從 Visual Studio 產生的報表或儲存體帳戶中的表格檢視診斷資料。若要從報表檢視資料,請開啟 [伺服器總管],再開啟所需角色之節點的捷徑功能表,然後選擇 [檢視診斷資料]。

    檢視診斷資料

    顯示可用資料的報表隨即出現。

    Visual Studio 中的 Windows Azure 診斷報告

    如果未顯示最新的資料,您可能就必須等到傳輸週期過後。

    選擇 [重新整理] 按鈕可即時更新資料。

    在 [伺服器總管] 中,開啟與此部署相關聯的儲存體帳戶。

  3. 在表格檢視器中開啟診斷表格,然後檢閱您所收集的資料。對於 IIS 記錄檔和自訂記錄檔,您可以開啟 Blob 容器。透過檢閱下表,您將能找到含有所需資料的表格或 Blob 容器。除了個別記錄檔的資料外,本表項目還包含 EventTickCount、DeploymentId、Role 和 RoleInstance 等,可協助您查知資料是由哪個虛擬機器與角色所產生以及何時產生。

     

    診斷資料 說明 位置

    應用程式記錄檔

    您的程式碼呼叫 System.Diagnostics.Trace 類別的方法因而產生的記錄檔。

    WADLogsTable

    事件記錄檔

    這份資料來自於虛擬機器上的 Windows 事件記錄檔。Windows 會將資訊儲存在這些記錄檔中,但是應用程式和服務也可利用這些檔案回報錯誤或記錄資訊。

    WADWindowsEventLogsTable

    效能計數器

    您可以收集虛擬機器上任何既有效能計數器的資料。作業系統會提供效能計數器,其包括記憶體使用狀況和處理器時間等多種統計資料。

    WADPerformanceCountersTable

    基礎結構記錄檔

    這些記錄檔是由診斷基礎結構本身所產生。

    WADDiagnosticInfrastructureLogsTable

    IIS 記錄

    這些記錄檔會記錄 Web 要求。如果您的雲端服務承受巨額流量,這些記錄檔可能會相當冗長,因此您應該只有在必要時才收集和儲存這份資料。

    您可以在 Blob 容器內的 wad-iis-failedreqlogs 底下,從該部署、角色和執行個體的路徑下找到失敗的要求記錄檔。而在 wad-iis-logfiles 底下則可找到完整記錄檔。每個檔案於 WADDirectories 表格中各佔一個項目。

    損毀傾印

    這項資訊提供您的雲端服務處理序 (通常是背景工作角色) 的二進位影像。

    wad-crush-dumps Blob 容器

    自訂記錄檔

     

    您可以從程式碼內指定自訂記錄檔在儲存體帳戶中的位置。例如,您可以指定自訂 Blob 容器。

  4. 若有任何類型的資料遭到截斷,您則可嘗試增加該資料類型的緩衝區大小,或是縮短從虛擬機器傳輸資料到儲存體帳戶的間隔。

  5. (選擇性) 偶爾從儲存體帳戶清除資料以降低整體儲存體成本。

  6. 當您進行完整部署時,在 Azure 中會更新 .wadcfg/.wadcfgx 檔案,而您的雲端服務將反映診斷組態所做的任何變更。相對地,如果您更新現有的部署,在 Azure 中便不會更新 .wadcfg/.wadcfgx 檔案。不過,您仍然可以依照下一節的步驟變更診斷設定。如需有關執行完整部署及更新現有部署的詳細資訊,請參閱<發行 Azure 應用程式精靈>。

  1. 從虛擬機器的捷徑功能表選擇 [檢視診斷資料]。

    在 Azure 虛擬機器中檢視診斷資料

    這會開啟 [診斷摘要] 視窗。

    Azure 虛擬機器診斷摘要

如果您想調查執行中雲端服務的問題,可能就要收集當初部署該角色之前未指定的資料。在此情況下,您可以使用 [伺服器總管] 中的設定,開始收集這類資料。您可以從執行個體或角色的捷徑功能表開啟 [診斷組態] 對話方塊,藉此針對單一執行個體或角色的所有執行個體設定診斷功能。若是設定角色節點,任何變更都將套用到所有執行個體。若是設定執行個體節點,則變更只會套用到該執行個體。

  1. 在 [伺服器總管] 中展開 [雲端服務] 節點,再依序展開各節點以找出您要調查的角色、執行個體或兩者。

    設定診斷功能
  2. 從執行個體節點或角色節點的捷徑功能表選擇 [更新診斷設定],然後選擇您要收集的診斷設定。

    如需組態設定的詳細資訊,請參閱本主題的上一個程序。

  3. 從角色或執行個體的捷徑功能表選擇 [檢視診斷資料]。

    報表隨即顯示可用的資料。

    Visual Studio 中的 Windows Azure 診斷報告

    如果未顯示最新的資料,您可能就必須等到傳輸週期過後。

    選擇 [重新整理] 按鈕可即時更新資料。您也可以開啟雲端服務所使用的儲存體帳戶,透過顯示表格或 Blob 容器查看您收集的資料。您可能需要重新整理表格才能看到最新的資料。

如果您從 [伺服器總管] 中變更資料收集,這些變更會保存到您完全重新部署雲端服務為止。如果您使用預設發佈設定,則不會覆寫這些變更,因為預設發佈設定是為了更新現有的部署,而不是執行完整重新部署。若要確定在部署時會清除設定,請移至發行精靈中的 [進階設定] 索引標籤,並清除 [部署更新] 核取方塊。當您清除該核取方塊來重新部署時,各項設定將回復為 .wadcfg/.wadcfgx 檔案中的設定 (如同透過角色的 [屬性] 編輯器進行設定)。一旦您更新部署,Azure 將保留舊有的設定。

如果您的雲端服務專案發生問題,例如角色一直顯示「忙碌」狀態、重複的回收、或擲回內部伺服器錯誤,您可以使用工具和技術來診斷並修正這些問題。如需常見問題和解決方案的特定範例,以及用來診斷和修正錯誤的概代和工作總覽,請參閱 Windows Azure PaaS 計算診斷資料

如果我的程式碼、組織外部的應用程式或 diagnostics.wadcfg/.wadcfgx 檔案中的診斷組態有衝突,會怎麼樣?是以哪邊的資訊為準?

如果您在部署之前透過角色設計工具設定診斷資料,就會變更 diagnostics.wadcfg/.wadcfgx 檔案。您可以藉由直接編輯該檔案,進一步自訂資料收集設定。Azure 會將這個組態檔複製到 deploymentID、角色名稱和角色執行個體底下名為 wad-control-container 的 Azure Blob 資源。當您的雲端服務啟動診斷監視器時,Azure 即從 Blob 容器載入這個組態檔。您也可以使用 Azure 診斷 API 從程式碼控制診斷功能,而這樣做將會覆寫 diagnostics.wadcfg/.wadcfgx 中的組態設定。不過,只要角色重新啟動,這些執行階段變更隨即遺失。您也可以使用 [伺服器總管] 在執行階段變更診斷組態,或自行撰寫公用程式以直接利用診斷管理 API 來管理診斷組態。由於這些變更會影響 Blob 容器內的組態檔,角色重新啟動時將予保存。如需有關如何使用各類型的組態及其優先順序的詳細資訊,請參閱使用 Azure 診斷程式收集記錄資料

何謂緩衝區大小?緩衝區應該有多大?

每個虛擬機器執行個體的配額會限制本機檔案系統所能儲存的診斷資料量。此外,您還要為每一類型的診斷資料指定可用的緩衝區大小。這個緩衝區大小就像是各種資料類型獨自的配額。只要檢查對話方塊底部,您即可得知整體配額和剩餘的記憶體數量。若您指定了較大的緩衝區或較多類型的資料,就會愈趨近整體配額。您可以藉由修改 diagnostics.wadcfg/.wadcfgx 組態檔變更整體配額。診斷資料將與您的應用程式資料儲存在相同的檔案系統上,所以如果您的應用程式使用了大量磁碟空間,便不該再增加整體診斷配額。

何謂傳輸週期?此週期應該多長?

傳輸週期是指逐次資料擷取的相隔時間。在每個傳輸週期過後,就會將資料從虛擬機器的本機檔案系統移至儲存體帳戶中的表格。若收集的資料量於傳輸週期結束前超過配額,則將捨棄較舊的資料。如果您因為資料超過緩衝區大小或整體配額而造成資料遺失,可能就要縮短傳輸週期。

時間戳記是指哪個時區?

時間戳記是指託管您的雲端服務的資料中心當地時區。

收集診斷資訊時要如何管制成本?

預設值 ([記錄層級] 設為 [錯誤] 且 [傳輸週期] 設為 1 分鐘) 的設計可將成本降至最低。如果您收集更多診斷資料或是縮短傳輸週期,計算成本就會增加。切勿收集多過您所需要的資料量,並記得在您已無須收集資料時停用此功能。您隨時可以再次啟用此功能,甚至是在執行階段,正如上一節所述。

如何收集 IIS 失敗的要求記錄檔?

IIS 依預設並不會收集失敗的要求記錄檔。如果您要設定讓 IIS 收集這類資料,則可編輯 Web 角色的 web.config 檔案。

我無法從 OnStart 之類的 RoleEntryPoint 方法取得追蹤資訊。問題出在哪裡?

您要在 WAIISHost.exe (而非 IIS) 的內容中呼叫 RoleEntryPoint 的方法。因此,一般由 web.config 中的組態資訊啟用追蹤的作法並不適用。若要解決這個問題,請將 .config 檔案加入至您的 Web 角色專案,並比照包含 RoleEntryPoint 程式碼的輸出組件為該檔案命名。在預設的 Web 角色專案中,前述 .config 檔案的名稱將會是 WAIISHost.exe.config。接著將下列幾行文字加入至該檔案:

<system.diagnostics>
    <trace>
        <listeners>
            <add name “AzureDiagnostics” type=”Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener”>
                <filter type=”” />
            </add>
        </listeners>
    </trace>
</system.diagnostics>

輸入之後,將 [屬性] 視窗中的 [複製到輸出目錄] 屬性設定為 [永遠複製]。

Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2015 Microsoft