UNPKG

@loopback/metrics

Version:

An extension exposes metrics for Prometheus with LoopBack 4

48 lines 2.19 kB
"use strict"; // 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