Example #1
0
        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);
        }
Example #2
0
        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);
        }