nestjs-prometheus-package
v1.0.1
Published
A biblioteca nestjs-prometheus-module oferece uma solução simples e eficaz para integrar métricas do Prometheus em sua aplicação NestJS. Com este pacote, você pode monitorar o desempenho e a saúde de sua aplicação de forma detalhada e em tempo real, utili
Downloads
4
Maintainers
Readme
NestJS Prometheus Module
A biblioteca @nestjs-prometheus-module
oferece uma solução simples e eficaz para integrar métricas do Prometheus em sua aplicação NestJS. Com este pacote, você pode monitorar o desempenho e a saúde de sua aplicação de forma detalhada e em tempo real, utilizando do Prometheus.
Instalação
Para instalar a biblioteca config, execute o seguinte comando:
npm install @nestjs-prometheus-module
Uso
Importando o Módulo
No seu módulo principal (AppModule
), importe e configure o MetricsModule
com as métricas personalizadas que você deseja utilizar.
import { Module } from '@nestjs/common';
import { MetricsModule } from 'nestjs-prometheus-module';
@Module({
imports: [
MetricsModule.register({
customMetrics: [
{
type: 'Counter',
name: 'mail_sent_status_code',
help: 'Verifica se o email da ação foi enviado',
labelNames: ['mail_sent'],
},
{
type: 'Counter',
name: 'print_url_counter',
help: 'Verifica se o email da ação foi enviado',
labelNames: ['received_base64'],
},
{
type: 'Histogram',
name: 'actions_monitoring_time_response',
help: 'Duração da solicitação HTTP para retornar o status do URL',
labelNames: ['action_type'],
buckets: [15],
},
{
type: 'Counter',
name: 'custom_action_counter',
help: 'Contador personalizado para uma ação específica',
labelNames: ['action'],
},
{
type: 'Histogram',
name: 'custom_action_histogram',
help: 'Histograma personalizado para durações de ações',
labelNames: ['action'],
buckets: [0.1, 5, 15, 50, 100, 500],
},
{
type: 'Gauge',
name: 'custom_gauge_metric',
help: 'Exemplo de métrica gauge personalizada',
labelNames: ['label1'],
},
{
type: 'Summary',
name: 'custom_summary_metric',
help: 'Exemplo de métrica summary personalizada',
labelNames: ['label2'],
},
],
}),
],
})
export class AppModule {}
Usando o PrometheusMetricsService
Agora, você pode injetar e usar o PrometheusMetricsService
em seus serviços para observar e incrementar as métricas.
Exemplo de Serviço
import { Injectable } from '@nestjs/common';
import { PrometheusMetricsService } from 'nestjs-metrics-package';
@Injectable()
export class ExampleService {
constructor(private readonly metricsService: PrometheusMetricsService) {}
someAction() {
const start = Date.now();
// Realiza alguma ação
// ...
const duration = Date.now() - start;
this.metricsService.observeHistogram('actions_monitoring_time_response', ['someAction'], duration);
this.metricsService.incrementCounter('print_url_counter', ['exampleBase64']);
this.metricsService.incrementCounter('mail_sent_status_code', ['sent']);
// Usando métricas personalizadas
this.metricsService.incrementCounter('custom_action_counter', ['someAction']);
this.metricsService.observeHistogram('custom_action_histogram', ['someAction'], duration);
this.metricsService.setGauge('custom_gauge_metric', ['label1'], 42);
this.metricsService.observeSummary('custom_summary_metric', ['label2'], duration);
}
}
Tipos de Métricas
Counter
O Counter
é uma métrica que pode apenas aumentar. É ideal para contar eventos como solicitações recebidas, tarefas concluídas, etc.
Exemplo de uso:
this.metricsService.incrementCounter('custom_action_counter', ['someAction']);
Histogram
O Histogram
é usado para medir distribuições de valores, como latências de solicitações ou tamanhos de respostas.
Exemplo de uso:
const duration = Date.now() - start;
this.metricsService.observeHistogram('custom_action_histogram', ['someAction'], duration);
Gauge
O Gauge
é uma métrica que pode aumentar ou diminuir. É útil para medir valores que podem subir e descer, como a quantidade de memória utilizada.
Exemplo de uso:
this.metricsService.setGauge('custom_gauge_metric', ['label1'], 42);
Summary
O Summary
é usado para calcular estatísticas resumidas como percentis e somas. É útil para medir latências ou tamanhos de resposta em detalhes.
Exemplo de uso:
const duration = Date.now() - start;
this.metricsService.observeSummary('custom_summary_metric', ['label2'], duration);
Executando sua Aplicação
Agora, quando você executar sua aplicação NestJS, o PrometheusMetricsService estará disponível para uso nos seus serviços, e o endpoint /metrics
irá expor as métricas coletadas para que o Prometheus possa capturá-las.
Conclusão
Ao seguir estes passos, você terá integrado e utilizado com sucesso o PrometheusMetricsService
em seu projeto NestJS. Você poderá observar e incrementar suas métricas personalizadas em seus serviços e expô-las via o endpoint /metrics
para que o Prometheus possa capturá-las.