openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
85 lines (77 loc) • 1.69 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MetricModel = exports.METRIC_TYPE_DAY = exports.METRIC_TYPE_HOUR = exports.METRIC_TYPE_MINUTE = undefined;
var _mongoose = require('mongoose');
var _config = require('../config');
const METRIC_TYPE_MINUTE = exports.METRIC_TYPE_MINUTE = 'm';
const METRIC_TYPE_HOUR = exports.METRIC_TYPE_HOUR = 'h';
const METRIC_TYPE_DAY = exports.METRIC_TYPE_DAY = 'd';
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 = exports.MetricModel = _config.connectionAPI.model('Metric', MetricsSchema);
//# sourceMappingURL=metrics.js.map