【发布时间】:2020-01-14 11:22:30
【问题描述】:
我有这个用 NestJs 编写的微服务:
async function bootstrap() {
const port = parseInt(process.env.PORT || '5000', 10);
const app = await NestFactory.createMicroservice(ApplicationModule, {
transport: Transport.TCP,
options: { host: '0.0.0.0', port }
});
app.listen(() => console.log(`Microservice is listening on port ${port}`));
}
bootstrap();
但现在我需要为 Prometheus 实现一个端点 /metrics。所以问题是我如何使用 NestJs 微服务来做到这一点
从this issue 我得到的印象是这是不可能的。这是真的吗?如果是的话,有没有我可以使用的解决方法?
我尝试如下应用中间件
Module({
imports: [],
controllers: [AppController],
providers: [AppService, DBService],
})
export class ApplicationModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(MetricsMiddleware)
.forRoutes('/metrics') // Also tried '*'
}
}
但是当我做curl http://localhost:5000/metrics 没有任何反应时,中间件没有被调用
@Injectable()
export class MetricsMiddleware implements NestMiddleware {
constructor() {}
use(req, res, next) {
console.log('yes');
next();
}
}
更新:This issue 也无济于事:(
【问题讨论】:
标签: javascript node.js typescript microservices nestjs