导出 (0) 打印
全部展开

使用 Azure 诊断配置文件

更新时间: 2014年8月

可以通过以下方法收集诊断数据:将诊断模块导入到服务模型中,然后配置从中收集诊断数据的数据源。必须在诊断监视器配置中添加数据源才能收集诊断数据。可以通过编程方式配置诊断监视器,不过,你可以使用 Windows Azure SDK 通过 XML 配置文件 (diagnostics.wadcfg) 来配置诊断。与编写代码相比,这种方法具有很多优点:

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

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

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

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

默认诊断行为是收集基础结构和跟踪日志,而不将数据传输到存储。如果要收集默认数据以外的数据,你必须配置诊断监视器以执行此操作。

本主题介绍了如何创建 diagnostics.wadcfg XML 配置文件。有关在你的应用程序中配置诊断数据源、将诊断数据永久保存到存储中以及在存储中查看该数据的完整过程的详细信息,请参阅启用 Windows Azure 诊断功能

下面的列表列出了不同角色类型的诊断配置文件的位置:

  • 对于辅助角色,配置文件位于角色的根目录中。

  • 对于 Web 角色,配置文件位于角色的根目录下面的 bin 目录中。

在导入诊断模块时,如果这两个位置之一中包含配置文件,诊断监视器将使用配置文件配置设置,而不是使用默认设置。

diagnostics.wadcfg 配置文件是一个符合 %ProgramFiles%\Microsoft SDKs\Windows Azure\<SDK>\<VersionNumber>\schemas\DiagnosticsConfig201010.xsd 中的架构的 XML 文档,其中 <SDK> 是你使用的开发人员 SDK,<VersionNumber> 是版本。有关该 XML 文件的架构的详细信息,请参阅 Azure 诊断 1.0 配置架构

下面的示例说明了一个示例 diagnostics.wadcfg 配置文件。该配置文件收集所有类型的诊断信息,请务必在你的应用程序中删除不希望收集的数据源。

<?xml version="1.0" encoding="utf-8" ?>
<DiagnosticMonitorConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"
      configurationChangePollInterval="PT1M"
      overallQuotaInMB="4096">

  <DiagnosticInfrastructureLogs bufferQuotaInMB="0"
     scheduledTransferLogLevelFilter="Verbose"
     scheduledTransferPeriod="PT30M" />

  <Logs bufferQuotaInMB="0"
     scheduledTransferLogLevelFilter="Verbose"
     scheduledTransferPeriod="PT30M" />

  <Directories bufferQuotaInMB="0"
     scheduledTransferPeriod="PT30M">  
    <!-- FailedRequestLogs and IISLogs are only relevant to Web roles -->
    <CrashDumps container="wad-crash-dumps" directoryQuotaInMB="0" />
    <FailedRequestLogs container="wad-frq" directoryQuotaInMB="0" />
    <IISLogs container="wad-iis" directoryQuotaInMB="0" />
    <DataSources>
      <DirectoryConfiguration container="diagnostics-custom-logs" directoryQuotaInMB="1024">
        <LocalResource name="MyCustomLogs" relativePath="."/>
      </DirectoryConfiguration>     
    </DataSources>
  </Directories>

  <PerformanceCounters bufferQuotaInMB="0" scheduledTransferPeriod="PT30M">
    <PerformanceCounterConfiguration counterSpecifier="\Memory\Available Bytes" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT30S" />
    <!-- These three elements are only relevant to Web roles -->
    <PerformanceCounterConfiguration counterSpecifier="\Process(w3wp)\% Processor Time" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(w3wp)\Private Bytes" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(w3wp)\Thread Count" sampleRate="PT30S" />
    <!-- These three elements are only relevant to Worker roles -->
    <!-- <PerformanceCounterConfiguration counterSpecifier="\Process(WaWorkerHost)\% Processor Time" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(WaWorkerHost)\Private Bytes" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\Process(WaWorkerHost)\Thread Count" sampleRate="PT30S" /> -->
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Interop(_Global_)\# of marshalling" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Loading(_Global_)\% Time Loading" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR LocksAndThreads(_Global_)\Contention Rate / sec" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Memory(_Global_)\# Bytes in all Heaps" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Networking(_Global_)\Connections Established" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Remoting(_Global_)\Remote Calls/sec" sampleRate="PT30S" />
    <PerformanceCounterConfiguration counterSpecifier="\.NET CLR Jit(_Global_)\% Time in Jit" sampleRate="PT30S" />
  </PerformanceCounters>

  <WindowsEventLog bufferQuotaInMB="0"
     scheduledTransferLogLevelFilter="Verbose"
     scheduledTransferPeriod="PT30M">
    <DataSource name="Application!*" />
    <DataSource name="System!*" />
  </WindowsEventLog>

</DiagnosticMonitorConfiguration>

下面简要说明了用于配置诊断数据源的 XML 元素:

  • DiagnosticMonitorConfiguration – 包含存储日志记录和诊断信息的标准固定数据缓冲区集的定义。有关详细信息,请参阅DiagnosticMonitorConfiguration

  • DiagnosticInfrastructureLogs – 包含数据缓冲区大小以及诊断基础结构日志级别和数据传输频率的定义。有关详细信息,请参阅DiagnosticInfrastructureLogs

  • Logs – 包含数据缓冲区大小以及基本 Windows Azure 日志级别和数据传输频率的定义。有关详细信息,请参阅Logs

  • Directories – 包含路径、数据缓冲区大小以及你定义的基于文件的日志级别和数据传输频率的定义。该元素包含特殊目录(CrashDumps、FailedRequestLogs 和 IISLogs)和你创建的目录 (DataSources) 的定义。有关详细信息,请参阅Directories

  • PerformanceCounters – 包含计数器配置、数据缓冲区大小以及性能计数器数据级别和数据传输频率的定义。有关详细信息,请参阅PerformanceCounters

    note备注
    如果使用启动任务安装自定义性能计数器,则无法在配置文件中添加计数器定义,因为诊断监视器尝试在你创建之前使用计数器。

  • WindowsEventLog – 包含日志、数据缓冲区大小以及 Windows 事件日志级别和数据传输频率的定义。有关详细信息,请参阅WindowsEventLog

显示:
© 2014 Microsoft