1
resposta

Implementando no nestJS - Node [Resolvido]

Pessoal, estou tentando implementa ro prometheus no nestjs com nodejs. Estou enfrentando alguns problemas e não encontro suporte na documentação ou com certeza não estou entendendo rs.

Teste a lib: https://github.com/willsoto/nestjs-prometheus porém não consegui fazer a métrica personalizada ser gerada, ele sempre fica como zero, mesmo eu adicionando o this.counter.inc() na chamada, veja um trecho:

controller_user.ts

...

@ApiTags('user')
@Controller('user')
@Injectable()
export class UserController {
  constructor(@InjectMetric("login_counter") public counter: Counter<string>) {}
  private readonly logger = new Logger(UserController.name)
...
@Get('/:id')
 async getById(
   @Param('id', new ParseUUIDPipe()) id: User['_id']
 ): Promise<User> {
   try {
     const persistedUser = await GetUserById.execute({
       id,
       userRepository: config.repositories.userRepository,
     })
       
     this.counter.inc()
     return persistedUser
   } catch (error) {
     this.logger.error(`[UserController::getById]`, { error, id })

     throw new ThrowErrorMessage(error)
   }
 }

Devo incrementar de modo diferente? Fora do controller?

Se alguém tiver um doc ou artigo para compartilhar, já ajuda, no momento se consegui capturar métricas defaults http, tipo os recursos de maneira geral, o status code de cada um, já me atende de inicio, estou realmente batendo cabeça nisso.

Agora estou tentando usar essa lib: https://github.com/digikare/nestjs-prom/tree/stable/0.2

[Resolvido]

Usei a lib https://github.com/digikare/nestjs-prom/tree/stable/0.2, adicionei no module.ts as instruções abaixo e funcionou, capturou todas as métricas de request.

...
@Module({
  imports: [
    PromModule.forRoot({
      withDefaultsMetrics: true,
      withHttpMiddleware: {
        enable: true,
      },
      defaultLabels: {
        app: 'api',
        version: '1.0',
        metricPath: '/metrics',
      }
    }),
    ScheduleModule.forRoot(),
...
1 resposta

Oi, Renato, como vai?

Parabéns por ter solucionado o erro, e agradeço por ter compartilhado sua solução aqui conosco.

Se outra dúvida surgir, estamos disponíveis. :)

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software