@loopback/metrics
Version:
An extension exposes metrics for Prometheus with LoopBack 4
48 lines • 2.19 kB
JavaScript
// Copyright IBM Corp. and LoopBack contributors 2019. All Rights Reserved.
// Node module: @loopback/metrics
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
Object.defineProperty(exports, "__esModule", { value: true });
exports.MetricsComponent = void 0;
const tslib_1 = require("tslib");
const core_1 = require("@loopback/core");
const prom_client_1 = require("prom-client");
const controllers_1 = require("./controllers");
const interceptors_1 = require("./interceptors");
const keys_1 = require("./keys");
const observers_1 = require("./observers");
const types_1 = require("./types");
/**
* A component providing metrics for Prometheus
*/
let MetricsComponent = class MetricsComponent {
constructor(application, metricsConfig = {}) {
this.application = application;
const options = {
...types_1.DEFAULT_METRICS_OPTIONS,
...metricsConfig,
};
if (options.defaultMetrics && !options.defaultMetrics.disabled) {
this.application.lifeCycleObserver(observers_1.MetricsObserver);
}
if (options.pushGateway && !options.pushGateway.disabled) {
this.application.lifeCycleObserver(observers_1.MetricsPushObserver);
}
this.application.add((0, core_1.createBindingFromClass)(interceptors_1.MetricsInterceptor));
if (options.endpoint && !options.endpoint.disabled) {
this.application.controller((0, controllers_1.metricsControllerFactory)(options));
}
if (options.defaultLabels) {
prom_client_1.register.setDefaultLabels(options.defaultLabels);
}
}
};
exports.MetricsComponent = MetricsComponent;
exports.MetricsComponent = MetricsComponent = tslib_1.__decorate([
(0, core_1.injectable)({ tags: { [core_1.ContextTags.KEY]: keys_1.MetricsBindings.COMPONENT } }),
tslib_1.__param(0, (0, core_1.inject)(core_1.CoreBindings.APPLICATION_INSTANCE)),
tslib_1.__param(1, (0, core_1.config)()),
tslib_1.__metadata("design:paramtypes", [core_1.Application, Object])
], MetricsComponent);
//# sourceMappingURL=metrics.component.js.map
;