UNPKG

openhim-core

Version:

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

85 lines (77 loc) 1.69 kB
'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