导出 (0) 打印
全部展开

初始化或更改 Windows Azure 诊断配置

更新时间: 2013年12月

可以通过以下方法收集诊断数据:将 Windows Azure 诊断模块导入到服务模型中,然后配置从中收集诊断数据的数据源。诊断监视器在 Windows Azure 和 Windows Azure 计算模拟器中运行以收集角色实例的诊断数据。如果诊断模块已导入到角色的服务模型中,在角色实例启动时,将自动启动诊断监视器。必须在诊断监视器配置中添加数据源才能收集诊断数据。如果未明确配置诊断监视器,在角色启动时,将使用默认配置。默认情况下,仅将某些可用的数据源添加到诊断监视器中,您必须使用 diagnostics.wadcfg 文件配置其他数据源的集合。将在角色实例中收集并存储诊断数据,但不会永久保存到存储中,除非在 ServiceConfiguration.cscfg 文件中指定了存储帐户。在将您的应用程序部署到 Windows Azure 后,您还可以从在 Windows Azure 外部运行的应用程序中远程更改诊断监视器配置。有关在您的应用程序中启用诊断的详细步骤,请参阅如何在云服务中启用诊断

要收集诊断数据,您必须在服务模型中为要从中收集诊断数据的每个角色导入诊断模块。可通过在 ServiceDefinition.csdef 文件中添加 Import 元素来导入该模块。下面的示例说明了为 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 设置云服务

默认情况下,不会将诊断数据永久保存到存储中。要将诊断数据传输到存储,必须在 ServiceConfiguration.cscfg 文件中定义一个连接字符串。下面的示例说明了如何定义连接字符串以将数据传输到 Windows 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>

AccountNameAccountKey 值位于 Windows Azure 管理门户中的存储帐户仪表板上的“管理访问密钥”下面。连接字符串的协议必须为 https

默认情况下,仅将某些可用的数据源添加到诊断监视器中,您必须添加其他数据源以收集特定类型的诊断数据。有关可以配置应用程序以收集的诊断数据类型的信息,请参阅Diagnostics Data Sources

可以通过以下方法收集诊断数据:将诊断模块导入到服务模型中,然后配置从中收集诊断数据的数据源。必须在诊断监视器配置中添加数据源才能收集诊断数据。可以通过几种方法配置诊断;在部署时使用 diagnostics.wadcfg 配置文件是管理角色范围内的配置的首选方法。有关详细信息,请参阅Diagnostics Configuration Mechanisms and Order of Precedence

在部署云服务后,您还可以从在 Windows Azure 外部运行的其他应用程序中远程更改您的应用程序中的诊断监视器配置。

可以通过编程方式配置诊断监视器,不过,您可以使用 Windows Azure SDK 通过 XML 配置文件 (diagnostics.wadcfg) 来配置诊断。与在 OnStart 方法中编写代码相比,这种方法具有很多优点:

  1. 在运行 OnStart 方法之前启动诊断,以便捕获和记录启动任务中的错误。

  2. 在重新启动后,将保留在运行时对配置进行的任何更改。

  3. 诊断配置更改不需要重新生成代码。

  4. 您可以使用特定配置自动启动诊断监视器,而无需编写额外的代码(这可能引发异常而导致角色无法启动)。

对于 Web 角色,diagnostics.wadcfg 配置文件位于角色的根目录下面的 bin 目录中。对于辅助角色,diagnostics.wadcfg 配置文件位于角色的根目录中。在导入诊断模块时,如果这两个位置之一中包含配置文件,诊断监视器将使用配置文件配置设置,而不是使用默认设置。在部署 Web 或辅助角色时,diagnostics.wadcfg 文件中的配置信息将写入到存储帐户的 wad-control-container 容器中。有关使用诊断配置文件的详细信息,请参阅使用 Windows Azure 诊断配置文件

可以将 Start 方法与 DiagnosticMonitorConfiguration 一起使用,以便在角色的 OnStart 方法中设置诊断配置。这种方法对新部署非常有效,但对更新部署无效,因此最好避免使用。

在部署云服务后,您可以通过在 Windows Azure 外部的应用程序中运行的代码使用 DeploymentDiagnosticManager 类远程更改诊断监视器配置。从该类中,您可以修改一个或多个角色实例的诊断监视器。也可以使用 RoleInstanceDiagnosticManager 类仅更改一个角色实例的诊断监视器配置。有关详细信息,请参阅远程更改诊断监视器配置

另请参阅

显示:
© 2014 Microsoft