Windows Azure 诊断 (WAD) 扩展配置架构版本和历史记录

本文提供了作为 Microsoft Azure SDK 的一部分提供的 Windows Azure 诊断扩展 (WAD) 架构版本的历史记录。

Azure SDK 和诊断版本随附图

Azure SDK 版本 诊断扩展版本 型号
1.x 1.0 插件
2.0 - 2.4 1.0 插件
2.5 1.2 扩展
2.6 1.3 "
2.7 1.4 "
2.8 1.5 "
2.9 1.6 "
2.96 1.7 "
2.96 1.8 "
2.96 1.8.1 "
2.96 1.9 "
2.96 1.11 "
2.96 1.21 "

Azure 诊断 1.0 版本最初随附于插件模型中,也就是说,安装 Azure SDK 时,便可获取附带的 Azure 诊断版本。

从 SDK 2.5(诊断版本 1.2)开始,Azure 诊断随附于扩展模型中。 使用新功能的工具仅在较新版本的 Azure SDK 中可用,但使用 Azure 诊断的任何服务都将直接从 Azure 选取最新的附带版本。 例如,仍在使用 SDK 2.5 的任何用户在使用较新功能时都将加载上表中显示的最新版本。

架构索引

不同版本的 Azure 诊断使用不同的配置架构。 架构 1.0 和 1.2 已弃用。 有关版本 1.3 及更高版本的详细信息,请参阅诊断 1.3 及更高版本的配置架构

版本历史记录

诊断扩展 1.11

添加了对 Azure Monitor 接收器的支持。 此接收器仅适用于性能计数器。 允许将在 VM、VMSS 或云服务上收集的性能计数器作为自定义指标发送到 Azure Monitor。 Azure Monitor 接收器支持:

  • 通过 Azure Monitor 指标 API 检索发送到 Azure Monitor 的所有性能计数器。
  • 通过 Azure Monitor 中新的统一警报体验根据发送到 Azure Monitor 的所有性能计数器发出警报
  • 将性能计数器中的通配符运算符视为指标上的“实例”维度。 例如,如果你收集了“LogicalDisk(*)/DiskWrites/sec”计数器,则可以根据“实例”维度进行筛选和拆分,以基于每个逻辑磁盘(C:、D: 等)的磁盘写入次数/秒进行绘图或发出警报

将 Azure Monitor 定义为诊断扩展配置中的新接收器

"SinksConfig": {
    "Sink": [
        {
            "name": "AzureMonitorSink",
            "AzureMonitor": {}
        },
    ]
}
<SinksConfig>  
  <Sink name="AzureMonitorSink">
      <AzureMonitor/>
  </Sink>
</SinksConfig>

注意

为经典 VM 和经典云服务配置 Azure Monitor 接收器需要在诊断扩展的专用配置中定义更多参数。

有关更多详细信息,请参阅详细的诊断扩展架构文档

接下来,可以将性能计数器配置为路由到 Azure Monitor 接收器。

"PerformanceCounters": {
    "scheduledTransferPeriod": "PT1M",
    "sinks": "AzureMonitorSink",
    "PerformanceCounterConfiguration": [
        {
            "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
            "sampleRate": "PT1M",
            "unit": "percent"
        }
    ]
},
<PerformanceCounters scheduledTransferPeriod="PT1M", sinks="AzureMonitorSink">  
  <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT1M" unit="percent" />  
</PerformanceCounters>

诊断扩展 1.9

添加了 Docker 支持。

诊断扩展 1.8.1

可以在专用配置中指定 SAS 令牌而非存储帐户密钥。如果提供了 SAS 令牌,则会忽略存储帐户密钥。

{
    "storageAccountName": "diagstorageaccount",
    "storageAccountEndPoint": "https://core.chinacloudapi.cn",
    "storageAccountSasToken": "{sas token}",
    "SecondaryStorageAccounts": {
        "StorageAccount": [
            {
                "name": "secondarydiagstorageaccount",
                "endpoint": "https://core.chinacloudapi.cn",
                "sasToken": "{sas token}"
            }
        ]
    }
}
<PrivateConfig>
    <StorageAccount name="diagstorageaccount" endpoint="https://core.chinacloudapi.cn" sasToken="{sas token}" />
    <SecondaryStorageAccounts>
        <StorageAccount name="secondarydiagstorageaccount" endpoint="https://core.chinacloudapi.cn" sasToken="{sas token}" />
    </SecondaryStorageAccounts>
</PrivateConfig>

诊断扩展 1.8

向 PublicConfig 中添加了 StorageType。 StorageType 可以是 TableBlobTableAndBlobTable 是默认值。

{
    "WadCfg": {
    },
    "StorageAccount": "diagstorageaccount",
    "StorageType": "TableAndBlob"
}
<PublicConfig>
    <WadCfg />
    <StorageAccount>diagstorageaccount</StorageAccount>
    <StorageType>TableAndBlob</StorageType>
</PublicConfig>

诊断扩展 1.7

添加了路由到 EventHub 的功能。

诊断扩展 1.5

添加了 sinks 元素和将诊断数据发送到 Application Insights 的功能,因此可以更轻松地在应用程序以及系统和基础结构级别诊断问题。

Azure SDK 2.6 和诊断扩展 1.3

对 Visual Studio 中的云服务项目进行了以下更改。 (这些更改同样适用于更高版本的 Azure SDK。)

  • 本地模拟器现在支持诊断。 此更改意味着,在 Visual Studio 中开发和测试时,可以收集诊断数据并确保应用程序正在创建相应的跟踪。 使用 Azure 存储模拟器在 Visual Studio 中运行云服务项目时,连接字符串 UseDevelopmentStorage=true 可启用诊断数据收集。 所有诊断数据都在“(开发存储)”存储帐户中收集。
  • 诊断存储帐户连接字符串 (Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString) 将再次存储在服务配置 (.cscfg) 文件中。 在 Azure SDK 2.5 中,在 diagnostics.wadcfgx 文件中指定诊断存储帐户。

连接字符串在 Azure SDK 2.4 及更早版本中的工作方式与它在 Azure SDK 2.6 中的工作方式之间有一些明显的差异。

  • 在 Azure SDK 2.4 及更早版本中,诊断插件在运行时使用连接字符串获取用于传输诊断日志的存储帐户信息。
  • 在 Azure SDK 2.6 及更高版本中,Visual Studio 在发布过程中通过诊断连接字符串使用相应的存储帐户信息来配置诊断扩展。 借助连接字符串,可以为 Visual Studio 在发布时使用的不同服务配置定义不同的存储帐户。 但是,因为诊断插件已不再可用(在 Azure SDK 2.5 之后),.cscfg 文件本身不能启用诊断扩展。 必须通过工具(如 Visual Studio 或 PowerShell)单独启用扩展。
  • 为了简化使用 PowerShell 配置诊断扩展的过程,Visual Studio 的程序包输出还包含每个角色的诊断扩展的公共配置 XML。 Visual Studio 使用诊断连接字符串来填充公共配置中存在的存储帐户信息。 公共配置文件在“扩展”文件夹中创建,并遵循模式 PaaSDiagnostics.<RoleName>.PubConfig.xml。 任何基于 PowerShell 的部署都可以使用此模式将每个配置映射到角色。
  • .cscfg 文件中的连接字符串还由 Azure 门户用于访问诊断数据,使这些数据可以显示在“监视”选项卡中。 需要连接字符串才能配置服务,从而在门户中显示详细监视数据。

将项目迁移到 Azure SDK 2.6 和更高版本

从 Azure SDK 2.5 迁移到 Azure SDK 2.6 或更高版本时,如果在 .wadcfgx 文件中指定了诊断存储帐户,则该帐户将继续保留在那里。 要针对不同存储配置充分使用不同存储帐户的灵活性,必须手动将连接字符串添加到项目。 如果将项目从 Azure SDK 2.4 或更低版本迁移到 Azure SDK 2.6,系统将保留诊断连接字符串。 但是,请注意 Azure SDK 2.6 中处理连接字符串的方式的更改,如上一部分中所述。

Visual Studio 如何确定诊断存储帐户

  • 如果在 .cscfg 文件中指定了诊断连接字符串,则 Visual Studio 在发布时以及在打包过程中生成公共配置 xml 文件时会使用它来配置诊断扩展。
  • 如果未在 .cscfg 文件中指定任何诊断连接字符串,则 Visual Studio 在发布时以及在打包过程中生成公共配置 xml 文件时将回退到使用 .wadcfgx 文件中指定的存储帐户来配置诊断扩展。
  • .cscfg 文件中的诊断连接字符串优先于 .wadcfgx 文件中的存储帐户。 如果在 .cscfg 文件中指定了诊断连接字符串,则 Visual Studio 使用该字符串,而忽略 .wadcfgx 中的存储帐户。

“更新开发存储连接字符串...”复选框的作用

“在发布到 Azure 时使用 Azure 存储帐户凭据更新诊断和缓存的开发存储连接字符串”复选框提供了使用发布过程中指定的 Azure 存储帐户更新任何开发存储帐户连接字符串的简便方法

例如,假设你选中此复选框,并且诊断连接字符串指定 UseDevelopmentStorage=true。 将项目发布到 Azure 时,Visual Studio 将自动使用发布向导中指定的存储帐户更新诊断连接字符串。 但是,如果已将实际的存储帐户指定为诊断连接字符串,则将改用该帐户。

Azure SDK 2.4 及更早版本与 Azure SDK 2.5 及更高版本之间的诊断功能差异

如果要将项目从 Azure SDK 2.4 升级到 Azure SDK 2.5 或更高版本,则应考虑到以下诊断功能差异。

  • 配置 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 SDK 2.6 的过程中传输。