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(),
...