pandora-metrics
Version:
## Overview
62 lines • 2.11 kB
JavaScript
"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