nestjs-prometheus-setup
v0.1.0
Published
```ts import { Module } from '@nestjs/common'; import { PrometheusModule } from 'nestjs-prometheus-setup'
Downloads
14
Readme
Nestjs prometheus setup
import { Module } from '@nestjs/common';
import { PrometheusModule } from 'nestjs-prometheus-setup'
@Module({
imports: [PrometheusModule.fromRoot()]
})
class AppModule {}
Exported metrics
| metric | type | labels | |---|---|---| |http_requests_total| Counter | method, route, status | |http_request_duration_seconds_count| Histogram | method, route, status | |http_request_length_bytes_sum|Histogram| method, route, status | |http_response_length_bytes_sum|Histogram| method, route, status |
Extend options
Change routes to ally the middleware.
class MyPrometheusModule extends PrometheusModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(this.middleware).forRoutes('/api/v1');
}
}
MyPrometheusModule.fromRoot()
Add new label.
class MyPrometheusModule extends PrometheusModule {
PROM_LABELS = [...this.PROM_LABELS, 'app_environment'];
middlewareLabels(request, response, time: number): string[] {
const labels = this.super(request, response)
return [...labels, process.env.APP_ENV]
}
}
MyPrometheusModule.fromRoot()
Add new custom metric.
import { PrometheusModule, Prometheus } from 'nestjs-prometheus-setup'
class MyPrometheusModule extends PrometheusModule {
httpErrorTotal = new Prometheus.Counter({
name: `http_error_total`,
help: 'Counter requests considered errors',
labelNames: this.PROM_LABELS,
});
customMetrics(labels: string[], request, response, time: number) {
const isError = response.statusCode() == 500
if(!isError) return
this.httpErrorTotal
.labels(...labels)
.inc();
}
}
MyPrometheusModule.fromRoot()