4

我试图了解在 Windows Azure 中配置诊断的各种方法。到目前为止,我已经设置了 Azure 正确使用的 diagnostics.wadcfg,因为我在 wad-control-container 中的 Diagnostics 存储的 xml blob 中检索其内容(并且表以正确的刷新率更新)。

现在我想覆盖 cscfg 中的一些字段,以延长所有实例的日志传输周期,例如(无需更新每个 wad-control-container 文件,如果实例回收 btw 将被删除) . 因此,在我的 WebRole.Run() 中,我从 RoleEnvironment.GetConfigurationSettingValue() 获取一个参数并尝试将其应用于当前配置;但我的问题是我从 DiagnosticMonitor.GetDefaultInitialConfiguration() 读取的值与我的 diagnostics.wadcfg 的内容不对应,并且在那里设置新值似乎没有任何效果。

谁能解释从 diagnostics.wadcfg 获取的内容与您可以在运行时设置的值之间的关系?

谢谢

4

3 回答 3

3

GetDefaultInitialConfiguration() 不会返回您当前的设置,因为它的名称表明它采用默认配置。如果需要采用现有配置,则必须使用GetCurrentConfiguration方法。

但是,如果您只需要促进转移,您可以使用例如Cerebrata 的 Azure 诊断管理器来快速启动您的角色的按需转移。

您还可以将 Windows Azure 诊断管理 cmdlet 用于 powershell。看看这篇文章

希望这可以帮助!

于 2012-03-20T09:59:11.953 回答
2

为了利用 wadcfg 文件中的值,可以使用以下代码访问当前的 DiagnosticsMonitorConfiguration:

var cloudStorageAccount = CloudStorageAccount.Parse(
            RoleEnvironment.GetConfigurationSettingValue(WADStorageConnectionString));
var roleInstanceDiagnosticManager = cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
            RoleEnvironment.DeploymentId,
            RoleEnvironment.CurrentRoleInstance.Role.Name,
            RoleEnvironment.CurrentRoleInstance.Id);
var dmc = roleInstanceDiagnosticManager.GetCurrentConfiguration();
// Set different logging settings
dmc.Logs....
dmc.PerformanceCounters....
// don't forget to update
roleInstanceDiagnosticManager.SetCurrentConfiguration(dmc);
于 2012-11-10T04:18:16.083 回答
0

Boris Lipshitz 的代码现在不起作用(Windows Azure 诊断 (SDK 2.0) 中的重大更改):“DeploymentDiagnosticManager 构造函数现在接受到存储帐户的连接字符串,而不是 CloudStorageAccount 对象”。

SDK 2.0+ 的更新代码:

    var roleInstanceDiagnosticManager = new RoleInstanceDiagnosticManager(
// Add StorageConnectionString to your role settings for this to work
                CloudConfigurationManager.GetSetting("StorageConnectionString"), 
                RoleEnvironment.DeploymentId,
                RoleEnvironment.CurrentRoleInstance.Role.Name,
                RoleEnvironment.CurrentRoleInstance.Id);
    var dmc = roleInstanceDiagnosticManager.GetCurrentConfiguration();
    // Set different logging settings
    dmc.Logs....
    dmc.PerformanceCounters....
    // don't forget to update
    roleInstanceDiagnosticManager.SetCurrentConfiguration(dmc)
于 2014-01-29T11:45:41.850 回答