Name
sn_app_insights.MetricUtil
Description
No description available
Script
var MetricUtil = Class.create();
MetricUtil.prototype = {
initialize: function () {
},
getMetric: function (metricName, fieldName, metricSubjects, metricObj, minutesAgoStart, isDuration, isAverage) {
var metricAggregateUtil = new MetricAggregateUtil();
// 7 days default time period
var end = new GlideDateTime();
var start = new GlideDateTime(end);
start.addSeconds(-1 * minutesAgoStart * 60);
var data;
if (isAverage)
data = metricAggregateUtil.transformToAvgDataArray(metricSubjects, metricName, start, end);
else
data = metricAggregateUtil.transformToMinDataArray(metricSubjects, metricName, start, end);
for (var i = 0; i < data.length; i++) {
var id = data[i].getSubject();
var grSubject = metricAggregateUtil.getGrSubject(metricObj, id, data[i].getTableName());
if (!grSubject)
continue;
var val = 0;
var validArray;
validArray = metricAggregateUtil.reduceArray(data[i], isAverage);
//Account for when no valid metrics are retrieved
if (validArray.length !== 0 && !isAverage) {
if (isDuration)
val = this.convertGlideDuration(grSubject.getValue(fieldName)) - validArray[0];
else if (isAverage)
val = validArray[0];
else
val = grSubject.getValue(fieldName) - validArray[0];
//If delta is negative, we know that there was a zboot or purge and the first value in the series is 0
if (val < 0)
//Get the field value and convert to a number
val = Number(this.convertGlideDuration(grSubject.getValue(fieldName)));
}
metricObj[id][metricName] = val;
}
},
convertGlideDuration: function (duration) {
return new GlideDateTime(duration).getNumericValue();
},
type: 'MetricUtil'
};
Sys ID
2e2e038a531870102e10ddeeff7b1237