You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.4 KiB
98 lines
2.4 KiB
import { DEFAULT_PROM_REGISTRY } from './metrics.constants';
|
|
import {
|
|
Counter,
|
|
CounterConfiguration,
|
|
GaugeConfiguration,
|
|
Gauge,
|
|
HistogramConfiguration,
|
|
Histogram,
|
|
SummaryConfiguration,
|
|
Summary,
|
|
Registry,
|
|
} from 'prom-client';
|
|
import { Provider } from '@nestjs/common';
|
|
import { getMetricToken, getRegistryName } from './common/prom.utils';
|
|
|
|
export function createPromCounterProvider(
|
|
configuration: CounterConfiguration,
|
|
registryName: string = DEFAULT_PROM_REGISTRY,
|
|
): Provider {
|
|
return {
|
|
provide: getMetricToken('Counter', configuration.name),
|
|
useFactory: (registry: Registry) => {
|
|
const obj = new Counter({
|
|
...configuration,
|
|
registers: [registry],
|
|
});
|
|
return obj;
|
|
},
|
|
inject: [
|
|
registryName === DEFAULT_PROM_REGISTRY
|
|
? DEFAULT_PROM_REGISTRY
|
|
: getRegistryName(registryName),
|
|
],
|
|
};
|
|
}
|
|
|
|
export function createPromGaugeProvider(
|
|
configuration: GaugeConfiguration,
|
|
registryName: string = DEFAULT_PROM_REGISTRY,
|
|
): Provider {
|
|
return {
|
|
provide: getMetricToken('Gauge', configuration.name),
|
|
useFactory: (registry: Registry) => {
|
|
const obj = new Gauge({
|
|
...configuration,
|
|
registers: [registry],
|
|
});
|
|
return obj;
|
|
},
|
|
inject: [
|
|
registryName === DEFAULT_PROM_REGISTRY
|
|
? DEFAULT_PROM_REGISTRY
|
|
: getRegistryName(registryName),
|
|
],
|
|
};
|
|
}
|
|
|
|
export function createPromHistogramProvider(
|
|
configuration: HistogramConfiguration,
|
|
registryName: string = DEFAULT_PROM_REGISTRY,
|
|
): Provider {
|
|
return {
|
|
provide: getMetricToken('Histogram', configuration.name),
|
|
useFactory: (registry: Registry) => {
|
|
const obj = new Histogram({
|
|
...configuration,
|
|
registers: [registry],
|
|
});
|
|
return obj;
|
|
},
|
|
inject: [
|
|
registryName === DEFAULT_PROM_REGISTRY
|
|
? DEFAULT_PROM_REGISTRY
|
|
: getRegistryName(registryName),
|
|
],
|
|
};
|
|
}
|
|
|
|
export function createPromSummaryProvider(
|
|
configuration: SummaryConfiguration,
|
|
registryName: string = DEFAULT_PROM_REGISTRY,
|
|
): Provider {
|
|
return {
|
|
provide: getMetricToken('Summary', configuration.name),
|
|
useFactory: (registry: Registry) => {
|
|
const obj = new Summary({
|
|
...configuration,
|
|
registers: [registry],
|
|
});
|
|
return obj;
|
|
},
|
|
inject: [
|
|
registryName === DEFAULT_PROM_REGISTRY
|
|
? DEFAULT_PROM_REGISTRY
|
|
: getRegistryName(registryName),
|
|
],
|
|
};
|
|
}
|