我花了一整天时间尝试设置Windows Azure诊断模块。 我使用diagnostics.wadcfg为worker和web角色设置了WAD。此wadcfg文件正确复制到bin文件夹。这是WorkerRole和WebRole的wadcfg文件(链接更明确的问题)。对于诊断配置初始化,我使用非常简单和通用的调用:只需
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
在WorkerRole和WebRole中的(两个类 - RoleEntryPoint的后代)OnStart()
正确设置连接字符串,服务配置中的两个角色部分都包含LocalResource部分
<LocalResources>
<LocalStorage name="DiagnosticStore" sizeInMB="5000" cleanOnRoleRecycle="false"/>
</LocalResources>
不幸的是,这不符合我的预期:没有发送IIS日志,没有自定义目录内容发送到blob,性能计数器和WindowsEventLogs一旦正确发货,但随后暂停(由于初始发送很少,不再添加行)
另外wad-control-container对两个角色都有非常奇怪的xml配置:WorkerRole和WebRole。
我缺少什么以及通过diagnostics.wadcfg初始化诊断的正确方法是什么?
为什么存储配置与diagnostics.wadcfg格式不同?
我应该在监视器初始化之后运行DiagnosticMonitor.SetCurrentConfiguration()
以将当前配置存储在Blob中吗?
答案 0 :(得分:4)
如果要使用diagnostics.wadcfg(我的首选角色实例默认方法),那么您应该从OnStart()中删除所有代码。如果你只是传递默认值,实际上没有理由再调用Start。即使您没有做任何事情,代理也会自动以默认值启动(假设您包含插件)。
此外,除非您特别需要超过4GB的磁盘配额空间,否则没有理由再设置LocalResource。在这种情况下,您可以设置更大的值。默认情况下,诊断代理将为自己分配4GB的本地资源。
要使用diagnostics.wadcfg,只需将其标记为内容或复制本地(确保将其打包)。它需要位于辅助角色的根(Worker.cs旁边)或Web角色的bin目录中。假设您已正确配置它,如果它尚未在blob存储中找到一组已配置的值,它将使用这些值作为默认值。
三个注释: