匯出 (0) 列印
全部展開

初始化或變更 Azure 診斷組態

更新日期: 2014年12月

若要收集診斷資料,請將 Windows Azure 診斷模組匯入服務模型中,然後設定收集診斷資料的資料來源。診斷監視器會在 Windows Azure 和 Microsoft Azure 計算模擬器 中執行,以收集角色執行個體的診斷資料。如果診斷模組已經匯入角色的服務模型中,則當角色執行個體啟動時,診斷監視器就會自動啟動。資料來源必須加入至診斷監視器的組態中,才能收集診斷資料。如果您未明確設定診斷監視器,則當角色啟動時,將會使用預設組態。預設只有部分可用資料來源會加入至診斷監視器,您必須使用 diagnostics.wadcfg 檔案設定其他資料來源的收集。診斷資料將會收集及儲存在角色執行個體上,但是將不會保存到儲存體,除非您在 ServiceConfiguration.cscfg 檔案中指定儲存體帳戶。一旦您將應用程式部署到 Windows Azure 之後,您也可以在遠端從 Windows Azure 外部執行的應用程式變更診斷監視器組態。如需有關在應用程式中啟用診斷的詳細步驟,請參閱<如何啟用雲端服務中的診斷>。

若要收集診斷資料,您必須針對收集診斷資料的每個來源角色,匯入服務模型中的診斷模組。此模組的匯入方式是將 Import 元素加入至 ServiceDefinition.csdef 檔案。下列範例會示範為 Web 角色定義的 Import 元素:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyHostedService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WebRole name="WebRole1">
    <!--<Sites> ... </Sites> -->
    <!-- <Endpoints> ... </Endpoints> -->
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>

如需有關定義服務定義檔和服務組態檔的詳細資訊,請參閱<Windows Azure 結構描述參考>。如需有關針對託管服務定義服務模型的詳細資訊,請參閱<設定 Azure 的雲端服務>。

診斷資料預設不會保存到儲存體。若要將診斷資料傳送到儲存體,您必須在 ServiceConfiguration.cscfg 檔案中定義連接字串。下列範例顯示如何定義連接字串,以便將資料傳輸至 Microsoft Azure 儲存體模擬器:

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="MyHostedService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">
  <Role name="WebRole1">
    <Instances count="1" />
    <ConfigurationSettings>
    <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

如果您想要在 Windows Azure 中使用儲存體帳戶,您必須變更連接字串,使其包含帳戶名稱和帳戶金鑰:


<ConfigurationSettings>
   <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>"/>
</ConfigurationSettings>

Windows Azure 管理入口網站的儲存體帳戶儀表板中,可以在 [管理存取金鑰] 底下找到 AccountNameAccountKey 值。連接字串的通訊協定必須為 https

預設只會將部分可用資料來源加入至診斷監視器,您必須加入其他資料來源,才能收集特定類型的診斷資料。如需有關您可以設定應用程式收集之診斷資料類型的詳細資訊,請參閱<診斷資料來源>。

若要收集診斷資料,請將診斷模組匯入服務模型中,然後設定收集診斷資料的資料來源。資料來源必須加入至診斷監視器的組態中,才能收集診斷資料。有幾個機制可用來設定診斷,在部署時使用 diagnostics.wadcfg 組態檔是管理整個角色組態的偏好機制。如需詳細資訊,請參閱診斷組態機制和優先順序

當您部署雲端服務之後,您也可以在遠端從 Windows Azure 外面執行的另一個應用程式來變更應用程式中的診斷監視器組態。

在 1.2 版中,您可以用程式設計方式設定診斷監視器。此功能在 1.3 版和更新版本中已過時。在 1.2、1.3 和更新版本中,Windows Azure SDK 讓您能夠改用 XML 組態檔 (diagnostics.wadcfg) 來設定診斷。這個方法有許多優點,勝過於在 OnStart 方法中撰寫程式碼:

  1. 診斷在 OnStart 方法執行之前開始,以便可以捕捉及記錄啟動工作的錯誤。

  2. 在執行階段對組態所做的所有變更都會在重新啟動之後保留下來。

  3. 診斷組態變更不需要重建程式碼。

  4. 您可以使用特定的組態來自動啟動診斷監視器,而不需要額外的程式碼 (額外的程式碼可能會造成例外狀況,因而阻止您的角色啟動)。

若是 Web 角色,diagnostics.wadcfg 組態檔會放在角色根目錄底下的 bin 目錄中。若是背景工作角色,diagnostics.wadcfg 組態檔會放在角色的根目錄中。如果在匯入診斷模組時,上述其中一個位置已經有組態檔存在,則診斷監視器會使用該組態檔進行設定,而不是使用預設值。在部署您的 Web 角色或背景工作角色時,diagnostics.wadcfg 檔案中的組態資訊會寫入您的儲存體帳戶中的 wad-control-container 容器。如需有關使用診斷組態檔的詳細資訊,請參閱<使用 Azure 診斷組態檔>。

具有 DiagnosticMonitorConfigurationStart 方法可用來在您的角色的 OnStart 方法中設定診斷組態。這個方法對新的部署有效,但是對更新部署無效,因此最好避免使用。

note附註
這適用於 Azure SDK 2.4 和以下版本。

當您部署雲端服務之後,您也可以在遠端使用 DeploymentDiagnosticManager 類別從 Windows Azure 外面的應用程式中執行的程式碼來變更診斷監視器的組態。您可以從這個類別修改一個或多個角色執行個體的診斷監視器。您也可以使用 RoleInstanceDiagnosticManager 類別,只對一個角色執行個體變更診斷監視器的組態。如需詳細資訊,請參閱從遠端變更診斷監視器組態

note附註
這適用於 Azure SDK 2.4 和以下版本。

另請參閱

顯示:
© 2015 Microsoft