首页 文章

基于xml的配置的Azure诊断问题

提问于
浏览
1

我花了一整天时间尝试设置Windows Azure诊断模块 . 我使用diagnostics.wadcfg为worker和web角色设置了WAD . 此wadcfg文件正确复制到bin文件夹 . 这是我的WorkerRoleWebRole的wadcfg文件(更明确的问题链接) . 对于诊断配置初始化,我使用非常简单和通用的调用:just

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配置:WorkerRoleWebRole .

我缺少什么以及通过diagnostics.wadcfg初始化Diagnostic的正确方法是什么?

为什么存储配置与diagnostics.wadcfg格式不同?

我应该在监视器初始化后运行 DiagnosticMonitor.SetCurrentConfiguration() 以将当前配置存储在Blob中吗?

1 回答

  • 4

    如果要使用diagnostics.wadcfg(我的首选角色实例默认方法),那么您应该从OnStart()中删除所有代码 . 如果你只是传递默认值,实际上没有理由再调用Start . 即使您什么也不做(假设您包含插件),代理将自动以默认值启动 .

    此外,除非您特别需要超过4GB的磁盘配额空间,否则没有理由再设置LocalResource . 在这种情况下,您可以设置更大的值 . 默认情况下,诊断代理将为自己分配4GB的本地资源 .

    要使用diagnostics.wadcfg,只需将其标记为内容或复制本地(确保它已打包) . 它需要位于辅助角色的根(Worker.cs旁边)或Web角色的bin目录中 . 假设您已正确配置它,如果它尚未在blob存储中找到一组已配置的值,它将使用这些值作为默认值 .

    三个音符:

    • 您不能在此处使用自定义性能计数器(除非它们已安装在计算机上) . 代理程序在大多数将安装自定义计数器的启动脚本之前运行,因此如果在diagnostics.wadcfg中配置自定义计数器,则为时太晚而且会失败 .

    • 小心您的配额号码 . 如果您不小心为数据源分配了超过4GB的内容(除非您更改配额限制),则内容将失败 .

    • Diagnostics.wadcfg用作最后一个默认值 . 如果您设置一个值(您正在以编程方式执行),它将首先使用该值 . 如果它在blob存储中找到了一个值(想想重启),它就会使用它 . 它仅在未设置任何内容时有效 - 没有默认值 .

相关问题