UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

87 lines (79 loc) 1.75 kB
"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