@neo-one/monitor
Version:
NEO•ONE monitoring.
64 lines (62 loc) • 9.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const MetricsFactoryProxy_1 = require("./MetricsFactoryProxy");
class CollectingMetric {
constructor(metric) {
this.metric = metric;
this.mutableValues = [];
}
toJSON() {
return { metric: this.metric, values: this.mutableValues };
}
reset() {
this.mutableValues = [];
}
}
class CollectingCounter extends CollectingMetric {
inc(countOrLabels, count) {
this.mutableValues.push({ countOrLabels, count });
}
}
class CollectingHistogram extends CollectingMetric {
observe(countOrLabels, count) {
this.mutableValues.push({ countOrLabels, count });
}
}
class CollectingMetricsFactory extends MetricsFactoryProxy_1.MetricsFactoryProxy {
constructor() {
super(...arguments);
this.mutableCollectingCounters = {};
this.mutableCollectingHistograms = {};
}
collect() {
const currentMetrics = this.serializeJSON();
Object.values(this.mutableCollectingCounters).forEach((metric) => metric.reset());
Object.values(this.mutableCollectingHistograms).forEach((metric) => metric.reset());
return currentMetrics;
}
reset_forTest() {
super.reset_forTest();
this.mutableCollectingCounters = {};
this.mutableCollectingHistograms = {};
}
createCounterInternal(options) {
const counter = new CollectingCounter(options);
this.mutableCollectingCounters[counter.metric.name] = counter;
return new MetricsFactoryProxy_1.CounterProxy(counter, options.labelNames);
}
createHistogramInternal(options) {
const histogram = new CollectingHistogram(options);
this.mutableCollectingHistograms[histogram.metric.name] = histogram;
return new MetricsFactoryProxy_1.HistogramProxy(histogram, options.labelNames);
}
serializeJSON() {
return {
counters: Object.entries(this.mutableCollectingCounters).reduce((accMetric, [name, metric]) => (Object.assign({}, accMetric, { [name]: metric.toJSON() })), {}),
histograms: Object.entries(this.mutableCollectingHistograms).reduce((accMetric, [name, metric]) => (Object.assign({}, accMetric, { [name]: metric.toJSON() })), {}),
};
}
}
exports.CollectingMetricsFactory = CollectingMetricsFactory;
exports.collectingMetrics = new CollectingMetricsFactory();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbGxlY3RpbmdNZXRyaWNzRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtEQUEwRjtBQWUxRixNQUFNLGdCQUFnQjtJQUtwQixZQUFtQixNQUFTO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLGlCQUFrQixTQUFRLGdCQUErQjtJQUN0RCxHQUFHLENBQUMsYUFBK0IsRUFBRSxLQUFjO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGO0FBRUQsTUFBTSxtQkFBb0IsU0FBUSxnQkFBdUM7SUFDaEUsT0FBTyxDQUFDLGFBQStCLEVBQUUsS0FBYztRQUU1RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQUVELE1BQWEsd0JBQXlCLFNBQVEseUNBQW1CO0lBQWpFOztRQUNVLDhCQUF5QixHQUF5QyxFQUFFLENBQUM7UUFDckUsZ0NBQTJCLEdBQTJDLEVBQUUsQ0FBQztJQWdEbkYsQ0FBQztJQTlDUSxPQUFPO1FBQ1osTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFcEYsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRVMscUJBQXFCLENBQUMsT0FBc0I7UUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7UUFFOUQsT0FBTyxJQUFJLGtDQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRVMsdUJBQXVCLENBQUMsT0FBOEI7UUFDOUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7UUFFcEUsT0FBTyxJQUFJLG9DQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPO1lBQ0wsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsTUFBTSxDQUM3RCxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQzFCLFNBQVMsSUFDWixDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFDdkIsRUFDRixFQUFFLENBQ0g7WUFDRCxVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLENBQ2pFLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxtQkFDMUIsU0FBUyxJQUNaLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUN2QixFQUNGLEVBQUUsQ0FDSDtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsREQsNERBa0RDO0FBRVksUUFBQSxpQkFBaUIsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUMiLCJmaWxlIjoibmVvLW9uZS1tb25pdG9yL3NyYy9Db2xsZWN0aW5nTWV0cmljc0ZhY3RvcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3VudGVyUHJveHksIEhpc3RvZ3JhbVByb3h5LCBNZXRyaWNzRmFjdG9yeVByb3h5IH0gZnJvbSAnLi9NZXRyaWNzRmFjdG9yeVByb3h5JztcbmltcG9ydCB7XG4gIEJ1Y2tldGVkTWV0cmljT3B0aW9ucyxcbiAgQ29sbGVjdGVkTWV0cmljLFxuICBDb2xsZWN0ZWRNZXRyaWNzLFxuICBDb3VudGVyLFxuICBDb3VudGVyQmFzZSxcbiAgSGlzdG9ncmFtLFxuICBIaXN0b2dyYW1CYXNlLFxuICBMYWJlbHMsXG4gIE1ldHJpY0NvbGxlY3Rpb24sXG4gIE1ldHJpY09wdGlvbnMsXG4gIE1ldHJpY1ZhbHVlLFxufSBmcm9tICcuL3R5cGVzJztcblxuY2xhc3MgQ29sbGVjdGluZ01ldHJpYzxUIGV4dGVuZHMgTWV0cmljT3B0aW9ucyB8IEJ1Y2tldGVkTWV0cmljT3B0aW9ucz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0cmljOiBUO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgcmVhZG9ubHkta2V5d29yZCByZWFkb25seS1hcnJheVxuICBwcm90ZWN0ZWQgbXV0YWJsZVZhbHVlczogTWV0cmljVmFsdWVbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IobWV0cmljOiBUKSB7XG4gICAgdGhpcy5tZXRyaWMgPSBtZXRyaWM7XG4gICAgdGhpcy5tdXRhYmxlVmFsdWVzID0gW107XG4gIH1cblxuICBwdWJsaWMgdG9KU09OKCk6IENvbGxlY3RlZE1ldHJpYzxUPiB7XG4gICAgcmV0dXJuIHsgbWV0cmljOiB0aGlzLm1ldHJpYywgdmFsdWVzOiB0aGlzLm11dGFibGVWYWx1ZXMgfTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLm11dGFibGVWYWx1ZXMgPSBbXTtcbiAgfVxufVxuXG5jbGFzcyBDb2xsZWN0aW5nQ291bnRlciBleHRlbmRzIENvbGxlY3RpbmdNZXRyaWM8TWV0cmljT3B0aW9ucz4gaW1wbGVtZW50cyBDb3VudGVyQmFzZSB7XG4gIHB1YmxpYyBpbmMoY291bnRPckxhYmVscz86IExhYmVscyB8IG51bWJlciwgY291bnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm11dGFibGVWYWx1ZXMucHVzaCh7IGNvdW50T3JMYWJlbHMsIGNvdW50IH0pO1xuICB9XG59XG5cbmNsYXNzIENvbGxlY3RpbmdIaXN0b2dyYW0gZXh0ZW5kcyBDb2xsZWN0aW5nTWV0cmljPEJ1Y2tldGVkTWV0cmljT3B0aW9ucz4gaW1wbGVtZW50cyBIaXN0b2dyYW1CYXNlIHtcbiAgcHVibGljIG9ic2VydmUoY291bnRPckxhYmVscz86IExhYmVscyB8IG51bWJlciwgY291bnQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXJyYXktbXV0YXRlXG4gICAgdGhpcy5tdXRhYmxlVmFsdWVzLnB1c2goeyBjb3VudE9yTGFiZWxzLCBjb3VudCB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sbGVjdGluZ01ldHJpY3NGYWN0b3J5IGV4dGVuZHMgTWV0cmljc0ZhY3RvcnlQcm94eSB7XG4gIHByaXZhdGUgbXV0YWJsZUNvbGxlY3RpbmdDb3VudGVyczogeyBbSyBpbiBzdHJpbmddOiBDb2xsZWN0aW5nQ291bnRlciB9ID0ge307XG4gIHByaXZhdGUgbXV0YWJsZUNvbGxlY3RpbmdIaXN0b2dyYW1zOiB7IFtLIGluIHN0cmluZ106IENvbGxlY3RpbmdIaXN0b2dyYW0gfSA9IHt9O1xuXG4gIHB1YmxpYyBjb2xsZWN0KCk6IE1ldHJpY0NvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGN1cnJlbnRNZXRyaWNzID0gdGhpcy5zZXJpYWxpemVKU09OKCk7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLm11dGFibGVDb2xsZWN0aW5nQ291bnRlcnMpLmZvckVhY2goKG1ldHJpYykgPT4gbWV0cmljLnJlc2V0KCkpO1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5tdXRhYmxlQ29sbGVjdGluZ0hpc3RvZ3JhbXMpLmZvckVhY2goKG1ldHJpYykgPT4gbWV0cmljLnJlc2V0KCkpO1xuXG4gICAgcmV0dXJuIGN1cnJlbnRNZXRyaWNzO1xuICB9XG5cbiAgcHVibGljIHJlc2V0X2ZvclRlc3QoKTogdm9pZCB7XG4gICAgc3VwZXIucmVzZXRfZm9yVGVzdCgpO1xuICAgIHRoaXMubXV0YWJsZUNvbGxlY3RpbmdDb3VudGVycyA9IHt9O1xuICAgIHRoaXMubXV0YWJsZUNvbGxlY3RpbmdIaXN0b2dyYW1zID0ge307XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlQ291bnRlckludGVybmFsKG9wdGlvbnM6IE1ldHJpY09wdGlvbnMpOiBDb3VudGVyIHtcbiAgICBjb25zdCBjb3VudGVyID0gbmV3IENvbGxlY3RpbmdDb3VudGVyKG9wdGlvbnMpO1xuICAgIHRoaXMubXV0YWJsZUNvbGxlY3RpbmdDb3VudGVyc1tjb3VudGVyLm1ldHJpYy5uYW1lXSA9IGNvdW50ZXI7XG5cbiAgICByZXR1cm4gbmV3IENvdW50ZXJQcm94eShjb3VudGVyLCBvcHRpb25zLmxhYmVsTmFtZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUhpc3RvZ3JhbUludGVybmFsKG9wdGlvbnM6IEJ1Y2tldGVkTWV0cmljT3B0aW9ucyk6IEhpc3RvZ3JhbSB7XG4gICAgY29uc3QgaGlzdG9ncmFtID0gbmV3IENvbGxlY3RpbmdIaXN0b2dyYW0ob3B0aW9ucyk7XG4gICAgdGhpcy5tdXRhYmxlQ29sbGVjdGluZ0hpc3RvZ3JhbXNbaGlzdG9ncmFtLm1ldHJpYy5uYW1lXSA9IGhpc3RvZ3JhbTtcblxuICAgIHJldHVybiBuZXcgSGlzdG9ncmFtUHJveHkoaGlzdG9ncmFtLCBvcHRpb25zLmxhYmVsTmFtZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVKU09OKCk6IE1ldHJpY0NvbGxlY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBjb3VudGVyczogT2JqZWN0LmVudHJpZXModGhpcy5tdXRhYmxlQ29sbGVjdGluZ0NvdW50ZXJzKS5yZWR1Y2U8Q29sbGVjdGVkTWV0cmljczxNZXRyaWNPcHRpb25zPj4oXG4gICAgICAgIChhY2NNZXRyaWMsIFtuYW1lLCBtZXRyaWNdKSA9PiAoe1xuICAgICAgICAgIC4uLmFjY01ldHJpYyxcbiAgICAgICAgICBbbmFtZV06IG1ldHJpYy50b0pTT04oKSxcbiAgICAgICAgfSksXG4gICAgICAgIHt9LFxuICAgICAgKSxcbiAgICAgIGhpc3RvZ3JhbXM6IE9iamVjdC5lbnRyaWVzKHRoaXMubXV0YWJsZUNvbGxlY3RpbmdIaXN0b2dyYW1zKS5yZWR1Y2U8Q29sbGVjdGVkTWV0cmljczxCdWNrZXRlZE1ldHJpY09wdGlvbnM+PihcbiAgICAgICAgKGFjY01ldHJpYywgW25hbWUsIG1ldHJpY10pID0+ICh7XG4gICAgICAgICAgLi4uYWNjTWV0cmljLFxuICAgICAgICAgIFtuYW1lXTogbWV0cmljLnRvSlNPTigpLFxuICAgICAgICB9KSxcbiAgICAgICAge30sXG4gICAgICApLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNvbGxlY3RpbmdNZXRyaWNzID0gbmV3IENvbGxlY3RpbmdNZXRyaWNzRmFjdG9yeSgpO1xuIl19