Export (0) Print
Expand All

Collecting Performance Counter Data

Reactive rules can use performance counter data from roles as part of the rule definition. For example, a rule may monitor the CPU utilization of a role to determine whether the block should scale a target. The block reads performance counter data from the Windows Azure Diagnostics table named WADPerformanceCountersTable in Windows Azure storage.

By default, Windows Azure does not write performance counter data to the Windows Azure Diagnostics table in Windows Azure storage. Therefore, you should modify the roles from which you need to collect performance counter data to save the data.

Hh680886.note(en-us,PandP.50).gifNote:
The role must be running in full trust mode to be allowed to write performance monitoring data to the Windows Azure Diagnostics table.

The following code sample shows how you can modify a web role to write CPU usage performance data to storage. In this example, the web role samples the percent processor time usage performance counter every 30 seconds, and writes the performance data to Windows Azure Diagnostics table storage every minute.

using System;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Diagnostics;
using Microsoft.WindowsAzure.ServiceRuntime;

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        var config = DiagnosticMonitor.GetDefaultInitialConfiguration();

        var cloudStorageAccount =
            CloudStorageAccount.Parse(
              RoleEnvironment.GetConfigurationSettingValue(
              "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"));

        // Get the perf counters
        config.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);

        // Add the perf counters
        config.PerformanceCounters.DataSources.Add(
            new PerformanceCounterConfiguration
            {
                CounterSpecifier = @"\Processor(_Total)\% Processor Time",
                SampleRate = TimeSpan.FromSeconds(30)
            });

        DiagnosticMonitor diagMonitor = DiagnosticMonitor.Start(cloudStorageAccount, config);

        return base.OnStart();
    }
}

For more information, see "Overview of Creating and Using Performance Counters in a Windows Azure Application" on MSDN.

Last built: June 7, 2012

Show:
© 2014 Microsoft