无法捕获Azure Web角色的性能计数器

时间:2010-10-02 15:11:20

标签: performancecounter diagnostics azure-storage

我正在尝试在Azure WebRole上捕获以下PerformanceCounters:

private string[] perfCounters = { @"\Processor(_Total)\% Processor Time", 
                                @"\ASP.NET Applications(__Total__)\Requests/Sec", 
                                @"\Memory\Available Bytes", 
                                @"\ASP.NET\Request Execution Time", 
                                @"\ASP.NET\Requests Queued"};

我在我的WebRole.cs中有以下代码来启用这些perf计数器的捕获:

    DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();

    int loggingInterval = Int32.Parse(RoleEnvironment.GetConfigurationSettingValue("loggingInterval"));
    config.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(loggingInterval);

    foreach (String s in perCounters)
    {
      PerformanceCounterConfiguration procTimeConfig = new PerformanceCounterConfiguration();
      procTimeConfig.CounterSpecifier = s;
      procTimeConfig.SampleRate = System.TimeSpan.FromMinutes(1.0);
      config.PerformanceCounters.DataSources.Add(procTimeConfig);
    }
    config.PerformanceCounters.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(1.0);
    DiagnosticMonitor.Start("DiagnosticsConnectionString", config);

如您所见,我将perf计数器的预定xfer周期设置为1分钟。

现在,我可以在我的开发结构的WADPerformanceCounters表中获取这些计数器,但是我无法将它们放在天蓝云上?谁能指出我在这里可能做错了什么?

卡皮尔西

3 个答案:

答案 0 :(得分:1)

据说这个问题不在我看的地方。对此的修复非常简单,我删除了预先存在的部署并将我的cspkg文件作为新部署上传。似乎根据wad-control-container blob下的xml文件拾取了th个计数器。此xml文件是为每个部署而生成的。我意识到xml文件在我的情况下没有得到更新,当我删除部署并创建了一个新的部署时,它正在取得新的价值。

由于 卡皮尔

答案 1 :(得分:1)

只有在执行完整部署而非更新时,才会更新对诊断设置的任何更改。 要执行完整部署,请转到“发布配置文件”,“设置”和“高级设置”,然后取消选中“部署更新”复选框。发布时,它将是一个完整的部署。

此外,可以在不执行部署的情况下更新设置。 在Server Explorer中,转到Windows Azure =>云服务=> =>生产=>您的工作者角色并右键单击它,单击“更新诊断设置”。这将获取实际部署的当前诊断设置,您可以在此处更新它们而无需执行任何部署。 当然,如果你想验证你的代码实际上是以正确的方式设置它,那么你将需要进行如上所述的完整部署,这将完成代码然后验证。

http://msdn.microsoft.com/library/azure/dn186185.aspx

答案 2 :(得分:0)

由于您在Dev Fabric中获得了计数器但在Azure Fabric中没有,所以让我明白一点:您是否更改了DiagnosticsConnectionString设置以引用Azure存储连接字符串?