public ActionResult <List <Server_Resource_Info> > GetCpuPerProcess() { try { using (var context = new ServerResourcesContext()) { var processCollection = context.Server_Resource_Info .Include(SRI => SRI.Sample_Time) .Include(SRI => SRI.Resource_Type) .Include(SRI => SRI.Process) .Include(SRI => SRI.Server_Resource_Unit) .Where(SRI => SRI.Resource_Type_FK == 2 && SRI.Process_FK != null); var output = processCollection.Where(PC => PC.Sample_Time.Time > (DateTime.Now - TimeSpan.FromSeconds(70))); if (processCollection.Count() > 0) { return(Ok(output.ToList())); } } throw new FieldAccessException("Could not find running processes"); } catch (Exception e) { return(BadRequest(e.Message)); } }
static void InsertProcess(ProcessInformation proc_info) { var proc = new ServerResourcesDataAccess.Process() { Name = proc_info.Name, Status = proc_info.Status, PID = proc_info.Pid }; using (var context = new ServerResourcesContext()) { var associated_proc = context.Process.Where(P => P.Name == proc.Name).SingleOrDefault(); proc.Server_User_FK = context.Server_User.Where(SU => SU.Name == proc_info.User).SingleOrDefault().Id; if (associated_proc != null) { associated_proc.PID = proc.PID; associated_proc.Server_User_FK = proc.Server_User_FK; } else { context.Add(proc); } context.SaveChanges(); } }
static void InsertProcessSpecificUsage(TopProcessOutput usage_info) { foreach (var proc_info in usage_info.ProcessesSpecificUsage) { if (proc_info.Status == "R") { InsertProcess(proc_info); using (var context = new ServerResourcesContext()) { context.Server_Resource_Info.Add(new Server_Resource_Info() { Value = proc_info.CpuUsage, Sample_Time_FK = context.Sample_Time.Last().Id, Server_Resource_Unit_FK = context.Server_Resource_Unit.Where(SRU => SRU.ShortName == "PRCENT").SingleOrDefault().Id, Process_FK = context.Process.Where(P => P.PID == proc_info.Pid).SingleOrDefault().Id, Resource_Type_FK = context.Resource_Type.Where(RT => RT.Short_Name == "CPU_USE").SingleOrDefault().Id }); context.Server_Resource_Info.Add(new Server_Resource_Info() { Value = proc_info.RamUsage, Sample_Time_FK = context.Sample_Time.Last().Id, Server_Resource_Unit_FK = context.Server_Resource_Unit.Where(SRU => SRU.ShortName == "PRCENT").SingleOrDefault().Id, Process_FK = context.Process.Where(P => P.PID == proc_info.Pid).SingleOrDefault().Id, Resource_Type_FK = context.Resource_Type.Where(RT => RT.Short_Name == "RAM_USE").SingleOrDefault().Id }); context.SaveChanges(); } } } }
static void InsertSamplingTime(DateTime samplingTime) { using (var context = new ServerResourcesContext()) { context.Sample_Time.Add(new Sample_Time() { Time = samplingTime }); context.SaveChanges(); } }
public ActionResult <Server_Resource_Info> GetCpu() { try { using (var context = new ServerResourcesContext()) { var lastCpuTemp = context.Server_Resource_Info .Include(SRI => SRI.Resource_Type) .Include(SRI => SRI.Sample_Time) .Include(SRI => SRI.Server_Resource_Unit) .Where(SRI => SRI.Process_FK == null && SRI.Resource_Type_FK == 3) .OrderBy(SRI => SRI.Id) .LastOrDefault(); if (lastCpuTemp.Sample_Time.Time >= (DateTime.Now - TimeSpan.FromSeconds(5))) { return(Ok(lastCpuTemp)); } } var sensorOutput = _sensorsHelper.GetCurrentSensorsProcessReadings(); double total_temps = 0; sensorOutput.Cpus_Temp.ToList().ForEach(c => total_temps += c.Cpu_Temp); var cpu_temp = (total_temps / sensorOutput.Cpus_Temp.Count()); var lastCalculatedCpuTemp = new Server_Resource_Info() { Id = 0, Value = cpu_temp, Sample_Time_FK = 0, Server_Resource_Unit_FK = 2, Sample_Time = new Sample_Time() { Id = 0, Time = DateTime.Now }, Resource_Type = new Resource_Type() { Id = 0, Short_Name = "CPU_TEMP" }, Server_Resource_Unit = new Server_Resource_Unit() { Id = 0, Unit = "°C", ShortName = "TEMP" } }; return(Ok(lastCalculatedCpuTemp)); } catch (Exception e) { return(BadRequest(e.Message)); } }
static void ManageOldData(DateTime samplingTime) { using (var context = new ServerResourcesContext()) { var oldest_sample = context.Sample_Time.OrderBy(ST => ST.Time).First(); if (oldest_sample.Time < (samplingTime - TimeSpan.FromMinutes(60))) { context.Remove(oldest_sample); } context.SaveChanges(); } }
public ActionResult <Server_Resource_Info> GetCpu() { var request = new HttpRequestMessage(); try { using (var context = new ServerResourcesContext()) { var lastCpuUsage = context.Server_Resource_Info .Include(SRI => SRI.Resource_Type) .Include(SRI => SRI.Sample_Time) .Include(SRI => SRI.Server_Resource_Unit) .Where(SRI => SRI.Process_FK == null && SRI.Resource_Type_FK == 2) .OrderBy(SRI => SRI.Id) .LastOrDefault(); if (lastCpuUsage.Sample_Time.Time >= (DateTime.Now - TimeSpan.FromSeconds(2))) { return(Ok(lastCpuUsage)); } } var topOutput = _topHelper.GetCurrentTopProcessReadings(); var lastCalculatedCpuUsage = new Server_Resource_Info() { Id = 0, Value = topOutput.TotalCpuUsage, Sample_Time_FK = 0, Server_Resource_Unit_FK = 2, Sample_Time = new Sample_Time() { Id = 0, Time = DateTime.Now }, Resource_Type = new Resource_Type() { Id = 0, Short_Name = "CPU_USE" }, Server_Resource_Unit = new Server_Resource_Unit() { Id = 0, Unit = "%", ShortName = "PRCENT" } }; return(Ok(lastCalculatedCpuUsage)); } catch (Exception e) { //return request.CreateResponse(HttpStatusCode.BadRequest, e.Message); return(BadRequest(e.Message)); } }
static void InsertTemperature(SensorsProcessOutput temperature_info) { double total_temps = 0; temperature_info.Cpus_Temp.ToList().ForEach(c => total_temps += c.Cpu_Temp); var cpu_temp = (total_temps / temperature_info.Cpus_Temp.Count()); using (var context = new ServerResourcesContext()) { context.Server_Resource_Info.Add(new Server_Resource_Info() { Value = cpu_temp, Sample_Time_FK = context.Sample_Time.Last().Id, Server_Resource_Unit_FK = context.Server_Resource_Unit.Where(SRU => SRU.ShortName == "TEMP").SingleOrDefault().Id, Process_FK = null, Resource_Type_FK = context.Resource_Type.Where(RT => RT.Short_Name == "CPU_TEMP").SingleOrDefault().Id });; context.SaveChanges(); } }
static void Main(string[] args) { using (var context = new ServerResourcesContext()) { var test = context.Server_Resource_Info .Include(sri => sri.Sample_Time) .FirstOrDefault().Sample_Time.Time; var test2 = context.Server_Resource_Info .Include(sri => sri.Server_Resource_Unit) .FirstOrDefault().Server_Resource_Unit.Unit; Console.WriteLine(test); Console.WriteLine(test2); } Console.WriteLine(DateTime.Now > (DateTime.Now - TimeSpan.FromMinutes(1))); Console.WriteLine("Added entities"); Console.ReadLine(); }
static void InsertTotalUsages(TopProcessOutput usage_info) { using (var context = new ServerResourcesContext()) { context.Server_Resource_Info.Add(new Server_Resource_Info() { Value = usage_info.TotalCpuUsage, Sample_Time_FK = context.Sample_Time.Last().Id, Server_Resource_Unit_FK = context.Server_Resource_Unit.Where(SRU => SRU.ShortName == "PRCENT").SingleOrDefault().Id, Process_FK = null, Resource_Type_FK = context.Resource_Type.Where(RT => RT.Short_Name == "CPU_USE").SingleOrDefault().Id }); context.Server_Resource_Info.Add(new Server_Resource_Info() { Value = usage_info.TotalRamUsage, Sample_Time_FK = context.Sample_Time.Last().Id, Server_Resource_Unit_FK = context.Server_Resource_Unit.Where(SRU => SRU.ShortName == "PRCENT").SingleOrDefault().Id, Process_FK = null, Resource_Type_FK = context.Resource_Type.Where(RT => RT.Short_Name == "RAM_USE").SingleOrDefault().Id }); context.SaveChanges(); } }