openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
87 lines (79 loc) • 1.75 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MetricModel = exports.METRIC_TYPE_DAY = exports.METRIC_TYPE_HOUR = exports.METRIC_TYPE_MINUTE = void 0;
var _mongoose = require("mongoose");
var _config = require("../config");
const METRIC_TYPE_MINUTE = 'm';
exports.METRIC_TYPE_MINUTE = METRIC_TYPE_MINUTE;
const METRIC_TYPE_HOUR = 'h';
exports.METRIC_TYPE_HOUR = METRIC_TYPE_HOUR;
const METRIC_TYPE_DAY = 'd';
exports.METRIC_TYPE_DAY = METRIC_TYPE_DAY;
const MetricsSchema = new _mongoose.Schema({
startTime: {
type: Date,
required: true
},
type: {
type: String,
enum: [METRIC_TYPE_MINUTE, METRIC_TYPE_HOUR, METRIC_TYPE_DAY],
required: true
},
channelID: {
type: _mongoose.Schema.Types.ObjectId,
required: true
},
requests: {
type: Number,
default: 0
},
// Sum of response time for all requests
responseTime: {
type: Number,
default: 0
},
minResponseTime: {
type: Number,
default: 0
},
maxResponseTime: {
type: Number,
default: 0
},
failed: {
type: Number,
default: 0
},
successful: {
type: Number,
default: 0
},
processing: {
type: Number,
default: 0
},
completed: {
type: Number,
default: 0
},
completedWithErrors: {
type: Number,
default: 0
}
}); // Expire minute buckets after an hour
MetricsSchema.index('startTime', {
expires: '1h',
partialFilterExpression: {
type: METRIC_TYPE_MINUTE
}
}); // Index for aggregation match stage
MetricsSchema.index({
startTime: 1,
channelID: 1,
type: 1
});
const MetricModel = _config.connectionAPI.model('Metric', MetricsSchema);
exports.MetricModel = MetricModel;
//# sourceMappingURL=metrics.js.map