public static void AddToEngine(RFEngineDefinition engineConfig, string connectionString, string environment) { var heartbeater = engineConfig.AddProcess( processName: "System Monitor", description: "Sends heartbeats to support dashboard", processor: () => new RFSystemMonitor(new RFSystemMonitor.Config { ConnectionString = connectionString, PublishToDashboard = RFSettings.GetAppSetting("RFMonitors.PublishToDashboard", false), DashboardURL = RFSettings.GetAppSetting("RFMonitors.DashboardURL", null), Environment = environment, StateKey = RFStateKey.CreateKey(engineConfig.KeyDomain, engineConfig.EngineName, "System Monitor", null) })); // scheduler to kick off monitoring var monitoringScheduler = engineConfig.AddProcess( processName: "Trigger Monitoring", description: "Timed trigger for system monitoring", processor: () => new RFSchedulerProcessor(new RFSchedulerConfig { Schedules = new List <RFSchedulerSchedule> { new RFIntervalSchedule(new TimeSpan(0, RFSettings.GetAppSetting("RFMonitors.PublishMinutes", 5), 0)) }, Range = RFWeeklyWindow.AllWeek(), //IntervalKey = engineConfig.IntervalDocumentKey(), TriggerKey = RFSchedulerTriggerKey.Create(engineConfig.KeyDomain, MonitoringTriggers.Heartbeat) })); engineConfig.AddIntervalTrigger(monitoringScheduler); engineConfig.AddCatalogUpdateTrigger <RFSchedulerTriggerKey>(t => t.TriggerName == MonitoringTriggers.Heartbeat, heartbeater); }
public static void AddToEngine(RFEngineDefinition engineConfig, string connectionString) { var logMaintainer = engineConfig.AddProcess( processName: "Log Maintainer", description: "Maintains system log files", processor: () => new RFLogMaintainer(new RFLogMaintainer.Config { ConnectionString = connectionString, LogArchiveDirectory = RFSettings.GetAppSetting("RFMaintainers.LogArchiveDirectory", null), LogDirectories = (RFSettings.GetAppSetting("RFMaintainers.LogDirectories", "")).Split(';'), SystemLogRetentionDays = RFSettings.GetAppSetting("RFMaintainers.SystemLogRetentionDays", 7), MaintainLogFiles = RFSettings.GetAppSetting("RFMaintainers.MaintainLogFiles", false), MaintainSystemLog = RFSettings.GetAppSetting("RFMaintainers.MaintainSystemLog", false), MaintainDispatchQueue = RFSettings.GetAppSetting("RFMaintainers.MaintainDispatchQueue", false) })); var catalogMaintainer = engineConfig.AddProcess( processName: "Catalog Maintainer", description: "Maintains data catalog", processor: () => new RFSQLCatalogMaintainer(new RFSQLCatalogMaintainer.Config { ConnectionString = connectionString, MaintainCatalog = RFSettings.GetAppSetting("RFMaintainers.MaintainCatalog", false) })); var databaseMaintainer = engineConfig.AddProcess( processName: "Database Maintainer", description: "Maintains database backups", processor: () => new RFDatabaseMaintainer(new RFDatabaseMaintainer.Config { ConnectionString = connectionString, MaintainDatabase = RFSettings.GetAppSetting("RFMaintainers.MaintainDatabase", false), BackupDirectory = RFSettings.GetAppSetting("RFMaintainers.BackupDirectory", null), WeeklyRotation = RFSettings.GetAppSetting("RFMaintainers.WeeklyRotation", false), BackupPassword = RFSettings.GetAppSetting("RFMaintainers.BackupPassword", null), WorkingDirectoryLocal = RFSettings.GetAppSetting("RFMaintainers.WorkingDirectoryLocal", null), WorkingDirectoryUNC = RFSettings.GetAppSetting("RFMaintainers.WorkingDirectoryUNC", null), OptimizeDatabase = RFSettings.GetAppSetting("RFMaintainers.OptimizeDatabase", false) })); var maintenanceTime = new TimeSpan(0, 15, 0); string maintenanceTimeConfig = RFSettings.GetAppSetting("RFMaintainers.MaintenanceTime", null); if (!string.IsNullOrWhiteSpace(maintenanceTimeConfig)) { maintenanceTime = TimeSpan.ParseExact(maintenanceTimeConfig, @"hh\:mm", null); } engineConfig.AddScheduledTask("Daily Maintenance: Logs", new RFDailySchedule(maintenanceTime).Single(), RFWeeklyWindow.TueSat(), logMaintainer, true); engineConfig.AddChainedTask("Daily Maintenance: Catalog", logMaintainer, catalogMaintainer, true); engineConfig.AddChainedTask("Daily Maintenance: Backup", catalogMaintainer, databaseMaintainer, true); }