This commit is contained in:
@@ -219,18 +219,26 @@ namespace AyaNova.Api.Controllers
|
||||
var dsAttachmentFileSize = DailyMetrics.Select(z => new Tuple<double, double>(z.t.ToOADate(), z.AttachmentFileSize)).ToList();
|
||||
dsAttachmentFileSize = Util.DataUtil.LargestTriangleThreeBuckets(dsAttachmentFileSize, (int)maxRecords) as List<Tuple<double, double>>;
|
||||
|
||||
var dsAttachmentFilesAvailableSpace = DailyMetrics.Select(z => new Tuple<double, double>(z.t.ToOADate(), z.AttachmentFilesAvailableSpace)).ToList();
|
||||
dsAttachmentFilesAvailableSpace = Util.DataUtil.LargestTriangleThreeBuckets(dsAttachmentFilesAvailableSpace, (int)maxRecords) as List<Tuple<double, double>>;
|
||||
|
||||
var dsUtilityFileCount = DailyMetrics.Select(z => new Tuple<double, double>(z.t.ToOADate(), z.UtilityFileCount)).ToList();
|
||||
dsUtilityFileCount = Util.DataUtil.LargestTriangleThreeBuckets(dsUtilityFileCount, (int)maxRecords) as List<Tuple<double, double>>;
|
||||
|
||||
var dsUtilityFileSize = DailyMetrics.Select(z => new Tuple<double, double>(z.t.ToOADate(), z.UtilityFileSize)).ToList();
|
||||
dsUtilityFileSize = Util.DataUtil.LargestTriangleThreeBuckets(dsUtilityFileSize, (int)maxRecords) as List<Tuple<double, double>>;
|
||||
|
||||
var dsUtilityFilesAvailableSpace = DailyMetrics.Select(z => new Tuple<double, double>(z.t.ToOADate(), z.UtilityFilesAvailableSpace)).ToList();
|
||||
dsUtilityFilesAvailableSpace = Util.DataUtil.LargestTriangleThreeBuckets(dsUtilityFilesAvailableSpace, (int)maxRecords) as List<Tuple<double, double>>;
|
||||
|
||||
var MetricDD = new
|
||||
{
|
||||
attachmentFileCount = dsAttachmentFileCount.Select(z => new MetricLong(DateTime.FromOADate(z.Item1), z.Item2)).ToArray(),
|
||||
attachmentFileSize = dsAttachmentFileSize.Select(z => new MetricLong(DateTime.FromOADate(z.Item1), z.Item2 / MB)).ToArray(),
|
||||
attachmentFilesAvailableSpace = dsAttachmentFilesAvailableSpace.Select(z => new MetricLong(DateTime.FromOADate(z.Item1), z.Item2 / MB)).ToArray(),
|
||||
UtilityFileCount = dsUtilityFileCount.Select(z => new MetricLong(DateTime.FromOADate(z.Item1), z.Item2)).ToArray(),
|
||||
UtilityFileSize = dsUtilityFileSize.Select(z => new MetricLong(DateTime.FromOADate(z.Item1), z.Item2 / MB)).ToArray()
|
||||
UtilityFileSize = dsUtilityFileSize.Select(z => new MetricLong(DateTime.FromOADate(z.Item1), z.Item2 / MB)).ToArray(),
|
||||
UtilityFilesAvailableSpace = dsUtilityFilesAvailableSpace.Select(z => new MetricLong(DateTime.FromOADate(z.Item1), z.Item2 / MB)).ToArray()
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -19,7 +19,10 @@ namespace AyaNova.Biz
|
||||
private static Process _process = Process.GetCurrentProcess();
|
||||
|
||||
private static TimeSpan _oldCPUTime = TimeSpan.Zero;
|
||||
private static DateTime _lastSnapshot = DateTime.UtcNow;
|
||||
private static DateTime _lastMMSnapshot = DateTime.UtcNow;
|
||||
private static DateTime _lastHHSnapshot = DateTime.UtcNow;
|
||||
private static DateTime _lastDDSnapshot = DateTime.UtcNow;
|
||||
|
||||
// private static DateTime _lastRpsTime = DateTime.UtcNow;
|
||||
private static double _cpu = 0;
|
||||
|
||||
@@ -39,21 +42,17 @@ namespace AyaNova.Biz
|
||||
{
|
||||
|
||||
|
||||
//Nothing is gathered less than one minute frequency
|
||||
if (!DateUtil.IsAfterDuration(_lastSnapshot, tsOneMinute))
|
||||
return;
|
||||
|
||||
log.LogTrace("Starting metrics snapshot");
|
||||
|
||||
if (DateUtil.IsAfterDuration(_lastMMSnapshot, tsOneHour))
|
||||
{
|
||||
/////////////////////////////////////////////
|
||||
//ONE MINUTE SNAPS
|
||||
//
|
||||
|
||||
log.LogTrace("MM metrics snapshot");
|
||||
var now = DateTime.UtcNow;
|
||||
_process.Refresh();
|
||||
|
||||
//CPU
|
||||
var cpuElapsedTime = now.Subtract(_lastSnapshot).TotalMilliseconds;
|
||||
var cpuElapsedTime = now.Subtract(_lastMMSnapshot).TotalMilliseconds;
|
||||
var newCPUTime = _process.TotalProcessorTime;
|
||||
var elapsedCPU = (newCPUTime - _oldCPUTime).TotalMilliseconds;
|
||||
_cpu = elapsedCPU * 100 / Environment.ProcessorCount / cpuElapsedTime;
|
||||
@@ -93,13 +92,16 @@ namespace AyaNova.Biz
|
||||
ct.SaveChanges();
|
||||
//System.Diagnostics.Debug.WriteLine("MM SAVED");
|
||||
}
|
||||
|
||||
_lastMMSnapshot = now;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//EVERY HOUR SNAPS
|
||||
//
|
||||
if (DateUtil.IsAfterDuration(_lastSnapshot, tsOneHour))
|
||||
if (DateUtil.IsAfterDuration(_lastHHSnapshot, tsOneHour))
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
log.LogTrace("HH metrics snapshot");
|
||||
//RECORDS IN TABLE
|
||||
// //Only do this once per hour
|
||||
// log.LogTrace("Counting table records");
|
||||
@@ -130,19 +132,19 @@ namespace AyaNova.Biz
|
||||
// // var jobtag = new MetricTags("JobStatus", stat.ToString());
|
||||
// // metrics.Measure.Gauge.SetValue(MetricsRegistry.JobsGauge, jobtag, await JobsBiz.GetCountForJobStatusAsync(ct, stat));
|
||||
// }
|
||||
_lastHHSnapshot = now;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//ONCE A DAY SNAPS AND CLEANUP
|
||||
//
|
||||
if (DateUtil.IsAfterDuration(_lastSnapshot, ts24Hours))
|
||||
if (DateUtil.IsAfterDuration(_lastDDSnapshot, ts24Hours))
|
||||
{
|
||||
log.LogTrace("DD metrics snapshot");
|
||||
var now = DateTime.UtcNow;
|
||||
//FILES ON DISK
|
||||
var UtilFilesInfo = FileUtil.GetUtilityFolderSizeInfo();
|
||||
var AttachmentFilesInfo = FileUtil.GetAttachmentFolderSizeInfo();
|
||||
@@ -154,21 +156,20 @@ namespace AyaNova.Biz
|
||||
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||
{
|
||||
//write to db
|
||||
MetricDD dd = new MetricDD(){
|
||||
AttachmentFileSize= AttachmentFilesInfo.SizeWithChildren,
|
||||
AttachmentFileCount=AttachmentFilesInfo.FileCountWithChildren,
|
||||
AttachmentFilesAvailableSpace=AttachmentFilesAvailableSpace,
|
||||
UtilityFileSize=UtilFilesInfo.SizeWithChildren,
|
||||
UtilityFileCount=UtilFilesInfo.FileCountWithChildren,
|
||||
UtilityFilesAvailableSpace=UtilityFilesAvailableSpace
|
||||
MetricDD dd = new MetricDD()
|
||||
{
|
||||
AttachmentFileSize = AttachmentFilesInfo.SizeWithChildren,
|
||||
AttachmentFileCount = AttachmentFilesInfo.FileCountWithChildren,
|
||||
AttachmentFilesAvailableSpace = AttachmentFilesAvailableSpace,
|
||||
UtilityFileSize = UtilFilesInfo.SizeWithChildren,
|
||||
UtilityFileCount = UtilFilesInfo.FileCountWithChildren,
|
||||
UtilityFilesAvailableSpace = UtilityFilesAvailableSpace
|
||||
};
|
||||
ct.MetricDD.Add(dd);
|
||||
ct.SaveChanges();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////
|
||||
//CLEAR OLD ENTRIES
|
||||
//
|
||||
@@ -178,12 +179,13 @@ namespace AyaNova.Biz
|
||||
{
|
||||
ct.Database.ExecuteSqlInterpolated($"delete from ametricmm where t < {ClearDate}");
|
||||
}
|
||||
_lastDDSnapshot = now;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
_lastSnapshot = now;
|
||||
//----
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user