This commit is contained in:
2020-05-28 14:12:15 +00:00
parent 918baa85b8
commit ea33638667
4 changed files with 7 additions and 109 deletions

View File

@@ -68,9 +68,6 @@ namespace AyaNova.Api.Controllers
return StatusCode(403, new ApiNotAuthorizedResponse());
}
//use specified values or just return all
maxRecords ??= MAX_RECORDS_BEFORE_DOWNSAMPLING;
@@ -78,17 +75,14 @@ namespace AyaNova.Api.Controllers
//touniversal is because the parameters are converted to local time here, but then sent to the query as local time as well and not universal time which is what it should be
MinuteMetrics = await ct.MetricMM.AsNoTracking().Where(z => z.t >= tsStart.ToUniversalTime() && z.t <= tsEnd.ToUniversalTime()).OrderBy(z => z.t).ToListAsync();
//var v=await ct.MetricMM.AsNoTracking().Where(z => z.t >= tsStart.ToUniversalTime() && z.t <= tsEnd.ToUniversalTime()).OrderByDescending(z => z.t).ToListAsync();
//Log
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserIdFromContext.Id(HttpContext.Items), 0, AyaType.Metrics, AyaEvent.Retrieved), ct);
//Downsample? This should work for longer time period metrics because the minute ones are the greatest quantity
//Downsample
if (maxRecords < MinuteMetrics.Count)
{
//yes, so need to return individual labels and downsampled data as they wont' sync anymore
{
var dsCPU = MinuteMetrics.Select(z => new Tuple<double, double>(z.t.ToOADate(), z.CPU)).ToList();
dsCPU = Util.DataUtil.LargestTriangleThreeBuckets(dsCPU, (int)maxRecords) as List<Tuple<double, double>>;
@@ -122,18 +116,12 @@ namespace AyaNova.Api.Controllers
cpuLabels = dsCPU.Select(z => DateTime.FromOADate(z.Item1)).ToArray(),
cpu = dsCPU.Select(z => z.Item2).ToArray(),
genAllLabels = dsGen0.Select(z => DateTime.FromOADate(z.Item1)).Union(dsGen1.Select(z => DateTime.FromOADate(z.Item1))).Union(dsGen2.Select(z => DateTime.FromOADate(z.Item1))).ToArray(),
// gen0Labels = dsGen0.Select(z => DateTime.FromOADate(z.Item1)).ToArray(),
gen0 = dsGen0.Select(z => (int)z.Item2).ToArray(),
// gen1Labels = dsGen1.Select(z => DateTime.FromOADate(z.Item1)).ToArray(),
gen1 = dsGen1.Select(z => (int)z.Item2).ToArray(),
// gen2Labels = dsGen2.Select(z => DateTime.FromOADate(z.Item1)).ToArray(),
gen2 = dsGen2.Select(z => (int)z.Item2).ToArray(),
memAllLabels = dsAllocated.Select(z => DateTime.FromOADate(z.Item1)).Union(dsWorkingSet.Select(z => DateTime.FromOADate(z.Item1))).Union(dsPrivateBytes.Select(z => DateTime.FromOADate(z.Item1))).ToArray(),
// allocatedLabels = dsAllocated.Select(z => DateTime.FromOADate(z.Item1)).ToArray(),
allocated = dsAllocated.Select(z => z.Item2 / MB).ToArray(),
//workingSetLabels = dsWorkingSet.Select(z => DateTime.FromOADate(z.Item1)).ToArray(),
workingSet = dsWorkingSet.Select(z => z.Item2 / MB).ToArray(),
// privateBytesLabels = dsPrivateBytes.Select(z => DateTime.FromOADate(z.Item1)).ToArray(),
privateBytes = dsPrivateBytes.Select(z => z.Item2 / MB).ToArray()
}
@@ -149,9 +137,8 @@ namespace AyaNova.Api.Controllers
{
DownSampled = false,
MetricMM = new
{
//labels = MinuteMetrics.Select(z => z.t.ToUniversalTime()).ToArray(),//db is in UTC, ef core retrieves as if it was local
labels = MinuteMetrics.Select(z => z.t).ToArray(),//db is in UTC, ef core retrieves as if it was local
{
labels = MinuteMetrics.Select(z => z.t).ToArray(),
cpu = MinuteMetrics.Select(z => z.CPU).ToArray(),
gen0 = MinuteMetrics.Select(z => z.Gen0).ToArray(),
gen1 = MinuteMetrics.Select(z => z.Gen1).ToArray(),