예제 #1
0
        public override bool OnStart()
        {
            // Set the maximum number of concurrent connections
            ServicePointManager.DefaultConnectionLimit = 12;

            XmlConfigurator.Configure();
            ILog log = LogManager.GetLogger(typeof(WorkerRole));

            string wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";
            CloudStorageAccount            storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));
            RoleInstanceDiagnosticManager  roleInstanceDiagnosticManager = storageAccount.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId, RoleEnvironment.CurrentRoleInstance.Role.Name, RoleEnvironment.CurrentRoleInstance.Id);
            DiagnosticMonitorConfiguration config = roleInstanceDiagnosticManager.GetCurrentConfiguration();

            config.Logs.ScheduledTransferPeriod         = TimeSpan.FromMinutes(1D);
            config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined;
            config.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = LogLevel.Warning;
            config.DiagnosticInfrastructureLogs.ScheduledTransferPeriod         = TimeSpan.FromMinutes(1D);
            config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1D);

            roleInstanceDiagnosticManager.SetCurrentConfiguration(config);


            PhotoTaskManager.Instance.Start();
            RenderTaskManager.Instance.Start();
            ProfileTaskManager.Instance.Start();
            StatUpdate.Instance.Start();

            return(base.OnStart());
        }
예제 #2
0
        public override bool OnStart()
        {
            string wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";

            RoleInstanceDiagnosticManager roleInstanceDiagnosticManager =
                CloudAccountDiagnosticMonitorExtensions.CreateRoleInstanceDiagnosticManager(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString),
                                                                                            RoleEnvironment.DeploymentId, RoleEnvironment.CurrentRoleInstance.Role.Name,
                                                                                            RoleEnvironment.CurrentRoleInstance.Id);


            DiagnosticMonitorConfiguration config = roleInstanceDiagnosticManager.GetCurrentConfiguration();

            // should never be null, but this is a fallback in case it is. I recommend removing this in a production
            // deployment
            if (null == config)
            {
                config = DiagnosticMonitor.GetDefaultInitialConfiguration();
            }

            config.Logs.ScheduledTransferPeriod         = TimeSpan.FromMinutes(15);
            config.Logs.ScheduledTransferLogLevelFilter = Microsoft.WindowsAzure.Diagnostics.LogLevel.Undefined;
            config.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = Microsoft.WindowsAzure.Diagnostics.LogLevel.Warning;
            config.DiagnosticInfrastructureLogs.ScheduledTransferPeriod         = TimeSpan.FromMinutes(15);
            config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(15);

            roleInstanceDiagnosticManager.SetCurrentConfiguration(config);
            System.Diagnostics.Trace.TraceInformation("Diagnostics Running");

            #region Setup CloudStorageAccount Configuration Setting Publisher

            // This code sets up a handler to update CloudStorageAccount instances when their corresponding
            // configuration settings change in the service configuration file.
            RoleEnvironment.Changed += (sender, arg) =>
            {
                var key = CloudConfigurationManager.GetSetting(arg.Changes.OfType <RoleEnvironmentConfigurationSettingChange>().ToString());
                if (arg.Changes.OfType <RoleEnvironmentConfigurationSettingChange>()
                    .Any((change) => (change.ConfigurationSettingName == key.ToString())))
                {
                    // The corresponding configuration setting has changed, propagate the value
                    RoleEnvironment.GetConfigurationSettingValue(key.ToString());
                    // {
                    // In this case, the change to the storage account credentials in the
                    // service configuration is significant enough that the role needs to be
                    // recycled in order to use the latest settings. (for example, the
                    // endpoint has changed)
                    RoleEnvironment.RequestRecycle();
                    //}
                }
            };
            //});
            #endregion
            return(base.OnStart());
        }
예제 #3
0
        public override bool OnStart()
        {
            CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
            {
                configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
            });

            string wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";
            CloudStorageAccount            storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));
            RoleInstanceDiagnosticManager  roleInstanceDiagnosticManager = storageAccount.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId, RoleEnvironment.CurrentRoleInstance.Role.Name, RoleEnvironment.CurrentRoleInstance.Id);
            DiagnosticMonitorConfiguration config = roleInstanceDiagnosticManager.GetCurrentConfiguration();

            config.Logs.ScheduledTransferPeriod         = TimeSpan.FromMinutes(1D);
            config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined;
            config.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = LogLevel.Warning;
            config.DiagnosticInfrastructureLogs.ScheduledTransferPeriod         = TimeSpan.FromMinutes(1D);
            config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1D);

            roleInstanceDiagnosticManager.SetCurrentConfiguration(config);

            return(base.OnStart());
        }
예제 #4
0
파일: sample10.cs 프로젝트: zzc1231/Docs
        public static void RegisterSignalRPerfCounters()
        {
            TimeSpan ts = new TimeSpan(0, 0, 10);

            RoleInstanceDiagnosticManager roleInstanceDiagnosticManager =
                new RoleInstanceDiagnosticManager(
                    RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"),
                    RoleEnvironment.DeploymentId,
                    RoleEnvironment.CurrentRoleInstance.Role.Name,
                    RoleEnvironment.CurrentRoleInstance.Id);

            // Get the current diagnostic monitor for the role.
            var config = roleInstanceDiagnosticManager.GetCurrentConfiguration() ?? DiagnosticMonitor.GetDefaultInitialConfiguration();

            string connectionString = RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
            string deploymentID     = RoleEnvironment.DeploymentId;
            string roleName         = RoleEnvironment.CurrentRoleInstance.Role.Name;

            // Get the DeploymentDiagnosticManager object for your deployment.
            DeploymentDiagnosticManager diagManager = new DeploymentDiagnosticManager(connectionString, deploymentID);

            var signalRCategoryName = createSignalRCategoryName();

            RegisterCounter("Connections Connected", ts, signalRCategoryName, config);
            RegisterCounter("Connections Reconnected", ts, signalRCategoryName, config);
            RegisterCounter("Connections Disconnected", ts, signalRCategoryName, config);
            RegisterCounter("Connections Current", ts, signalRCategoryName, config);
            RegisterCounter("Connection Messages Received Total", ts, signalRCategoryName, config);
            RegisterCounter("Connection Messages Sent Total", ts, signalRCategoryName, config);
            RegisterCounter("Connection Messages Received/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Connection Messages Sent/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Messages Received Total", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Messages Received/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Scaleout Message Bus Messages Received/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Messages Published Total", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Messages Published/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Subscribers Current", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Subscribers Total", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Subscribers/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Allocated Workers", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Busy Workers", ts, signalRCategoryName, config);
            RegisterCounter("Message Bus Topics Current", ts, signalRCategoryName, config);
            RegisterCounter("Errors: All Total", ts, signalRCategoryName, config);
            RegisterCounter("Errors: All/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Errors: Hub Resolution Total", ts, signalRCategoryName, config);
            RegisterCounter("Errors: Hub Resolution/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Errors: Hub Invocation Total", ts, signalRCategoryName, config);
            RegisterCounter("Errors: Hub Invocation/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Errors: Tranport Total", ts, signalRCategoryName, config);
            RegisterCounter("Errors: Transport/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Scaleout Streams Total", ts, signalRCategoryName, config);
            RegisterCounter("Scaleout Streams Open", ts, signalRCategoryName, config);
            RegisterCounter("Scaleout Streams Buffering", ts, signalRCategoryName, config);
            RegisterCounter("Scaleout Errors Total", ts, signalRCategoryName, config);
            RegisterCounter("Scaleout Errors/Sec", ts, signalRCategoryName, config);
            RegisterCounter("Scaleout Send Queue Length", ts, signalRCategoryName, config);

            // useful for checking that it is not the category name that is issue
            RegisterCounter("Connection Failures", ts, "TCPV6", config);

            // Apply the updated configuration to the diagnostic monitor.
            DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);
            return;
        }
예제 #5
0
        private static void EnableCounters(int sampleRateInSeconds, int transferPeriodInSeconds, string[] counters, RoleInstanceDiagnosticManager ridmN)
        {
            DiagnosticMonitorConfiguration dmc = ridmN.GetCurrentConfiguration();

            foreach (string counter in counters)
            {
                if (!string.IsNullOrWhiteSpace(counter))
                {
                    PerformanceCounterConfiguration pcc = new PerformanceCounterConfiguration();
                    pcc.CounterSpecifier = counter.Trim();
                    pcc.SampleRate = TimeSpan.FromSeconds(sampleRateInSeconds);
                    dmc.PerformanceCounters.DataSources.Add(pcc);
                    Trace.WriteLine(string.Format("Counter '{0}' Sample Rate {1} seconds", counter, sampleRateInSeconds));
                }
            }

            dmc.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromSeconds(transferPeriodInSeconds);
            ridmN.SetCurrentConfiguration(dmc);
        }
예제 #6
0
        private void ConfigureProfileStorage()
        {
            LocalResource profileStorage;
            try
            {
                profileStorage = RoleEnvironment.GetLocalResource("ProfileStorage");
            }
            catch (RoleEnvironmentException e)
            {
                throw new InvalidOperationException("Local storage \"ProfileStorage\" not found.", e);
            }

            var ridm = new RoleInstanceDiagnosticManager(
                CloudConfigurationManager.GetSetting("AzurePerfTools.PowerShellWindowsService.ConnectionString"),
                RoleEnvironment.DeploymentId,
                RoleEnvironment.CurrentRoleInstance.Role.Name,
                RoleEnvironment.CurrentRoleInstance.Id);
            var dmc = ridm.GetCurrentConfiguration() ?? DiagnosticMonitor.GetDefaultInitialConfiguration();
            DirectoryConfiguration directoryConfig;

            directoryConfig = new DirectoryConfiguration()
            {
                Container = "profiles",
                Path = profileStorage.RootPath,
                //DirectoryQuotaInMB = 1000,
            };
            dmc.Directories.DataSources.Add(directoryConfig);
            dmc.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1.0);
            ridm.SetCurrentConfiguration(dmc);
        }