我正在尝试从worker角色收集一些性能计数器,而且永远不会创建WADPerformanceCountersTable。
public override bool OnStart()
{
// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;
DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
var procTimeConfig = new PerformanceCounterConfiguration();
procTimeConfig.CounterSpecifier = @"\Processor(_Total)\% Processor Time";
procTimeConfig.SampleRate = TimeSpan.FromSeconds(10);
diagConfig.PerformanceCounters.DataSources.Add(procTimeConfig);
diagConfig.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagConfig);
return base.OnStart();
}
我尝试了不同的日志表,如WADLogsTable和WADDiagnosticInfrastructureLogsTable,两者都是正确创建的。
答案 0 :(得分:0)
此代码在我的应用程序中正常工作。由于您的ScheduledTransferPeriod是1分钟,您是否让角色至少运行1分钟?那就是表格的创建时间。
答案 1 :(得分:0)
当然,这个问题是由系统语言引起的。这里解释一下:
Error in Azure Emulator when creating Performance Counters
我的Windows是西班牙语版本,因此性能计数器的名称必须是西班牙语:
procTimeConfig.CounterSpecifier = @"\Procesador(_Total)\% de tiempo de procesador";
小心,这只适用于本地,而不适用于云端。