UNPKG

pandora-metrics

Version:
62 lines 2.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const MetricLevel_1 = require("./MetricLevel"); class MetricsCollectPeriodConfig { constructor() { this.levelPeriodMap = new Map(); this.globalPeriod = 60; this.fillLevelPeriodMap(); } static getInstance() { if (!this.instance) { this.instance = new MetricsCollectPeriodConfig(); } return this.instance; } /** * 预先填充map */ fillLevelPeriodMap() { this.levelPeriodMap.set(MetricLevel_1.MetricLevel.CRITICAL, 5); this.levelPeriodMap.set(MetricLevel_1.MetricLevel.MAJOR, 30); this.levelPeriodMap.set(MetricLevel_1.MetricLevel.NORMAL, 60); this.levelPeriodMap.set(MetricLevel_1.MetricLevel.MINOR, 90); this.levelPeriodMap.set(MetricLevel_1.MetricLevel.TRIVIAL, 120); } period(level) { let value = this.levelPeriodMap.get(MetricLevel_1.MetricLevel[level]); // 这里采集周期和分桶的间隔保持一致 return Math.min(value, this.globalPeriod); } /** * 修改全局的的时间间隔配置,但不会影响到已存在的level的配置 * * @param globalPeriodSeconds * @return */ configGlobalPeriod(globalPeriodSeconds) { if (globalPeriodSeconds < 0) { globalPeriodSeconds = 60; } this.globalPeriod = globalPeriodSeconds; return this; } getCachedTimeForLevel(level) { switch (level) { case MetricLevel_1.MetricLevel.TRIVIAL: return 120; case MetricLevel_1.MetricLevel.MINOR: return 90; case MetricLevel_1.MetricLevel.NORMAL: return 60; case MetricLevel_1.MetricLevel.MAJOR: return 30; case MetricLevel_1.MetricLevel.CRITICAL: return 5; default: return 60; } } } exports.MetricsCollectPeriodConfig = MetricsCollectPeriodConfig; //# sourceMappingURL=MetricsCollectPeriodConfig.js.map