Avatar billede softspot Forsker
10. oktober 2012 - 15:03 Der er 1 løsning

Fejl ved oprettelse af PerformanceCounter i Azure Emulator

Jeg vil gerne have oprettet nogle performancemålinger i mit Azure projekt og har i den forbindelse lagt kode ind i OnStart på RoleEntryPoint for min webrole.

Jeg har indtil videre kun forsøgt at køre det i emulatoren, ikke i Azure.

Jeg har flg. kode til mit RoleEntryPoint (som i nogen grad er sakset fra et af de mange eksempler på, hvordan man aktiverer diagnostics ifm. Azure):

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        try
        {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();

            bool logPerformance =
                    !String.IsNullOrEmpty(
                        RoleEnvironment
                            .GetConfigurationSettingValue("logPerformance"));
            bool logTrace =
                    !String.IsNullOrEmpty(
                        RoleEnvironment
                            .GetConfigurationSettingValue("logTrace"));
            bool logIIS =
                    !String.IsNullOrEmpty(
                        RoleEnvironment
                            .GetConfigurationSettingValue("logIIS"));

            if (logPerformance)
            {
                var counters = new List<string>
                        {
                            @"\Memory\Available MBytes"
                            ,@"\Processor(_Total)\% Processor Time"
                            ,@"\ASP.NET Applications(__Total__)\Requests/Sec"
                        };

                if (counters.Count() > 0)
                {
                    config.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
                    config.PerformanceCounters.BufferQuotaInMB = 10;

                    counters.ForEach(counter =>
                        config.PerformanceCounters.DataSources.Add(
                            new PerformanceCounterConfiguration()
                            {
                                CounterSpecifier = counter,
                                SampleRate = TimeSpan.FromSeconds(10)
                            })
                    );
                }
            }

            if (logTrace)
            {
                config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(2);
                config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Warning;
                config.Logs.BufferQuotaInMB = 10;
            }

            if (logIIS)
            {
                config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
                config.Directories.BufferQuotaInMB = 20;
            }

            // Apply the updated configuration to the diagnostic monitor.
            // The first parameter is for the connection string configuration setting.
            DiagnosticMonitor.Start(
                    "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString",
                    config);

        }
        catch (Exception e)
        {
            Trace.TraceError("Exception during WebRole1.OnStart: " + e.ToString());
        }

        return base.OnStart();
    }
}


Når jeg kører min emulator viser den nogle fejl, som ser nogenlunde således ud (for hver af de specificerede counters):

[MonAgentHost] Error: MA EVENT: 2012-10-10T12:15:06.982Z
[MonAgentHost] Error:    2
[MonAgentHost] Error:    9028
[MonAgentHost] Error:    8168
[MonAgentHost] Error:    SysCounterListener.dll
[MonAgentHost] Error:    0
[MonAgentHost] Error:    b9eb57e3-62d5-49a5-b395-abc3bd5
[MonAgentHost] Error:    liscounter.cpp
[MonAgentHost] Error:    SystemCounter::AddCounter
[MonAgentHost] Error:    660
[MonAgentHost] Error:    ffffffffc0000bb9
[MonAgentHost] Error:    0
[MonAgentHost] Error:   
[MonAgentHost] Error:    PdhAddCounter(\Processor(_Total)\% Processor Time) failed

Det interessante er, at IIS-loggen fungerer godt nok, men altså ikke performance-tællerne.

Jeg har tjekket om mine counters er enabled og det er de (med undtagelse af ASP.NET 2.0 x64, men da dette er en .NET 4.0 løsning antager jeg ikke, dette er relevant).

Jeg har desuden prøvet at oprette et console-projekt og teste nogle af disse performance-tællere, hvor det har fungeret uden problemer.

Spørgsmålet er derfor om nogen ved, hvad der kan være galt på min maskine?

Jeg er tilbøjelig til at tro det kan have noget med rettigheder at gøre, men jeg kører VS som administrator og dette bevirker, som jeg har forstået det, at compute- og storage-emulatorerne også kører med disse rettigheder (eller hvad?)...


Min platform er:
- Windows 7 Home Premium
- Visual Studio 2010 Pro SP1
- Azure SDK 1.7.1
Avatar billede softspot Forsker
23. oktober 2012 - 09:41 #1
Hm... den kan vist godt lukkes, desværre :-(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester