Meeting Performance Goals for Azure Deployments: Listing 2.

Adding performance counters.

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].

comments powered by Disqus

Featured

  • Build Your First AI Applications with Local AI

    "AI right now feels like a vast space which can be hard to jump into," says Craig Loewen, a senior product manager at Microsoft who is helping devs unsure about making that first daunting leap.

  • On Blazor Component Reusability - From Day 0

    "We want to try to design from Day One, even Day Zero, with reusability in mind," says Blazor expert Allen Conway in imparting his expertise to an audience of hundreds in an online tech event on Tuesday.

  • Decision Tree Regression from Scratch Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of decision tree regression using the C# language. Unlike most implementations, this one does not use recursion or pointers, which makes the code easy to understand and modify.

  • Visual Studio's AI Future: Copilot .NET Upgrades and More

    At this week's Microsoft Ignite conference, the Visual Studio team showed off a future AI-powered IDE that will leverage GitHub Copilot for legacy app .NET upgrades, along with several more cutting-edge features.

  • PowerShell Gets AI-ified in 'AI Shell' Preview

    Eschewing the term "Copilot," Microsoft introduced a new AI-powered tool for PowerShell called "AI Shell," available in preview.

Subscribe on YouTube