KPIList GenerateKPIListFromStatsXml(XmlDocument statsXml, string appName, string serverName) { KPIList kpiList = new KPIList(appName, serverName); if (statsXml != null) { string currentHour = statsXml.SelectSingleNode("//STATUS-REPORT/STATISTICS/CURRENTDATE/DATE/@HOURS").InnerText; XmlNode statisticsDataNode = statsXml.SelectSingleNode("//STATUS-REPORT/STATISTICS/STATISTICSDATA[@INTERVALSTARTTIME='" + currentHour + ":00']"); kpiList.ListOfKPIs.Add(ExtractStatsValue(statisticsDataNode, "AVERAGEREQUESTTIME", "AverageRequestTime")); kpiList.ListOfKPIs.Add(ExtractStatsValue(statisticsDataNode, "SERVERBUSYCOUNT", "ServerTooBusyCount")); kpiList.ListOfKPIs.Add(ExtractStatsValue(statisticsDataNode, "RAWREQUESTS", "RawRequests")); kpiList.ListOfKPIs.Add(CreateBadRequestKPI(false)); } else { kpiList.ListOfKPIs.Add(ExtractStatsValue(null, "AVERAGEREQUESTTIME", "AverageRequestTime")); kpiList.ListOfKPIs.Add(ExtractStatsValue(null, "SERVERBUSYCOUNT", "ServerTooBusyCount")); kpiList.ListOfKPIs.Add(ExtractStatsValue(null, "RAWREQUESTS", "RawRequests")); kpiList.ListOfKPIs.Add(CreateBadRequestKPI(true)); } kpiList.ListOfKPIs.Add(CreateServerTooBusyPctKpi(kpiList)); return kpiList; }
KPIList GenerateKPIListFromStatsResults(string[] statsResults, string appName, string serverName, string logFolder) { KPIList kpiList = new KPIList(appName, serverName); kpiList.ListOfKPIs.Add(ExtractStatsValue(statsResults[0])); kpiList.ListOfKPIs.Add(ExtractStatsValue(statsResults[1])); //WriteKPIsToLogFile(kpiList, logFolder); //Uncomment when Debugging return kpiList; }
private KPI CreateServerTooBusyPctKpi(KPIList kpiList) { KPI stbPct = new KPI(); stbPct.KPIName = "ServerTooBusyPct"; stbPct.Dt = DateTime.UtcNow; KPI stb = kpiList.FindKpiByName("ServerTooBusyCount"); KPI rr = kpiList.FindKpiByName("RawRequests"); if (rr.KPIValue > 0) { stbPct.KPIValue = (stb.KPIValue * 100) / rr.KPIValue; } else { stbPct.KPIValue = 0; } return stbPct; }
void WriteKPIsToLogFile(KPIList kpis, string logFolder) { DateTime n = DateTime.Now; string date = string.Format("{0}-{1}-{2}-{3}-{4}", n.Year, n.Month, n.Hour, n.Minute, n.Second); string fileName = string.Format(@"{0}\{1}-{2}.txt", logFolder, kpis.ServerName, date); StreamWriter sw = new StreamWriter(fileName); foreach (KPI k in kpis.ListOfKPIs) { sw.WriteLine(k.KPIName + " : " + k.KPIValue); } sw.Close(); }