在不使用.NET的Windows Azure中启用诊断

时间:2012-09-07 10:35:04

标签: azure azure-diagnostics

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

由于我使用的是python而不是.NET,我实际配置它的唯一方法是通过配置文件。

在我的配置文件下面:

ServiceDefinition.csdef中

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

ServiceConfiguration.Cloud.cscfg

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

diagnostics.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>

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

您是否在Windows Azure Blob存储中创建了诊断配置XML,该存储在* .Diagnostics.ConnectionString中配置。这是一个检查,表明Azure角色中的诊断组件能够读取提供的配置,并可以在目标blob stroage上创建配置XML(将使用相同的Azure存储来编写日志Azure表存储)。请验证。

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

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

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

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