Meeting Performance Goals for Azure Deployments: Listing 2.
Adding performance counters.
- By Joseph Fultz
- 05/17/2012
public override bool OnStart()
{
bool collectCountersForLoad = default(bool);
collectCountersForLoad = bool.Parse(RoleEnvironment.GetConfigurationSettingValue("LoadTesting"));
List<string> countersToWatch = new List<string>();
if (collectCountersForLoad)
{
TimeSpan sampleInterval = TimeSpan.FromSeconds(5);
countersToWatch.Add(@"\Processor(_Total)\% Processor Time");
countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 0 heap size");
countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 1 heap size");
countersToWatch.Add(@"\.NET CLR Memory(_Global_)\Gen 2 heap size");
}
// To enable the AzureLocalStorageTraceListner, uncomment relevent section in the web.config
DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagnosticConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
diagnosticConfig.Directories.DataSources.Add(AzureLocalStorageTraceListener.GetLogDirectory());
foreach(string counter in countersToWatch)
{
diagnosticConfig.PerformanceCounters.DataSources.Add(new PerformanceCounterConfiguration
{ CounterSpecifier = counter,
SampleRate = TimeSpan.FromSeconds(5)
}
);
}
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagnosticConfig);
// For information on handling configuration changes
// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
return base.OnStart();
}
About the Author
Joseph Fultz is a cloud solution architect at Microsoft. He works with Microsoft customers developing architectures for solving business problems leveraging Microsoft Azure. Formerly, Fultz was responsible for the development and architecture of GM's car-sharing program (mavendrive.com). Contact him on Twitter: @JosephRFultz or via e-mail at [email protected].