1

我正在使用 Windows Azure 来托管我的 python 项目,并且我正在尝试启用诊断但没有好的结果。

因为我使用的是 python 而不是 .NET,所以我可以实际配置它的唯一方法是通过配置文件。

在我的配置文件下面:

服务定义.csdef

...
<Imports>
    <Import moduleName="Diagnostics" />
</Imports>
...

服务配置.Cloud.cscfg

....
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=<my-account-name>;AccountKey=<my-account-key"/>
....

诊断.wadcfg

<DiagnosticMonitorConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"
      configurationChangePollInterval="PT10M"
      overallQuotaInMB="1200">

   <DiagnosticInfrastructureLogs bufferQuotaInMB="100"
      scheduledTransferLogLevelFilter="Warning"
      scheduledTransferPeriod="PT5M" />

   <Logs bufferQuotaInMB="200"
      scheduledTransferLogLevelFilter="Warning"
      scheduledTransferPeriod="PT5M" />

   <Directories bufferQuotaInMB="600" 
      scheduledTransferPeriod="PT5M">

      <CrashDumps container="wad-crash-dumps" directoryQuotaInMB="200" />
      <FailedRequestLogs container="wad-frq" directoryQuotaInMB="200" />
      <IISLogs container="wad-iis" directoryQuotaInMB="200" />
   </Directories>
   <WindowsEventLog bufferQuotaInMB="200"
      scheduledTransferLogLevelFilter="Warning"
      scheduledTransferPeriod="PT5M">

      <DataSource name="System!*" />
   </WindowsEventLog>
</DiagnosticMonitorConfiguration>

在诊断管理器中,我实际上看不到任何数据。

谢谢。

4

1 回答 1

1

请问您的 diagnostics.wadcfg 位于何处?对于常规工作角色,diagnostics.wadcfg 必须位于根文件夹中,并且因为您的项目中没有工作角色模块,所以角色文件夹体系结构的位置非常重要。确保您的 Python 应用程序中的文件夹结构与常规工作角色完全相同,然后将 diagnostics.wadcfg 放入角色根文件夹中。(将该信息添加回您的问题以进行验证)

您是否看到在 *.Diagnostics.ConnectionString 中配置的 Windows Azure Blob 存储中创建了诊断配置 XML。这是一项检查,表明 Azure 角色中的诊断组件能够读取提供的配置,并可以在目标 blob 存储中创建配置 XML(相同的 Azure 存储将用于写入日志 Azure 表存储)。请核实。

最后,您的 diagnostics.wadcfg 需要做更多的工作。由于这是一个非 .net 辅助角色,您已经配置了 IIS 日志记录(您真的有 IIS 在辅助角色中运行吗?)并且还安排系统事件日志传输“仅警告”,因此如果没有警告。最后将日志传输时间设置为 5 分钟,这在测试期间很长。

我可以建议如下测试诊断是否有效:

  • 如果没有运行 Azure VM 的 IIS,请删除 IIS 日志
  • 将事件日志 DataSource 从 System!* 替换为 Application!* 并将过滤器设置为 Info 级别
  • 将日志传输时间更改为不到一分钟
  • 使用连接到实际 Azure 存储的诊断连接字符串在 Development Fabric 中运行完全相同的代码。
  • 在您的计算机中添加自定义事件日志,并查看它们是否在时限内传输到 Azure 表存储并创建特定表

以上应该可以帮助您解决问题。

于 2012-09-07T16:23:54.450 回答