@message-queue-toolkit/metrics
Version:
Utilities for collecting metrics in message-queue-toolkit
31 lines • 1.22 kB
JavaScript
import promClient from 'prom-client';
/**w
* Implementation of MessageMetricsManager for Prometheus
*/
export class PrometheusMessageMetric {
/** Fallbacks to null if metrics are disabled on app level */
metric;
messageVersionGeneratingFunction;
metricParams;
/**
* @param metricParams - metrics parameters (see PrometheusMetricParams)
* @param client - use it to specify custom Prometheus client
*/
constructor(metricParams, client) {
this.metricParams = metricParams;
this.messageVersionGeneratingFunction =
this.resolveMessageVersionGeneratingFunction(metricParams);
this.metric = this.registerMetric(client ?? promClient);
}
registerMetric(client) {
const existingMetric = client.register.getSingleMetric(this.metricParams.name);
return existingMetric
? existingMetric
: this.createMetric(client, this.metricParams);
}
resolveMessageVersionGeneratingFunction(metricParams) {
const messageVersion = metricParams.messageVersion;
return typeof messageVersion === 'function' ? messageVersion : () => messageVersion;
}
}
//# sourceMappingURL=PrometheusMessageMetric.js.map