public RavenConfiguration(string resourceName, ResourceType resourceType, string customConfigPath = null) { ResourceName = resourceName; ResourceType = resourceType; _configBuilder = new ConfigurationBuilder(); AddEnvironmentVariables(); AddJsonConfigurationVariables(customConfigPath); Settings = _configBuilder.Build(); Core = new CoreConfiguration(); Http = new HttpConfiguration(); Replication = new ReplicationConfiguration(); Cluster = new ClusterConfiguration(); Etl = new EtlConfiguration(); Storage = new StorageConfiguration(); Security = new SecurityConfiguration(); PerformanceHints = new PerformanceHintsConfiguration(); Indexing = new IndexingConfiguration(this); Monitoring = new MonitoringConfiguration(); Queries = new QueryConfiguration(); Patching = new PatchingConfiguration(); Logs = new LogsConfiguration(); Server = new ServerConfiguration(); Testing = new TestingConfiguration(); Databases = new DatabaseConfiguration(); Memory = new MemoryConfiguration(); Studio = new StudioConfiguration(); Licensing = new LicenseConfiguration(); Tombstones = new TombstoneConfiguration(); Subscriptions = new SubscriptionConfiguration(); }
public RavenConfiguration() { _configBuilder = new ConfigurationBuilder(); AddEnvironmentVariables(_configBuilder); AddJsonConfigurationVariables(); Settings = _configBuilder.Build(); Core = new CoreConfiguration(); Replication = new ReplicationConfiguration(); SqlReplication = new SqlReplicationConfiguration(); Storage = new StorageConfiguration(); Encryption = new EncryptionConfiguration(); Indexing = new IndexingConfiguration(() => DatabaseName, () => Core.RunInMemory, () => Core.DataDirectory); WebSockets = new WebSocketsConfiguration(); Monitoring = new MonitoringConfiguration(); Queries = new QueryConfiguration(); Patching = new PatchingConfiguration(); DebugLog = new DebugLoggingConfiguration(); BulkInsert = new BulkInsertConfiguration(); Server = new ServerConfiguration(); Memory = new MemoryConfiguration(this); Expiration = new ExpirationBundleConfiguration(); Studio = new StudioConfiguration(); Databases = new DatabaseConfiguration(); Licensing = new LicenseConfiguration(); Quotas = new QuotasBundleConfiguration(); Tombstones = new TombstoneConfiguration(); }
/// <summary> /// Entry point /// </summary> public static void Main() { var path = System.Reflection.Assembly.GetExecutingAssembly().Location; var builder = new ConfigurationBuilder().SetBasePath(Path.GetDirectoryName(path)).AddJsonFile("appSettings.json"); IConfiguration appSettings = builder.Build(); RingMasterApplicationHelper.AttachDebugger(int.Parse(appSettings["DebuggerAttachTimeout"])); LogFileEventTracing.Start(Path.Combine(appSettings["LogFolder"], "RingMasterWatchdog.LogPath")); AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => { LogFileEventTracing.Stop(); }; using (FabricRuntime fabricRuntime = FabricRuntime.Create()) { try { var monitoringConfiguration = new MonitoringConfiguration(FabricRuntime.GetActivationContext()); IfxInstrumentation.Initialize(monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); RingMasterWatchdogEventSource.Log.ConfigurationSettings( monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); LogFileEventTracing.AddEventSource("Microsoft-Azure-Networking-Infrastructure-RingMaster-Fabric-RingMasterWatchdog", EventLevel.Informational, "RingMasterWatchdog"); LogFileEventTracing.AddEventSource("Microsoft-ServiceFabric-Services", EventLevel.Informational, "ServiceFabricServices"); Trace.Listeners.Add(new LogFileTraceListener()); var metricsFactory = IfxInstrumentation.CreateMetricsFactory( monitoringConfiguration.MdmAccount, monitoringConfiguration.MdmNamespace, monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.RoleInstance); ServiceRuntime.RegisterServiceAsync( "RingMasterWatchdog", serviceContext => new RingMasterWatchdog(serviceContext, metricsFactory)).Wait(); RingMasterWatchdogEventSource.Log.RegisterServiceSucceeded(); Thread.Sleep(Timeout.Infinite); } catch (Exception ex) { RingMasterWatchdogEventSource.Log.RegisterServiceFailed(ex.ToString()); throw; } } }
internal static ExtensionPointCpuUsageCalculator GetExtensionPointCpuUsageCalculator( JsonContextPool contextPool, MonitoringConfiguration configuration, NotificationCenter.NotificationCenter notificationCenter) { var extensionPoint = new ExtensionPointCpuUsageCalculator( contextPool, configuration.CpuUsageMonitorExec, configuration.CpuUsageMonitorExecArguments, notificationCenter); return(extensionPoint); }
/// <summary> /// Entry point /// </summary> /// <param name="args">Arguments provided to the program</param> public static void Main(string[] args) { Trace.Listeners.Add(IfxInstrumentation.CreateTraceListener()); using (FabricRuntime fabricRuntime = FabricRuntime.Create()) { try { var monitoringConfiguration = new MonitoringConfiguration(FabricRuntime.GetActivationContext()); IfxInstrumentation.Initialize(monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); PopulationStressServiceEventSource.Log.ConfigurationSettings( monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); var metricsFactory = IfxInstrumentation.CreateMetricsFactory( monitoringConfiguration.MdmAccount, monitoringConfiguration.MdmNamespace, monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.RoleInstance); ServiceRuntime.RegisterServiceAsync("PopulationStressService", serviceContext => new PopulationStressService(serviceContext, metricsFactory)).Wait(); PopulationStressServiceEventSource.Log.RegisterServiceSucceeded(); Assembly assembly = Assembly.GetExecutingAssembly(); FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); string version = fvi.FileVersion; var uptime = Stopwatch.StartNew(); while (true) { PopulationStressServiceEventSource.Log.ReportServiceStatus(version, (long)uptime.Elapsed.TotalSeconds); Thread.Sleep(TimeSpan.FromSeconds(30)); } } catch (Exception ex) { PopulationStressServiceEventSource.Log.RegisterServiceFailed(ex.ToString()); throw; } } }
private RavenConfiguration(string resourceName, ResourceType resourceType, string customConfigPath = null, bool skipEnvironmentVariables = false) { _logger = LoggingSource.Instance.GetLogger <RavenConfiguration>(resourceName); ResourceName = resourceName; ResourceType = resourceType; _customConfigPath = customConfigPath; PathSettingBase <string> .ValidatePath(_customConfigPath); _configBuilder = new ConfigurationBuilder(); if (skipEnvironmentVariables == false) { AddEnvironmentVariables(); } AddJsonConfigurationVariables(customConfigPath); Settings = _configBuilder.Build(); Core = new CoreConfiguration(); Http = new HttpConfiguration(); Replication = new ReplicationConfiguration(); Cluster = new ClusterConfiguration(); Etl = new EtlConfiguration(); Storage = new StorageConfiguration(); Security = new SecurityConfiguration(); Backup = new BackupConfiguration(); PerformanceHints = new PerformanceHintsConfiguration(); Indexing = new IndexingConfiguration(this); Monitoring = new MonitoringConfiguration(); Queries = new QueryConfiguration(); Patching = new PatchingConfiguration(); Logs = new LogsConfiguration(); Server = new ServerConfiguration(); Embedded = new EmbeddedConfiguration(); Databases = new DatabaseConfiguration(Storage.ForceUsing32BitsPager); Memory = new MemoryConfiguration(); Studio = new StudioConfiguration(); Licensing = new LicenseConfiguration(); Tombstones = new TombstoneConfiguration(); Subscriptions = new SubscriptionsConfiguration(); TransactionMergerConfiguration = new TransactionMergerConfiguration(Storage.ForceUsing32BitsPager); Notifications = new NotificationsConfiguration(); Updates = new UpdatesConfiguration(); Migration = new MigrationConfiguration(); Integrations = new IntegrationsConfiguration(); }
public MonitoringService( MonitoringConfiguration config, IAlertNotifier alertNotifier, ILoggerFactory loggerFactory) { if (config == null) { throw new ArgumentNullException(nameof(config)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } if (config.Drives == null) { throw new ArgumentNullException($"{nameof(config.Drives)} can not be null. " + "Check drive section in config file"); } if (String.IsNullOrWhiteSpace(config.MachineName)) { throw new ArgumentNullException($"{nameof(config.MachineName)} can not be null." + "Check config file"); } if (config.AlertPeriodMin <= 0) { throw new ArgumentNullException($"{nameof(config.AlertPeriodMin)} can not less than 1." + "Check config file"); } _alertNotifier = alertNotifier; _logger = loggerFactory.CreateLogger <MonitoringService>(); _checkPeriod = TimeSpan.FromMinutes(config.AlertPeriodMin); _machineName = config.MachineName; _triggers = new List <AlertTrigger>(config.Drives.Count); foreach (var drive in config.Drives) { _triggers.Add( new AlertTrigger( drive.DeviceName, drive.ThresholdValue, drive.TriggerMode, drive.MeasurementUnit)); } }
public StronglyTypedRavenSettings(NameValueCollection settings) { Replication = new ReplicationConfiguration(); Voron = new VoronConfiguration(); Esent = new EsentConfiguration(); Prefetcher = new PrefetcherConfiguration(); FileSystem = new FileSystemConfiguration(); Counter = new CounterConfiguration(); TimeSeries = new TimeSeriesConfiguration(); Encryption = new EncryptionConfiguration(); Indexing = new IndexingConfiguration(); WebSockets = new WebSocketsConfiguration(); Cluster = new ClusterConfiguration(); Monitoring = new MonitoringConfiguration(); Studio = new StudioConfiguration(); this.settings = settings; }
public RavenConfiguration() { Settings = new NameValueCollection(StringComparer.OrdinalIgnoreCase); Core = new CoreConfiguration(this); FileSystem = new FileSystemConfiguration(Core); Counter = new CounterConfiguration(Core); TimeSeries = new TimeSeriesConfiguration(Core); Replication = new ReplicationConfiguration(); Prefetcher = new PrefetcherConfiguration(); Storage = new StorageConfiguration(); Encryption = new EncryptionConfiguration(); Indexing = new IndexingConfiguration(); WebSockets = new WebSocketsConfiguration(); Cluster = new ClusterConfiguration(); Monitoring = new MonitoringConfiguration(); Queries = new QueryConfiguration(); Patching = new PatchingConfiguration(); BulkInsert = new BulkInsertConfiguration(); Server = new ServerConfiguration(); Memory = new MemoryConfiguration(); Expiration = new ExpirationBundleConfiguration(); Versioning = new VersioningBundleConfiguration(); Studio = new StudioConfiguration(); Tenants = new TenantConfiguration(); Licensing = new LicenseConfiguration(); Quotas = new QuotasBundleConfiguration(); IndexingClassifier = new DefaultIndexingClassifier(); Catalog = new AggregateCatalog(CurrentAssemblyCatalog); Catalog.Changed += (sender, args) => ResetContainer(); }
public async Task <bool> CreateConfiguration(MonitoringConfiguration monitorConfig) { await _context.MonitoringConfiguration.AddAsync(monitorConfig); return(await _context.SaveChangesAsync() > 0); }
private static Func <int[], int, int, bool> GetIsInTime(MonitoringConfiguration monitoringConfiguration) { return(monitoringConfiguration.Snmp.DisableTimeWindowChecks ? (currentTimeData, pastReboots, pastTime) => true : (Func <int[], int, int, bool>)null); }
static async Task Main(string[] args) { var argsSet = new HashSet <string>(args); if (argsSet.Contains(HelpOptions[0]) || argsSet.Contains(HelpOptions[1])) { ShowHelp(); return; } var isService = argsSet.Contains(RunAsServiceOptions[0]) || argsSet.Contains(RunAsServiceOptions[1]); Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); var logger = LogManager.LoadConfiguration("NLog.config").GetCurrentClassLogger(); try { var builder = new HostBuilder(); builder.ConfigureAppConfiguration((context, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddYamlFile("config.yml"); }); builder.ConfigureServices(services => { services.AddSingleton( new LoggerFactory().AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true })); services.AddSingleton(typeof(ILogger <>), typeof(Logger <>)); services.AddSingleton(typeof(ILogger), c => { var factory = c.GetRequiredService <ILoggerFactory>(); return(factory.CreateLogger("main")); }); services.AddLogging(b => { b.ClearProviders(); b.SetMinimumLevel(LogLevel.Trace); }); services.AddSingleton(c => { var config = c.GetService <IConfiguration>(); var emailConfigSection = config.GetChildren().FirstOrDefault(x => x.Key == "EmailConfiguration"); if (emailConfigSection == null) { return(null); } var emailConfiguration = new EmailConfiguration(); emailConfigSection.Bind(emailConfiguration); return(emailConfiguration); }); services.AddSingleton(c => { var config = c.GetService <IConfiguration>(); var monitoringConfiguration = new MonitoringConfiguration(); config.Bind(monitoringConfiguration); return(monitoringConfiguration); }); services.AddSingleton <IAlertChannel, EmailAlertChannel>(); services.AddSingleton <IAlertNotifier, AlertNotifier>(); services.AddHostedService <MonitoringService>(); }); if (isService) { await builder.RunAsServiceAsync(); } else { await builder.RunConsoleAsync(); } } catch (AppMonkeyBusinessException e) { logger.Warn($"{AppName} stopped. {e.Message}"); } catch (Exception e) { logger.Error(e, $"Critical error occured in {AppName}"); } finally { LogManager.Shutdown(); } }