Exemple #1
0
        public GapSummaryReport()
            : base(true)
        {
            var toggleProvider          = new PdbSqlToggleProvider(this.connectionFactory);
            var reportRepositoryFactory = new RecoverabilityIntegrityReportReaderFactory(toggleProvider, connectionFactory);
            var reportRepository        = reportRepositoryFactory.Get();

            _backupDbcc       = new BackupDbccService(this.SqlRepo, reportRepository);
            _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
        }
Exemple #2
0
        public RecoveryObjectivesReport()
            : base(lookingGlassDependency: true)
        {
            var toggleProvider          = new PdbSqlToggleProvider(this.connectionFactory);
            var reportRepositoryFactory = new RecoverabilityIntegrityReportReaderFactory(toggleProvider, connectionFactory);
            var reportRepository        = reportRepositoryFactory.Get();

            _backupDbcc       = new BackupDbccService(this.SqlRepo, reportRepository);
            _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(SqlRepo.ConfigurationRepository));
        }
 public Uptime()
     : base(lookingGlassDependency: true)
 {
     _uptime           = new UptimeService(this.SqlRepo);
     _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
 }
Exemple #4
0
        private string FetchFileData(BackupDbccService svc, RecoverabilityIntegrityViewModel viewModel, IQualityIndicatorService qualityIndicatorService)
        {
            var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService);

            using (var sw = new System.IO.StringWriter())
            {
                var heaaderArr = new string[]
                {
                    "Hour", "Overall Score", "Backup Frequency Score", "Backup Coverage Score",
                    "DBCC Frequency Score", "DBCC Coverage Score", "RPO Score", "RTO Score"
                };
                sw.WriteLine(string.Join(",", heaaderArr));
                foreach (var row in filterResult.Data)
                {
                    sw.WriteCsvSafeLine(row);
                }
                return(sw.ToString());
            }
        }
Exemple #5
0
        private FilterResult FilterData(BackupDbccService svc, RecoverabilityIntegrityViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService)
        {
            var grid   = svc.RecoverabilityIntegritySummary(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands);
            var aaData = grid.Data.Select(d => new string[] {
                d.FriendlySummaryDayHour,
                isDownload ?
                d.RecoverabilityIntegrityScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RecoverabilityIntegrityScore, false)}'>{d.RecoverabilityIntegrityScore}</span>",
                isDownload ?
                d.BackupFrequencyScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.BackupFrequencyScore, false)}'>{d.BackupFrequencyScore}</span>",
                isDownload ?
                d.BackupCoverageScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.BackupCoverageScore, false)}'>{d.BackupCoverageScore}</span>",
                isDownload ?
                d.DbccFrequencyScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.DbccFrequencyScore, false)}'>{d.DbccFrequencyScore}</span>",
                isDownload ?
                d.DbccCoverageScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.DbccCoverageScore, false)}'>{d.DbccCoverageScore}</span>",
                isDownload ?
                d.RPOScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RPOScore, false)}' title='{(d.RPOScore < 100 ? d.PotentialDataLossMinutes + " minute(s) of potential data loss on "+ d.WorstRPODatabase : String.Empty)}'>{d.RPOScore}</span>",
                isDownload ?
                d.RTOScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RTOScore, false)}' title='{(d.RTOScore < 100 ? "Estimated " + d.EstimatedTimeToRecoverHours + " hours(s) to restore "+ d.WorstRTODatabase : String.Empty)}'>{d.RTOScore}</span>"
            }).ToArray();

            return(new kCura.PDD.Web.Controllers.FilterResult()
            {
                Data = aaData, TotalRecordCount = grid.Count
            });
        }
        private string FetchFileData(UserExperienceService svc, UserExperienceServerViewModel viewModel, IQualityIndicatorService qualityIndicatorService)
        {
            var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService);

            using (var sw = new System.IO.StringWriter())
            {
                var heaaderArr = new string[]
                {
                    "Hour", "Server", "Score", "Workspace", "Long-Running Queries", "Total Users", "Total Search Audits",
                    "Total Non-Search Audits", "Total Audits", "Total Execution Time", "Weekly Sample"
                };
                sw.WriteLine(string.Join(",", heaaderArr));
                foreach (var row in filterResult.Data)
                {
                    sw.WriteCsvSafeLine(row);
                }
                return(sw.ToString());
            }
        }
 public SystemLoadServers()
     : base(true)
 {
     _systemLoad       = new SystemLoadService(this.SqlRepo);
     _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
 }
        /// <summary>
        /// Translates a Backup/DBCC view into grid data
        /// </summary>
        /// <param name="viewModel"></param>
        /// <returns></returns>
        private DataTableResponse FetchGridData(BackupDbccService svc, RecoveryObjectivesViewModel viewModel, IQualityIndicatorService qualityIndicatorService)
        {
            var data       = FilterData(svc, viewModel, false, qualityIndicatorService);
            var dtResponse = new DataTableResponse()
            {
                sEcho = string.IsNullOrEmpty(viewModel.GridConditions.sEcho)
                                        ? "1"
                                        : viewModel.GridConditions.sEcho,
                aaData          = data.Data,
                recordsTotal    = data.Data.Count(),
                recordsFiltered = data.TotalRecordCount
            };

            return(dtResponse);
        }
 public UserExperienceHours()
     : base(true)
 {
     _userExperience   = new UserExperienceService(this.SqlRepo);
     _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
 }
 public UserExperienceServers()
     : base(lookingGlassDependency: true)
 {
     _userExperience   = new UserExperienceService(this.SqlRepo);
     _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
 }
Exemple #11
0
        private string FetchFileData(SystemLoadService svc, SystemLoadServerViewModel viewModel, IQualityIndicatorService qualityIndicatorService)
        {
            var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService);

            using (var sw = new System.IO.StringWriter())
            {
                var heaaderArr = new string[]
                {
                    "Hour", "Server", "Server Type", "Overall Score", "CPU Utilization Score",
                    "RAM Utilization Score", "SQL Memory Signal Score", "SQL Waits Score",
                    "Virtual Log Files Score", "Latency Score", "Weekly Sample"
                };
                sw.WriteLine(string.Join(",", heaaderArr));
                foreach (var row in filterResult.Data)
                {
                    sw.WriteCsvSafeLine(row);
                }
                return(sw.ToString());
            }
        }
Exemple #12
0
        private FilterResult FilterData(SystemLoadService svc, SystemLoadServerViewModel viewModel, bool IsDownload, IQualityIndicatorService qualityIndicatorService)
        {
            var grid    = svc.ServerHours(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands);
            var sysInfo = svc.ReadSystemInformation().ToList();
            var aaData  = grid.Data.Select(d => new string[] {
                IsDownload
                                        ? $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")}"
                                        : $"<a href='{GetPageUrl(Names.Tab.ServerHealth, "ServerHealth", $"startDate={d.SummaryDayHour.ToShortDateString()}&endDate={d.SummaryDayHour.ToShortDateString()}")}' target='_parent'>{ d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")} </a>",
                IsDownload
                                        ? string.Format("{0} ({1})", d.Server, d.ServerId)
                                        : string.Format(@"<div style=""display:inline-block"" title=""{0}"" data-placement=""right"">{1}</div>",
                                                        (sysInfo.FirstOrDefault(i => i.ServerArtifactId == d.ServerId) ?? new SystemInformation()).SummaryHtml,
                                                        string.Format("{0} ({1})", d.Server, d.ServerId)
                                                        ),
                d.ServerType,
                IsDownload ?
                d.OverallScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.OverallScore, false)}'>{d.OverallScore}</span>",
                IsDownload ?
                d.CPUScore.ToString()
                                : $"<a href='{GetPageUrl(Names.Tab.ServerHealth, "ServerHealth", $"startDate={d.SummaryDayHour.ToShortDateString()}&endDate={d.SummaryDayHour.ToShortDateString()}&measureType={(int)MeasureTypes.Processor}")}' target='_parent'>" +
                $"<span class='{qualityIndicatorService.GetCssClassForScore(d.CPUScore, false)}'>{d.CPUScore}</span>" +
                $"</a>",
                IsDownload ?
                d.RAMScore.ToString()
                                : $"<a href='{GetPageUrl(Names.Tab.ServerHealth, "ServerHealth", $"startDate={d.SummaryDayHour.ToShortDateString()}&endDate={d.SummaryDayHour.ToShortDateString()}&measureType={(int)MeasureTypes.Ram}")}' target='_parent'>" +
                $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RAMScore, false)}'>{d.RAMScore}</span>" +
                $"</a>",
                IsDownload || d.ServerType != "SQL"
                                        ? d.FriendlyMemorySignalStateScore
                                        : $"<div style='display:inline-block' title='{d.MemorySignalStateRatio}% occurence of low memory<br/>{d.Pageouts} pageout(s)' data-placement='right'>" +
                $"<span class='{qualityIndicatorService.GetCssClassForScore(d.MemorySignalStateScore, false)}'>{d.MemorySignalStateScore}</span>" +
                $"</div>",
                IsDownload || d.ServerType != "SQL"
                                ? d.FriendlyWaitsScore
                                : $"<a href='{GetPageUrl(d.ServerId, "Waits", $"Server={d.ServerId}&Hour={d.SummaryDayHour.ToString("s")}")}' target='_self'>" +
                $"<b class='{qualityIndicatorService.GetCssClassForScore(d.WaitsScore, false)}'>{d.FriendlyWaitsScore}</b>" +
                $"</a>",
                IsDownload || d.ServerType != "SQL"
                                        ? d.FriendlyVirtualLogFilesScore
                                        :$"<div style='display:inline-block' title='{(d.MaxVirtualLogFiles > 0 ? d.MaxVirtualLogFiles + "virtual log file(s)" : string.Empty)}' data-placement='right'>" +
                $"<b class='{qualityIndicatorService.GetCssClassForScore(d.VirtualLogFilesScore, false)}'>{d.FriendlyVirtualLogFilesScore}</b>" +
                $"</div>",
                IsDownload || d.ServerType != "SQL"
                                        ? d.FriendlyLatencyScore
                                        : $"<div style='display:inline-block' " +
                $"title='{(!string.IsNullOrEmpty(d.HighestLatencyDatabase) ? string.Format("{0} ({1} File)<br/>Read Latency: {2} ms<br/>Write Latency: {3} ms", d.HighestLatencyDatabase, d.DatabaseFileType, d.ReadLatencyMs, d.WriteLatencyMs) : string.Empty)} ' data-placement='right'>" +
                $"<b class='{qualityIndicatorService.GetCssClassForScore(d.LatencyScore, false)}'>{d.FriendlyLatencyScore}</b>" +
                $"</div>",
                d.IsActiveWeeklySample ? "Yes" : "No"
            }).ToArray();

            return(new kCura.PDD.Web.Controllers.FilterResult()
            {
                Data = aaData, TotalRecordCount = grid.Count
            });
        }
        private string FetchFileData(UptimeService svc, UptimeReportViewModel viewModel, IQualityIndicatorService qualityIndicatorService)
        {
            var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService);

            using (var sw = new System.IO.StringWriter())
            {
                var heaaderArr = new string[]
                {
                    "Hour", "Score", "Status", "Uptime"
                };
                sw.WriteLine(string.Join(",", heaaderArr));
                foreach (var row in filterResult.Data)
                {
                    sw.WriteCsvSafeLine(row);
                }
                return(sw.ToString());
            }
        }
        private FilterResult FilterData(UptimeService svc, UptimeReportViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService)
        {
            var grid = svc.UptimeHours(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands);

            var aaData = grid.Data.Select(d => new string[]
            {
                $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")}",
                isDownload
                    ? $"{d.Score} {(d.AffectedByMaintenanceWindow ? "(Affected By Maintenance Window)" : string.Empty)}"
                    : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.Score, false)}'>{d.Score} {(d.AffectedByMaintenanceWindow ? "(Affected By Maintenance Window)" : string.Empty)}</span>",
                d.Status.ToString(),
                d.Uptime.ToString("N2")
            }).ToArray();

            return(new FilterResult()
            {
                Data = aaData, TotalRecordCount = grid.Count
            });
        }
Exemple #15
0
 public RecoverabilityIntegrityReport()
     : base(lookingGlassDependency: true)
 {
     _backupDbcc       = this.GetBackupDbccService();
     _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
 }
        private FilterResult FilterData(SystemLoadService svc, SystemLoadWaitsViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService)
        {
            var grid    = svc.Waits(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands);
            var sysInfo = svc.ReadSystemInformation().ToList();
            var aaData  = grid.Data.Select(d => new string[] {
                $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour.ToString("t")}",
                $"{d.Server} ({d.ServerId})",
                isDownload
                    ? d.OverallScore.ToString()
                                        :$"<span class='{qualityIndicatorService.GetCssClassForScore(d.OverallScore, false)}'>{d.OverallScore}</span>",
                $"{d.SignalWaitsRatio}%",
                d.PercentOfCPUThreshold.ToString("f2"),
                isDownload
                    ? d.WaitType
                    : $"<div style='display:inline-block;' title='{d.WaitDescription}'>{d.WaitType}</div>",
                d.SignalWaitTime.ToString(),
                d.TotalWaitTime.ToString(),
                d.DifferentialWaitingTasksCount.ToString(),
                d.IsPoisonWait ? "Yes" : "No",
                d.IsActiveWeeklySample ? "Yes" : "No"
            }).ToArray();

            return(new kCura.PDD.Web.Controllers.FilterResult()
            {
                Data = aaData, TotalRecordCount = grid.Count
            });
        }
        private string FetchFileData(SystemLoadService svc, SystemLoadWaitsViewModel viewModel, IQualityIndicatorService qualityIndicatorService)
        {
            var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService);

            using (var sw = new System.IO.StringWriter())
            {
                var heaaderArr = new string[]
                {
                    "Hour", "Server", "Waits Score", "Signal Waits Ratio", "Processor Time Utilization", "Wait Type",
                    "Signal Wait Time (ms)", "Total Wait Time (ms)", "Waiting Task Count", "Poison Wait", "Weekly Sample"
                };
                sw.WriteLine(string.Join(",", heaaderArr));
                foreach (var row in filterResult.Data)
                {
                    sw.WriteCsvSafeLine(row);
                }
                return(sw.ToString());
            }
        }
 public Waits()
     : base(lookingGlassDependency: true)
 {
     _systemLoad       = new SystemLoadService(this.SqlRepo);
     _indicatorService = new QualityIndicatorService(new QualityIndicatorConfigurationService(this.SqlRepo.ConfigurationRepository));
 }
        private FilterResult FilterData(BackupDbccService svc, RecoveryObjectivesViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService)
        {
            var grid   = svc.RecoveryObjectivesSummary(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands);
            var aaData = grid.Data.Select(d => new string[] {
                $"{d.ServerName} ({d.ServerId})",
                d.DatabaseName,
                isDownload ?
                d.RPOScore.ToString()
                                        : $"<span class='{qualityIndicatorService.GetCssClassForScore(d.RPOScore, false)}'>{d.RPOScore}</span>",
                isDownload ?
                d.RTOScore.ToString()
                                        :$"<span class='{qualityIndicatorService.GetCssClassForScore(d.RTOScore, false)}'>{d.RTOScore}</span>",
                d.PotentialDataLossMinutes.ToString(),
                d.EstimatedTimeToRecoverHours.ToString()
            }).ToArray();

            return(new kCura.PDD.Web.Controllers.FilterResult()
            {
                Data = aaData, TotalRecordCount = grid.Count
            });
        }
Exemple #20
0
 public ScoreImageService(IQualityIndicatorService indicatorService)
 {
     _indicatorService = indicatorService;
 }
        private string FetchFileData(BackupDbccService svc, RecoveryObjectivesViewModel viewModel, IQualityIndicatorService qualityIndicatorService)
        {
            var filterResult = FilterData(svc, viewModel, true, qualityIndicatorService);

            using (var sw = new System.IO.StringWriter())
            {
                var heaaderArr = new string[]
                {
                    "Server", "Database Name", "RPO Score", "RTO Score", "Potential Data Loss (Minutes)", "Estimated Time to Recover (Hours)"
                };
                sw.WriteLine(string.Join(",", heaaderArr));
                foreach (var row in filterResult.Data)
                {
                    sw.WriteCsvSafeLine(row);
                }
                return(sw.ToString());
            }
        }
        private FilterResult FilterData(UserExperienceService svc, UserExperienceServerViewModel viewModel, bool isDownload, IQualityIndicatorService qualityIndicatorService)
        {
            var grid   = svc.ServerWorkspaces(viewModel.GridConditions, viewModel.FilterConditions, viewModel.FilterOperands);
            var aaData = grid.Data.Select(d => new string[] {
                $"{d.SummaryDayHour.ToShortDateString()} {d.SummaryDayHour:t}",
                isDownload ?
                $"{d.Server} ({d.ServerId})"
                                        : string.Format(HoursLinkFormat, d.ServerId, string.Empty, $"{d.Server} ({d.ServerId})"),
                isDownload
                                        ? d.Score.ToString()
                                        :$"<span class='{qualityIndicatorService.GetCssClassForScore(d.Score, false)}'>{d.Score}</span>",
                isDownload ?
                $"{d.Workspace} ({d.WorkspaceId})"
                                        : string.Format(HoursLinkFormat, d.ServerId, $"&Workspace={d.WorkspaceId}", $"{d.Workspace} ({d.WorkspaceId})"),
                d.TotalLongRunning.ToString(),
                d.TotalUsers.ToString(),
                d.TotalSearchAudits.ToString(),
                d.TotalNonSearchAudits.ToString(),
                d.TotalAudits.ToString(),
                d.TotalExecutionTime.ToString(),
                d.IsActiveWeeklySample ? "Yes" : "No"
            }).ToArray();

            return(new FilterResult()
            {
                Data = aaData, TotalRecordCount = grid.Count
            });
        }