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()); }
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()); }
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()); }
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; }
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); }
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); }